{"version":3,"mappings":";;;;;;;;;GASa,IAAIA,GAAE,OAAO,IAAI,eAAe,EAAEC,GAAE,OAAO,IAAI,cAAc,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,mBAAmB,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,eAAe,EAAEC,GAAE,OAAO,IAAI,mBAAmB,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,YAAY,EAAEC,GAAE,OAAO,IAAI,YAAY,EAAEC,GAAE,OAAO,SAAS,SAASC,GAAEC,EAAE,CAAC,OAAUA,IAAP,MAAqB,OAAOA,GAAlB,SAA2B,MAAKA,EAAEF,IAAGE,EAAEF,EAAC,GAAGE,EAAE,YAAY,EAAqB,OAAOA,GAApB,WAAsBA,EAAE,KAAI,CAC1e,IAAIC,GAAE,CAAC,UAAU,UAAU,CAAC,MAAM,EAAE,EAAE,mBAAmB,UAAU,GAAG,oBAAoB,UAAU,GAAG,gBAAgB,UAAU,EAAE,EAAEC,GAAE,OAAO,OAAOC,GAAE,GAAG,SAASC,GAAEJ,EAAEK,EAAEC,EAAE,CAAC,KAAK,MAAMN,EAAE,KAAK,QAAQK,EAAE,KAAK,KAAKF,GAAE,KAAK,QAAQG,GAAGL,EAAC,CAACG,GAAE,UAAU,iBAAiB,GACnQA,GAAE,UAAU,SAAS,SAASJ,EAAEK,EAAE,CAAC,GAAc,OAAOL,GAAlB,UAAkC,OAAOA,GAApB,YAA6BA,GAAN,KAAQ,MAAM,MAAM,uHAAuH,EAAE,KAAK,QAAQ,gBAAgB,KAAKA,EAAEK,EAAE,UAAU,CAAC,EAAED,GAAE,UAAU,YAAY,SAASJ,EAAE,CAAC,KAAK,QAAQ,mBAAmB,KAAKA,EAAE,aAAa,CAAC,EAAE,SAASO,IAAG,EAAEA,GAAE,UAAUH,GAAE,UAAU,SAASI,GAAER,EAAEK,EAAEC,EAAE,CAAC,KAAK,MAAMN,EAAE,KAAK,QAAQK,EAAE,KAAK,KAAKF,GAAE,KAAK,QAAQG,GAAGL,EAAC,CAAC,IAAIQ,GAAED,GAAE,UAAU,IAAID,GACrfE,GAAE,YAAYD,GAAEN,GAAEO,GAAEL,GAAE,SAAS,EAAEK,GAAE,qBAAqB,GAAG,IAAIC,GAAE,MAAM,QAAQC,GAAE,OAAO,UAAU,eAAeC,GAAE,CAAC,QAAQ,IAAI,EAAEC,GAAE,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,EAAE,EACxK,SAASC,GAAEd,EAAEK,EAAEC,EAAE,CAAC,IAAIS,EAAEC,EAAE,GAAGC,EAAE,KAAKC,EAAE,KAAK,GAASb,GAAN,KAAQ,IAAIU,KAAcV,EAAE,MAAX,SAAiBa,EAAEb,EAAE,KAAcA,EAAE,MAAX,SAAiBY,EAAE,GAAGZ,EAAE,KAAKA,EAAEM,GAAE,KAAKN,EAAEU,CAAC,GAAG,CAACF,GAAE,eAAeE,CAAC,IAAIC,EAAED,CAAC,EAAEV,EAAEU,CAAC,GAAG,IAAII,EAAE,UAAU,OAAO,EAAE,GAAOA,IAAJ,EAAMH,EAAE,SAASV,UAAU,EAAEa,EAAE,CAAC,QAAQC,EAAE,MAAMD,CAAC,EAAEE,EAAE,EAAEA,EAAEF,EAAEE,IAAID,EAAEC,CAAC,EAAE,UAAUA,EAAE,CAAC,EAAEL,EAAE,SAASI,CAAC,CAAC,GAAGpB,GAAGA,EAAE,aAAa,IAAIe,KAAKI,EAAEnB,EAAE,aAAamB,EAAWH,EAAED,CAAC,IAAZ,SAAgBC,EAAED,CAAC,EAAEI,EAAEJ,CAAC,GAAG,MAAM,CAAC,SAAS5B,GAAE,KAAKa,EAAE,IAAIiB,EAAE,IAAIC,EAAE,MAAMF,EAAE,OAAOJ,GAAE,OAAO,CAAC,CAC7a,SAASU,GAAEtB,EAAEK,EAAE,CAAC,MAAM,CAAC,SAASlB,GAAE,KAAKa,EAAE,KAAK,IAAIK,EAAE,IAAIL,EAAE,IAAI,MAAMA,EAAE,MAAM,OAAOA,EAAE,MAAM,CAAC,CAAC,SAASuB,GAAEvB,EAAE,CAAC,OAAiB,OAAOA,GAAlB,UAA4BA,IAAP,MAAUA,EAAE,WAAWb,EAAC,CAAC,SAASqC,GAAOxB,EAAE,CAAC,IAAIK,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,MAAM,IAAIL,EAAE,QAAQ,QAAQ,SAASA,EAAE,CAAC,OAAOK,EAAEL,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIyB,GAAE,OAAO,SAASC,GAAE1B,EAAEK,EAAE,CAAC,OAAiB,OAAOL,GAAlB,UAA4BA,IAAP,MAAgBA,EAAE,KAAR,KAAYwB,GAAO,GAAGxB,EAAE,GAAG,EAAEK,EAAE,SAAS,EAAE,CAAC,CAC/W,SAASsB,GAAE3B,EAAEK,EAAEC,EAAES,EAAEC,EAAE,CAAC,IAAIC,EAAE,OAAOjB,GAAmBiB,IAAd,aAA6BA,IAAZ,aAAcjB,EAAE,MAAK,IAAIkB,EAAE,GAAG,GAAUlB,IAAP,KAASkB,EAAE,OAAQ,QAAOD,EAAC,CAAE,IAAK,SAAS,IAAK,SAASC,EAAE,GAAG,MAAM,IAAK,SAAS,OAAOlB,EAAE,SAAU,MAAKb,GAAE,KAAKC,GAAE8B,EAAE,EAAE,CAAC,CAAC,GAAGA,EAAE,OAAOA,EAAElB,EAAEgB,EAAEA,EAAEE,CAAC,EAAElB,EAAOe,IAAL,GAAO,IAAIW,GAAER,EAAE,CAAC,EAAEH,EAAEL,GAAEM,CAAC,GAAGV,EAAE,GAASN,GAAN,OAAUM,EAAEN,EAAE,QAAQyB,GAAE,KAAK,EAAE,KAAKE,GAAEX,EAAEX,EAAEC,EAAE,GAAG,SAASN,EAAE,CAAC,OAAOA,CAAC,CAAC,GAASgB,GAAN,OAAUO,GAAEP,CAAC,IAAIA,EAAEM,GAAEN,EAAEV,GAAG,CAACU,EAAE,KAAKE,GAAGA,EAAE,MAAMF,EAAE,IAAI,IAAI,GAAGA,EAAE,KAAK,QAAQS,GAAE,KAAK,EAAE,KAAKzB,CAAC,GAAGK,EAAE,KAAKW,CAAC,GAAG,EAAyB,GAAvBE,EAAE,EAAEH,EAAOA,IAAL,GAAO,IAAIA,EAAE,IAAOL,GAAEV,CAAC,EAAE,QAAQmB,EAAE,EAAEA,EAAEnB,EAAE,OAAOmB,IAAI,CAACF,EACrfjB,EAAEmB,CAAC,EAAE,IAAIC,EAAEL,EAAEW,GAAET,EAAEE,CAAC,EAAED,GAAGS,GAAEV,EAAEZ,EAAEC,EAAEc,EAAEJ,CAAC,CAAC,SAASI,EAAErB,GAAEC,CAAC,EAAe,OAAOoB,GAApB,WAAsB,IAAIpB,EAAEoB,EAAE,KAAKpB,CAAC,EAAEmB,EAAE,EAAE,EAAEF,EAAEjB,EAAE,QAAQ,MAAMiB,EAAEA,EAAE,MAAMG,EAAEL,EAAEW,GAAET,EAAEE,GAAG,EAAED,GAAGS,GAAEV,EAAEZ,EAAEC,EAAEc,EAAEJ,CAAC,UAAqBC,IAAX,SAAa,MAAMZ,EAAE,OAAOL,CAAC,EAAE,MAAM,mDAAuEK,IAApB,kBAAsB,qBAAqB,OAAO,KAAKL,CAAC,EAAE,KAAK,IAAI,EAAE,IAAIK,GAAG,2EAA2E,EAAE,OAAOa,CAAC,CACzZ,SAASU,GAAE5B,EAAEK,EAAEC,EAAE,CAAC,GAASN,GAAN,KAAQ,OAAOA,EAAE,IAAIe,EAAE,CAAE,EAACC,EAAE,EAAEW,UAAE3B,EAAEe,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC,OAAOV,EAAE,KAAKC,EAAE,EAAEU,GAAG,CAAC,CAAC,EAASD,CAAC,CAAC,SAASc,GAAE7B,EAAE,CAAC,GAAQA,EAAE,UAAP,GAAe,CAAC,IAAIK,EAAEL,EAAE,QAAQK,EAAEA,EAAG,EAACA,EAAE,KAAK,SAASA,EAAE,EAAQL,EAAE,UAAN,GAAoBA,EAAE,UAAP,MAAeA,EAAE,QAAQ,EAAEA,EAAE,QAAQK,EAAC,EAAE,SAASA,EAAE,EAAQL,EAAE,UAAN,GAAoBA,EAAE,UAAP,MAAeA,EAAE,QAAQ,EAAEA,EAAE,QAAQK,EAAC,CAAC,EAAOL,EAAE,UAAP,KAAiBA,EAAE,QAAQ,EAAEA,EAAE,QAAQK,EAAE,CAAC,GAAOL,EAAE,UAAN,EAAc,OAAOA,EAAE,QAAQ,QAAQ,MAAMA,EAAE,OAAQ,CAC5Z,IAAI8B,GAAE,CAAC,QAAQ,IAAI,EAAEC,GAAE,CAAC,WAAW,IAAI,EAAEC,GAAE,CAAC,uBAAuBF,GAAE,wBAAwBC,GAAE,kBAAkBnB,EAAC,EAAEqB,GAAA,SAAiB,CAAC,IAAIL,GAAE,QAAQ,SAAS5B,EAAEK,EAAEC,EAAE,CAACsB,GAAE5B,EAAE,UAAU,CAACK,EAAE,MAAM,KAAK,SAAS,CAAC,EAAEC,CAAC,CAAC,EAAE,MAAM,SAASN,EAAE,CAAC,IAAIK,EAAE,EAAEuB,UAAE5B,EAAE,UAAU,CAACK,GAAG,CAAC,EAASA,CAAC,EAAE,QAAQ,SAASL,EAAE,CAAC,OAAO4B,GAAE5B,EAAE,SAASA,EAAE,CAAC,OAAOA,CAAC,CAAC,GAAG,CAAE,GAAE,KAAK,SAASA,EAAE,CAAC,GAAG,CAACuB,GAAEvB,CAAC,EAAE,MAAM,MAAM,uEAAuE,EAAE,OAAOA,CAAC,CAAC,EAAEiC,GAAA,UAAkB7B,GAAkB6B,GAAA,SAAC5C,GACne4C,GAAA,SAAiB1C,oBAAwBiB,GAAoByB,GAAA,WAAC3C,eAAmBK,GAA4DsC,GAAA,mDAACD,GAC1HC,GAAA,aAAC,SAASjC,EAAEK,EAAEC,EAAE,CAAC,GAAUN,GAAP,KAAqB,MAAM,MAAM,iFAAiFA,EAAE,GAAG,EAAE,IAAIe,EAAEb,GAAE,GAAGF,EAAE,KAAK,EAAEgB,EAAEhB,EAAE,IAAIiB,EAAEjB,EAAE,IAAIkB,EAAElB,EAAE,OAAO,GAASK,GAAN,KAAQ,CAAoE,GAA1DA,EAAE,MAAX,SAAiBY,EAAEZ,EAAE,IAAIa,EAAEN,GAAE,SAAkBP,EAAE,MAAX,SAAiBW,EAAE,GAAGX,EAAE,KAAQL,EAAE,MAAMA,EAAE,KAAK,aAAa,IAAImB,EAAEnB,EAAE,KAAK,aAAa,IAAIoB,KAAKf,EAAEM,GAAE,KAAKN,EAAEe,CAAC,GAAG,CAACP,GAAE,eAAeO,CAAC,IAAIL,EAAEK,CAAC,EAAWf,EAAEe,CAAC,IAAZ,QAAwBD,IAAT,OAAWA,EAAEC,CAAC,EAAEf,EAAEe,CAAC,EAAE,CAAC,IAAIA,EAAE,UAAU,OAAO,EAAE,GAAOA,IAAJ,EAAML,EAAE,SAAST,UAAU,EAAEc,EAAE,CAACD,EAAE,MAAMC,CAAC,EACtf,QAAQC,EAAE,EAAEA,EAAED,EAAEC,IAAIF,EAAEE,CAAC,EAAE,UAAUA,EAAE,CAAC,EAAEN,EAAE,SAASI,CAAC,CAAC,MAAM,CAAC,SAAShC,GAAE,KAAKa,EAAE,KAAK,IAAIgB,EAAE,IAAIC,EAAE,MAAMF,EAAE,OAAOG,CAAC,CAAC,EAAEe,GAAA,cAAsB,SAASjC,EAAE,CAAC,OAAAA,EAAE,CAAC,SAASP,GAAE,cAAcO,EAAE,eAAeA,EAAE,aAAa,EAAE,SAAS,KAAK,SAAS,KAAK,cAAc,KAAK,YAAY,IAAI,EAAEA,EAAE,SAAS,CAAC,SAASR,GAAE,SAASQ,CAAC,EAASA,EAAE,SAASA,CAAC,EAAuBiC,GAAA,cAACnB,oBAAwB,SAASd,EAAE,CAAC,IAAIK,EAAES,GAAE,KAAK,KAAKd,CAAC,EAAE,OAAAK,EAAE,KAAKL,EAASK,CAAC,EAAmB4B,GAAA,UAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,EAC9dA,GAAA,WAAmB,SAASjC,EAAE,CAAC,MAAM,CAAC,SAASN,GAAE,OAAOM,CAAC,CAAC,EAAEiC,GAAA,eAAuBV,GAAEU,GAAA,KAAa,SAASjC,EAAE,CAAC,MAAM,CAAC,SAASH,GAAE,SAAS,CAAC,QAAQ,GAAG,QAAQG,CAAC,EAAE,MAAM6B,EAAC,CAAC,EAAEI,GAAA,KAAa,SAASjC,EAAEK,EAAE,CAAC,MAAM,CAAC,SAAST,GAAE,KAAKI,EAAE,QAAiBK,IAAT,OAAW,KAAKA,CAAC,CAAC,EAAE4B,GAAA,gBAAwB,SAASjC,EAAE,CAAC,IAAIK,EAAE0B,GAAE,WAAWA,GAAE,WAAW,GAAG,GAAG,CAAC/B,EAAG,SAAC,CAAQ+B,GAAE,WAAW1B,CAAC,CAAC,EAAsB4B,GAAA,aAAC,UAAU,CAAC,MAAM,MAAM,0DAA0D,CAAE,EACvbA,GAAA,YAAC,SAASjC,EAAEK,EAAE,CAAC,OAAOyB,GAAE,QAAQ,YAAY9B,EAAEK,CAAC,CAAC,EAAoB4B,GAAA,WAAC,SAASjC,EAAE,CAAC,OAAO8B,GAAE,QAAQ,WAAW9B,CAAC,CAAC,EAAuBiC,GAAA,cAAC,UAAU,CAAG,EAAAA,GAAA,iBAAyB,SAASjC,EAAE,CAAC,OAAO8B,GAAE,QAAQ,iBAAiB9B,CAAC,CAAC,EAAmBiC,GAAA,UAAC,SAASjC,EAAEK,EAAE,CAAC,OAAOyB,GAAE,QAAQ,UAAU9B,EAAEK,CAAC,CAAC,EAAe4B,GAAA,MAAC,UAAU,CAAC,OAAOH,GAAE,QAAQ,MAAK,CAAE,EAA6BG,GAAA,oBAAC,SAASjC,EAAEK,EAAEC,EAAE,CAAC,OAAOwB,GAAE,QAAQ,oBAAoB9B,EAAEK,EAAEC,CAAC,CAAC,EAC7b2B,GAAA,mBAA2B,SAASjC,EAAEK,EAAE,CAAC,OAAOyB,GAAE,QAAQ,mBAAmB9B,EAAEK,CAAC,CAAC,EAAyB4B,GAAA,gBAAC,SAASjC,EAAEK,EAAE,CAAC,OAAOyB,GAAE,QAAQ,gBAAgB9B,EAAEK,CAAC,CAAC,aAAkB,SAASL,EAAEK,EAAE,CAAC,OAAOyB,GAAE,QAAQ,QAAQ9B,EAAEK,CAAC,CAAC,EAAoB4B,GAAA,WAAC,SAASjC,EAAEK,EAAEC,EAAE,CAAC,OAAOwB,GAAE,QAAQ,WAAW9B,EAAEK,EAAEC,CAAC,CAAC,YAAiB,SAASN,EAAE,CAAC,OAAO8B,GAAE,QAAQ,OAAO9B,CAAC,CAAC,EAAkBiC,GAAA,SAAC,SAASjC,EAAE,CAAC,OAAO8B,GAAE,QAAQ,SAAS9B,CAAC,CAAC,EAA8BiC,GAAA,qBAAC,SAASjC,EAAEK,EAAEC,EAAE,CAAC,OAAOwB,GAAE,QAAQ,qBAAqB9B,EAAEK,EAAEC,CAAC,CAAC,EAC/e2B,GAAA,cAAsB,UAAU,CAAC,OAAOH,GAAE,QAAQ,cAAe,GAAEG,GAAA,QAAgB,SCtB1EC,GAAA,QAAUC;;;;;;;;GCMN,IAAIf,GAAEe,EAAiBlB,GAAE,OAAO,IAAI,eAAe,EAAE9B,GAAE,OAAO,IAAI,gBAAgB,EAAEkC,GAAE,OAAO,UAAU,eAAejC,GAAEgC,GAAE,mDAAmD,kBAAkB/B,GAAE,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,EAAE,EAClP,SAASC,GAAE0B,EAAEhB,EAAEmB,EAAE,CAAC,IAAId,EAAEU,EAAE,GAAGT,EAAE,KAAKY,EAAE,KAAcC,IAAT,SAAab,EAAE,GAAGa,GAAYnB,EAAE,MAAX,SAAiBM,EAAE,GAAGN,EAAE,KAAcA,EAAE,MAAX,SAAiBkB,EAAElB,EAAE,KAAK,IAAIK,KAAKL,EAAEqB,GAAE,KAAKrB,EAAEK,CAAC,GAAG,CAAChB,GAAE,eAAegB,CAAC,IAAIU,EAAEV,CAAC,EAAEL,EAAEK,CAAC,GAAG,GAAGW,GAAGA,EAAE,aAAa,IAAIX,KAAKL,EAAEgB,EAAE,aAAahB,EAAWe,EAAEV,CAAC,IAAZ,SAAgBU,EAAEV,CAAC,EAAEL,EAAEK,CAAC,GAAG,MAAM,CAAC,SAASY,GAAE,KAAKD,EAAE,IAAIV,EAAE,IAAIY,EAAE,MAAMH,EAAE,OAAO3B,GAAE,OAAO,CAAC,aAAkBD,GAAaiD,GAAA,IAAC9C,GAAE8C,GAAA,KAAa9C,GCPjW+C,GAAA,QAAUF;;;;;;;;gBCMN,SAASf,EAAEpB,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,OAAOA,EAAE,KAAKK,CAAC,EAAEL,EAAE,KAAK,EAAEgB,GAAG,CAAC,IAAID,GAAEC,EAAE,IAAI,EAAEV,GAAEN,EAAEe,EAAC,EAAE,GAAG,EAAEI,EAAEb,GAAED,CAAC,EAAEL,EAAEe,EAAC,EAAEV,EAAEL,EAAEgB,CAAC,EAAEV,GAAEU,EAAED,OAAO,OAAMf,CAAC,CAAC,CAAC,SAASkB,EAAElB,EAAE,CAAC,OAAWA,EAAE,SAAN,EAAa,KAAKA,EAAE,CAAC,CAAC,CAAC,SAASiB,EAAEjB,EAAE,CAAC,GAAOA,EAAE,SAAN,EAAa,OAAO,KAAK,IAAIK,EAAEL,EAAE,CAAC,EAAEgB,EAAEhB,EAAE,MAAM,GAAGgB,IAAIX,EAAE,CAACL,EAAE,CAAC,EAAEgB,EAAEhB,EAAE,QAAQe,GAAE,EAAET,GAAEN,EAAE,OAAOL,GAAEW,KAAI,EAAES,GAAEpB,IAAG,CAAC,IAAI0B,GAAE,GAAGN,GAAE,GAAG,EAAEb,GAAEF,EAAEqB,EAAC,EAAEjC,GAAEiC,GAAE,EAAEzB,GAAEI,EAAEZ,EAAC,EAAE,GAAG,EAAE+B,EAAEjB,GAAEc,CAAC,EAAE5B,GAAEkB,IAAG,EAAEa,EAAEvB,GAAEM,EAAC,GAAGF,EAAEe,EAAC,EAAEnB,GAAEI,EAAEZ,EAAC,EAAE4B,EAAED,GAAE3B,KAAIY,EAAEe,EAAC,EAAEb,GAAEF,EAAEqB,EAAC,EAAEL,EAAED,GAAEM,YAAWjC,GAAEkB,IAAG,EAAEa,EAAEvB,GAAEoB,CAAC,EAAEhB,EAAEe,EAAC,EAAEnB,GAAEI,EAAEZ,EAAC,EAAE4B,EAAED,GAAE3B,OAAO,OAAMY,CAAC,CAAC,CAAC,OAAOK,CAAC,CAC3c,SAASc,EAAEnB,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,UAAUK,EAAE,UAAU,OAAWW,IAAJ,EAAMA,EAAEhB,EAAE,GAAGK,EAAE,EAAE,CAAC,GAAc,OAAO,aAAlB,UAA4C,OAAO,YAAY,KAAhC,WAAoC,CAAC,IAAIlB,EAAE,YAAYmD,EAAA,aAAqB,UAAU,CAAC,OAAOnD,EAAE,IAAK,EAAC,KAAK,CAAC,IAAIE,EAAE,KAAKC,EAAED,EAAE,MAAMiD,EAAqB,uBAAU,CAAC,OAAOjD,EAAE,IAAG,EAAGC,CAAC,CAAC,CAAC,IAAIC,EAAE,GAAGC,EAAE,CAAE,EAACC,EAAE,EAAEC,EAAE,KAAKG,EAAE,EAAEC,EAAE,GAAGC,EAAE,GAAGE,EAAE,GAAGE,EAAe,OAAO,YAApB,WAA+B,WAAW,KAAKC,EAAe,OAAO,cAApB,WAAiC,aAAa,KAAKG,EAAgB,OAAO,aAArB,IAAkC,aAAa,KACjd,OAAO,UAArB,KAAyC,UAAU,aAAnB,QAAwC,UAAU,WAAW,iBAA9B,QAA8C,UAAU,WAAW,eAAe,KAAK,UAAU,UAAU,EAAE,SAASC,EAAER,EAAE,CAAC,QAAQK,EAAEa,EAAE1B,CAAC,EAASa,IAAP,MAAU,CAAC,GAAUA,EAAE,WAAT,KAAkBY,EAAEzB,CAAC,UAAUa,EAAE,WAAWL,EAAEiB,EAAEzB,CAAC,EAAEa,EAAE,UAAUA,EAAE,eAAee,EAAE7B,EAAEc,CAAC,MAAO,OAAMA,EAAEa,EAAE1B,CAAC,CAAC,CAAC,CAAC,SAASiB,EAAET,EAAE,CAAW,GAAVC,EAAE,GAAGO,EAAER,CAAC,EAAK,CAACD,EAAE,GAAUmB,EAAE3B,CAAC,IAAV,KAAYQ,EAAE,GAAGW,EAAEC,CAAC,MAAM,CAAC,IAAIN,EAAEa,EAAE1B,CAAC,EAASa,IAAP,MAAUO,EAAEH,EAAEJ,EAAE,UAAUL,CAAC,CAAC,CAAC,CACra,SAASW,EAAEX,EAAEK,EAAE,CAACN,EAAE,GAAGE,IAAIA,EAAE,GAAGG,EAAES,CAAC,EAAEA,EAAE,IAAIf,EAAE,GAAG,IAAIkB,EAAEnB,EAAE,GAAG,CAAM,IAALW,EAAEH,CAAC,EAAMX,EAAEwB,EAAE3B,CAAC,EAASG,IAAP,OAAW,EAAEA,EAAE,eAAeW,IAAIL,GAAG,CAACc,EAAC,IAAK,CAAC,IAAIC,GAAErB,EAAE,SAAS,GAAgB,OAAOqB,IAApB,WAAsB,CAACrB,EAAE,SAAS,KAAKG,EAAEH,EAAE,cAAc,IAAIY,GAAES,GAAErB,EAAE,gBAAgBW,CAAC,EAAEA,EAAEiC,EAAQ,aAAY,EAAgB,OAAOhC,IAApB,WAAsBZ,EAAE,SAASY,GAAEZ,IAAIwB,EAAE3B,CAAC,GAAG0B,EAAE1B,CAAC,EAAEiB,EAAEH,CAAC,CAAC,MAAMY,EAAE1B,CAAC,EAAEG,EAAEwB,EAAE3B,CAAC,CAAC,CAAC,GAAUG,IAAP,KAAS,IAAIC,GAAE,OAAO,CAAC,IAAI0B,GAAEH,EAAE1B,CAAC,EAAS6B,KAAP,MAAUT,EAAEH,EAAEY,GAAE,UAAUhB,CAAC,EAAEV,GAAE,EAAE,CAAC,OAAOA,EAAC,QAAC,CAAQD,EAAE,KAAKG,EAAEmB,EAAElB,EAAE,EAAE,CAAC,CAAC,IAAIwB,EAAE,GAAGC,EAAE,KAAKV,EAAE,GAAG,EAAE,EAAEa,EAAE,GACtc,SAASZ,GAAG,CAAC,MAAO,EAAAwB,EAAQ,aAAc,EAACZ,EAAE,EAAO,CAAC,SAASC,GAAG,CAAC,GAAUJ,IAAP,KAAS,CAAC,IAAIvB,EAAEsC,EAAQ,eAAeZ,EAAE1B,EAAE,IAAIK,EAAE,GAAG,GAAG,CAACA,EAAEkB,EAAE,GAAGvB,CAAC,CAAC,QAAC,CAAQK,EAAEuB,KAAKN,EAAE,GAAGC,EAAE,KAAK,CAAC,MAAMD,EAAE,EAAE,CAAC,IAAIM,EAAE,GAAgB,OAAOrB,GAApB,WAAsBqB,EAAE,UAAU,CAACrB,EAAEoB,CAAC,CAAC,UAAwB,OAAO,eAArB,IAAoC,CAAC,IAAIE,EAAE,IAAI,eAAe,EAAEA,EAAE,MAAMA,EAAE,MAAM,UAAUF,EAAEC,EAAE,UAAU,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC,MAAMA,EAAE,UAAU,CAACzB,EAAEwB,EAAE,CAAC,CAAC,EAAE,SAASjB,EAAEV,EAAE,CAACuB,EAAEvB,EAAEsB,IAAIA,EAAE,GAAGM,EAAG,EAAC,CAAC,SAAShB,EAAEZ,EAAEK,EAAE,CAACQ,EAAEV,EAAE,UAAU,CAACH,EAAEsC,EAAQ,aAAY,CAAE,CAAC,EAAEjC,CAAC,CAAC,CAC5diC,EAA8B,wBAAEA,EAAmC,6BAAEA,EAA6B,uBAAEA,EAAgC,0BAAEA,EAA2B,wBAAKA,EAAsC,gCAAEA,EAAgC,iCAAStC,EAAE,CAACA,EAAE,SAAS,IAAI,EAAEsC,6BAAmC,UAAU,CAACvC,GAAGD,IAAIC,EAAE,GAAGW,EAAEC,CAAC,EAAE,EAC1U2B,EAAgC,iCAAStC,EAAE,CAAC,EAAEA,GAAG,IAAIA,EAAE,QAAQ,MAAM,iHAAiH,EAAE,EAAE,EAAEA,EAAE,KAAK,MAAM,IAAIA,CAAC,EAAE,CAAC,EAAEsC,EAAA,iCAAyC,UAAU,CAAC,OAAOzC,CAAC,EAAEyC,EAAA,8BAAsC,UAAU,CAAC,OAAOpB,EAAE3B,CAAC,CAAC,EAAE+C,gBAAsB,SAAStC,EAAE,CAAC,OAAOH,EAAG,KAAK,GAAE,IAAK,GAAE,IAAK,GAAE,IAAIQ,EAAE,EAAE,MAAM,QAAQA,EAAER,CAAC,CAAC,IAAImB,EAAEnB,EAAEA,EAAEQ,EAAE,GAAG,CAAC,OAAOL,EAAG,SAAC,CAAQH,EAAEmB,CAAC,CAAC,EAAEsB,EAAA,wBAAgC,UAAU,GAC7fA,EAA8B,gCAAU,GAAGA,EAAiC,kCAAStC,EAAEK,EAAE,CAAC,OAAOL,EAAC,CAAE,IAAK,GAAE,IAAK,GAAE,IAAK,GAAE,IAAK,GAAE,IAAK,GAAE,MAAM,QAAQA,EAAE,CAAC,CAAC,IAAIgB,EAAEnB,EAAEA,EAAEG,EAAE,GAAG,CAAC,OAAOK,EAAG,SAAC,CAAQR,EAAEmB,CAAC,CAAC,EAChMsB,EAAkC,mCAAStC,EAAEK,EAAEW,EAAE,CAAC,IAAID,GAAEuB,EAAQ,aAAY,EAAkF,OAApE,OAAOtB,GAAlB,UAA4BA,IAAP,MAAUA,EAAEA,EAAE,MAAMA,EAAa,OAAOA,GAAlB,UAAqB,EAAEA,EAAED,GAAEC,EAAED,IAAGC,EAAED,GAASf,EAAG,KAAK,GAAE,IAAIM,GAAE,GAAG,MAAM,IAAK,GAAEA,GAAE,IAAI,MAAM,IAAK,GAAEA,GAAE,WAAW,MAAM,IAAK,GAAEA,GAAE,IAAI,MAAM,QAAQA,GAAE,GAAG,CAAC,OAAAA,GAAEU,EAAEV,GAAEN,EAAE,CAAC,GAAGP,IAAI,SAASY,EAAE,cAAcL,EAAE,UAAUgB,EAAE,eAAeV,GAAE,UAAU,EAAE,EAAEU,EAAED,IAAGf,EAAE,UAAUgB,EAAEI,EAAE5B,EAAEQ,CAAC,EAASkB,EAAE3B,CAAC,IAAV,MAAaS,IAAIkB,EAAE1B,CAAC,IAAIS,GAAGG,EAAES,CAAC,EAAEA,EAAE,IAAIZ,EAAE,GAAGW,EAAEH,EAAEO,EAAED,EAAC,KAAKf,EAAE,UAAUM,GAAEc,EAAE7B,EAAES,CAAC,EAAED,GAAGD,IAAIC,EAAE,GAAGW,EAAEC,CAAC,IAAWX,CAAC,EACnesC,EAAA,qBAA6BxB,EAAEwB,EAAA,sBAA8B,SAAStC,EAAE,CAAC,IAAIK,EAAER,EAAE,OAAO,UAAU,CAAC,IAAImB,EAAEnB,EAAEA,EAAEQ,EAAE,GAAG,CAAC,OAAOL,EAAE,MAAM,KAAK,SAAS,CAAC,QAAC,CAAQH,EAAEmB,CAAC,CAAC,CAAC,QCftJuB,GAAA,QAAUJ;;;;;;;;GCSN,IAAIK,GAAGL,EAAiBM,GAAGC,GAAqB,SAASrD,EAAEW,EAAE,CAAC,QAAQK,EAAE,yDAAyDL,EAAEgB,EAAE,EAAEA,EAAE,UAAU,OAAOA,IAAIX,GAAG,WAAW,mBAAmB,UAAUW,CAAC,CAAC,EAAE,MAAM,yBAAyBhB,EAAE,WAAWK,EAAE,gHAAgH,CAAC,IAAIsC,GAAG,IAAI,IAAIC,GAAG,GAAG,SAASC,GAAG7C,EAAEK,EAAE,CAACyC,GAAG9C,EAAEK,CAAC,EAAEyC,GAAG9C,EAAE,UAAUK,CAAC,CAAC,CACxb,SAASyC,GAAG9C,EAAEK,EAAE,CAAS,IAARuC,GAAG5C,CAAC,EAAEK,EAAML,EAAE,EAAEA,EAAEK,EAAE,OAAOL,IAAI2C,GAAG,IAAItC,EAAEL,CAAC,CAAC,CAAC,CAC5D,IAAI+C,GAAG,EAAgB,OAAO,OAArB,KAA2C,OAAO,OAAO,SAA5B,KAAoD,OAAO,OAAO,SAAS,cAArC,KAAoDC,GAAG,OAAO,UAAU,eAAeC,GAAG,8VAA8VC,GACpgB,GAAGC,GAAG,CAAE,EAAC,SAASC,GAAGpD,EAAE,CAAC,OAAGgD,GAAG,KAAKG,GAAGnD,CAAC,EAAQ,GAAMgD,GAAG,KAAKE,GAAGlD,CAAC,EAAQ,GAAMiD,GAAG,KAAKjD,CAAC,EAASmD,GAAGnD,CAAC,EAAE,IAAGkD,GAAGlD,CAAC,EAAE,GAAS,GAAE,CAAC,SAASqD,GAAGrD,EAAEK,EAAEW,EAAED,EAAE,CAAC,GAAUC,IAAP,MAAcA,EAAE,OAAN,EAAW,MAAM,GAAG,OAAO,OAAOX,EAAC,CAAE,IAAK,WAAW,IAAK,SAAS,MAAM,GAAG,IAAK,UAAU,OAAGU,EAAQ,GAAaC,IAAP,KAAe,CAACA,EAAE,iBAAgBhB,EAAEA,EAAE,YAAW,EAAG,MAAM,EAAE,CAAC,EAAkBA,IAAV,SAAuBA,IAAV,SAAY,QAAQ,MAAM,EAAE,CAAC,CACzX,SAASsD,GAAGtD,EAAEK,EAAEW,EAAED,EAAE,CAAC,GAAUV,IAAP,MAAwB,OAAOA,EAArB,KAAwBgD,GAAGrD,EAAEK,EAAEW,EAAED,CAAC,EAAE,MAAM,GAAG,GAAGA,EAAE,MAAM,GAAG,GAAUC,IAAP,KAAS,OAAOA,EAAE,KAAI,CAAE,IAAK,GAAE,MAAM,CAACX,EAAE,IAAK,GAAE,OAAWA,IAAL,GAAO,IAAK,GAAE,OAAO,MAAMA,CAAC,EAAE,IAAK,GAAE,OAAO,MAAMA,CAAC,GAAG,EAAEA,CAAC,CAAC,MAAM,EAAE,CAAC,SAASX,GAAEM,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAE,CAAC,KAAK,gBAAoBd,IAAJ,GAAWA,IAAJ,GAAWA,IAAJ,EAAM,KAAK,cAAcU,EAAE,KAAK,mBAAmBT,EAAE,KAAK,gBAAgBU,EAAE,KAAK,aAAahB,EAAE,KAAK,KAAKK,EAAE,KAAK,YAAYe,EAAE,KAAK,kBAAkBD,CAAC,CAAC,IAAIrB,GAAE,GACnb,uIAAuI,MAAM,GAAG,EAAE,QAAQ,SAASE,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,gBAAgB,EAAE,CAAC,YAAY,OAAO,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,YAAY,YAAY,CAAC,EAAE,QAAQ,SAASA,EAAE,CAAC,IAAIK,EAAEL,EAAE,CAAC,EAAEF,GAAEO,CAAC,EAAE,IAAIX,GAAEW,EAAE,EAAE,GAAGL,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,YAAY,aAAa,OAAO,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,cAAc,KAAK,GAAG,EAAE,CAAC,CAAC,EAC3e,CAAC,cAAc,4BAA4B,YAAY,eAAe,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,8OAA8O,MAAM,GAAG,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,YAAa,EAAC,KAAK,GAAG,EAAE,CAAC,CAAC,EACzb,CAAC,UAAU,WAAW,QAAQ,UAAU,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,UAAU,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,OAAO,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,cAAc,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,IAAIuD,GAAG,gBAAgB,SAASC,GAAGxD,EAAE,CAAC,OAAOA,EAAE,CAAC,EAAE,YAAW,CAAE,CACxZ,0jCAA0jC,MAAM,GAAG,EAAE,QAAQ,SAASA,EAAE,CAAC,IAAIK,EAAEL,EAAE,QAAQuD,GACzmCC,EAAE,EAAE1D,GAAEO,CAAC,EAAE,IAAIX,GAAEW,EAAE,EAAE,GAAGL,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,2EAA2E,MAAM,GAAG,EAAE,QAAQ,SAASA,EAAE,CAAC,IAAIK,EAAEL,EAAE,QAAQuD,GAAGC,EAAE,EAAE1D,GAAEO,CAAC,EAAE,IAAIX,GAAEW,EAAE,EAAE,GAAGL,EAAE,+BAA+B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,WAAW,WAAW,EAAE,QAAQ,SAASA,EAAE,CAAC,IAAIK,EAAEL,EAAE,QAAQuD,GAAGC,EAAE,EAAE1D,GAAEO,CAAC,EAAE,IAAIX,GAAEW,EAAE,EAAE,GAAGL,EAAE,uCAAuC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,aAAa,EAAE,QAAQ,SAASA,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,YAAa,EAAC,KAAK,GAAG,EAAE,CAAC,CAAC,EACndF,GAAE,UAAU,IAAIJ,GAAE,YAAY,EAAE,GAAG,aAAa,+BAA+B,GAAG,EAAE,EAAE,CAAC,MAAM,OAAO,SAAS,YAAY,EAAE,QAAQ,SAASM,EAAE,CAACF,GAAEE,CAAC,EAAE,IAAIN,GAAEM,EAAE,EAAE,GAAGA,EAAE,YAAW,EAAG,KAAK,GAAG,EAAE,CAAC,CAAC,EAC7L,SAASyD,GAAGzD,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAER,GAAE,eAAeO,CAAC,EAAEP,GAAEO,CAAC,EAAE,MAAeC,IAAP,KAAaA,EAAE,OAAN,EAAWS,GAAG,EAAE,EAAEV,EAAE,SAAeA,EAAE,CAAC,IAAT,KAAkBA,EAAE,CAAC,IAAT,KAAkBA,EAAE,CAAC,IAAT,KAAkBA,EAAE,CAAC,IAAT,OAAWiD,GAAGjD,EAAEW,EAAEV,EAAES,CAAC,IAAIC,EAAE,MAAMD,GAAUT,IAAP,KAAS8C,GAAG/C,CAAC,IAAWW,IAAP,KAAShB,EAAE,gBAAgBK,CAAC,EAAEL,EAAE,aAAaK,EAAE,GAAGW,CAAC,GAAGV,EAAE,gBAAgBN,EAAEM,EAAE,YAAY,EAASU,IAAP,KAAaV,EAAE,OAAN,EAAW,GAAG,GAAGU,GAAGX,EAAEC,EAAE,cAAcS,EAAET,EAAE,mBAA0BU,IAAP,KAAShB,EAAE,gBAAgBK,CAAC,GAAGC,EAAEA,EAAE,KAAKU,EAAMV,IAAJ,GAAWA,IAAJ,GAAYU,IAAL,GAAO,GAAG,GAAGA,EAAED,EAAEf,EAAE,eAAee,EAAEV,EAAEW,CAAC,EAAEhB,EAAE,aAAaK,EAAEW,CAAC,IAAG,CACjd,IAAI0C,GAAGlB,GAAG,mDAAmDmB,GAAG,OAAO,IAAI,eAAe,EAAEC,GAAG,OAAO,IAAI,cAAc,EAAEC,GAAG,OAAO,IAAI,gBAAgB,EAAEC,GAAG,OAAO,IAAI,mBAAmB,EAAEC,GAAG,OAAO,IAAI,gBAAgB,EAAEC,GAAG,OAAO,IAAI,gBAAgB,EAAEC,GAAG,OAAO,IAAI,eAAe,EAAEC,GAAG,OAAO,IAAI,mBAAmB,EAAEC,GAAG,OAAO,IAAI,gBAAgB,EAAEC,GAAG,OAAO,IAAI,qBAAqB,EAAEC,GAAG,OAAO,IAAI,YAAY,EAAEC,GAAG,OAAO,IAAI,YAAY,EACtbC,GAAG,OAAO,IAAI,iBAAiB,EAAqGC,GAAG,OAAO,SAAS,SAASC,GAAGzE,EAAE,CAAC,OAAUA,IAAP,MAAqB,OAAOA,GAAlB,SAA2B,MAAKA,EAAEwE,IAAIxE,EAAEwE,EAAE,GAAGxE,EAAE,YAAY,EAAqB,OAAOA,GAApB,WAAsBA,EAAE,KAAI,CAAC,IAAID,GAAE,OAAO,OAAO2E,GAAG,SAASC,GAAG3E,EAAE,CAAC,GAAY0E,KAAT,OAAY,GAAG,CAAC,MAAM,MAAO,CAAC,OAAO1D,EAAE,CAAC,IAAIX,EAAEW,EAAE,MAAM,KAAI,EAAG,MAAM,cAAc,EAAE0D,GAAGrE,GAAGA,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM;AAAA,EAAKqE,GAAG1E,CAAC,CAAC,IAAI4E,GAAG,GACzb,SAASC,GAAG7E,EAAEK,EAAE,CAAC,GAAG,CAACL,GAAG4E,GAAG,MAAM,GAAGA,GAAG,GAAG,IAAI5D,EAAE,MAAM,kBAAkB,MAAM,kBAAkB,OAAO,GAAG,CAAC,GAAGX,EAAE,GAAGA,EAAE,UAAU,CAAC,MAAM,MAAO,CAAC,EAAE,OAAO,eAAeA,EAAE,UAAU,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,MAAO,CAAC,CAAC,CAAC,EAAa,OAAO,SAAlB,UAA2B,QAAQ,UAAU,CAAC,GAAG,CAAC,QAAQ,UAAUA,EAAE,EAAE,CAAC,OAAOlB,EAAE,CAAC,IAAI4B,EAAE5B,CAAC,CAAC,QAAQ,UAAUa,EAAE,GAAGK,CAAC,CAAC,KAAK,CAAC,GAAG,CAACA,EAAE,MAAM,OAAOlB,EAAE,CAAC4B,EAAE5B,CAAC,CAACa,EAAE,KAAKK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,MAAO,CAAC,OAAOlB,EAAE,CAAC4B,EAAE5B,CAAC,CAACa,EAAG,EAAC,OAAOb,EAAE,CAAC,GAAGA,GAAG4B,GAAc,OAAO5B,EAAE,OAApB,SAA0B,CAAC,QAAQmB,EAAEnB,EAAE,MAAM,MAAM;AAAA,CAAI,EACvfiC,EAAEL,EAAE,MAAM,MAAM;AAAA,CAAI,EAAEI,EAAEb,EAAE,OAAO,EAAEY,EAAEE,EAAE,OAAO,EAAE,GAAGD,GAAG,GAAGD,GAAGZ,EAAEa,CAAC,IAAIC,EAAEF,CAAC,GAAGA,IAAI,KAAK,GAAGC,GAAG,GAAGD,EAAEC,IAAID,IAAI,GAAGZ,EAAEa,CAAC,IAAIC,EAAEF,CAAC,EAAE,CAAC,GAAOC,IAAJ,GAAWD,IAAJ,EAAO,EAAG,IAAGC,IAAID,IAAI,EAAEA,GAAGZ,EAAEa,CAAC,IAAIC,EAAEF,CAAC,EAAE,CAAC,IAAID,EAAE;AAAA,EAAKX,EAAEa,CAAC,EAAE,QAAQ,WAAW,MAAM,EAAE,OAAAnB,EAAE,aAAaiB,EAAE,SAAS,aAAa,IAAIA,EAAEA,EAAE,QAAQ,cAAcjB,EAAE,WAAW,GAAUiB,CAAC,OAAO,GAAGE,GAAG,GAAGD,GAAG,KAAK,CAAC,CAAC,QAAC,CAAQ0D,GAAG,GAAG,MAAM,kBAAkB5D,CAAC,CAAC,OAAOhB,EAAEA,EAAEA,EAAE,aAAaA,EAAE,KAAK,IAAI2E,GAAG3E,CAAC,EAAE,EAAE,CAC9Z,SAAS8E,GAAG9E,EAAE,CAAC,OAAOA,EAAE,IAAG,CAAE,IAAK,GAAE,OAAO2E,GAAG3E,EAAE,IAAI,EAAE,IAAK,IAAG,OAAO2E,GAAG,MAAM,EAAE,IAAK,IAAG,OAAOA,GAAG,UAAU,EAAE,IAAK,IAAG,OAAOA,GAAG,cAAc,EAAE,IAAK,GAAE,IAAK,GAAE,IAAK,IAAG,OAAO3E,EAAE6E,GAAG7E,EAAE,KAAK,EAAE,EAAEA,EAAE,IAAK,IAAG,OAAOA,EAAE6E,GAAG7E,EAAE,KAAK,OAAO,EAAE,EAAEA,EAAE,IAAK,GAAE,OAAOA,EAAE6E,GAAG7E,EAAE,KAAK,EAAE,EAAEA,EAAE,QAAQ,MAAM,EAAE,CAAC,CACxR,SAAS+E,GAAG/E,EAAE,CAAC,GAASA,GAAN,KAAQ,OAAO,KAAK,GAAgB,OAAOA,GAApB,WAAsB,OAAOA,EAAE,aAAaA,EAAE,MAAM,KAAK,GAAc,OAAOA,GAAlB,SAAoB,OAAOA,EAAE,OAAOA,EAAC,CAAE,KAAK6D,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,SAAS,KAAKG,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,aAAa,KAAKK,GAAG,MAAM,WAAW,KAAKC,GAAG,MAAM,cAAc,CAAC,GAAc,OAAOpE,GAAlB,SAAoB,OAAOA,EAAE,SAAQ,CAAE,KAAKiE,GAAG,OAAOjE,EAAE,aAAa,WAAW,YAAY,KAAKgE,GAAG,OAAOhE,EAAE,SAAS,aAAa,WAAW,YAAY,KAAKkE,GAAG,IAAI7D,EAAEL,EAAE,OAAO,OAAAA,EAAEA,EAAE,YAAYA,IAAIA,EAAEK,EAAE,aAClfA,EAAE,MAAM,GAAGL,EAAOA,IAAL,GAAO,cAAcA,EAAE,IAAI,cAAqBA,EAAE,KAAKqE,GAAG,OAAOhE,EAAEL,EAAE,aAAa,KAAYK,IAAP,KAASA,EAAE0E,GAAG/E,EAAE,IAAI,GAAG,OAAO,KAAKsE,GAAGjE,EAAEL,EAAE,SAASA,EAAEA,EAAE,MAAM,GAAG,CAAC,OAAO+E,GAAG/E,EAAEK,CAAC,CAAC,CAAC,MAAS,EAAE,CAAC,OAAO,IAAI,CAC3M,SAAS2E,GAAGhF,EAAE,CAAC,IAAIK,EAAEL,EAAE,KAAK,OAAOA,EAAE,IAAG,CAAE,IAAK,IAAG,MAAM,QAAQ,IAAK,GAAE,OAAOK,EAAE,aAAa,WAAW,YAAY,IAAK,IAAG,OAAOA,EAAE,SAAS,aAAa,WAAW,YAAY,IAAK,IAAG,MAAM,qBAAqB,IAAK,IAAG,OAAOL,EAAEK,EAAE,OAAOL,EAAEA,EAAE,aAAaA,EAAE,MAAM,GAAGK,EAAE,cAAmBL,IAAL,GAAO,cAAcA,EAAE,IAAI,cAAc,IAAK,GAAE,MAAM,WAAW,IAAK,GAAE,OAAOK,EAAE,IAAK,GAAE,MAAM,SAAS,IAAK,GAAE,MAAM,OAAO,IAAK,GAAE,MAAM,OAAO,IAAK,IAAG,OAAO0E,GAAG1E,CAAC,EAAE,IAAK,GAAE,OAAOA,IAAIyD,GAAG,aAAa,OAAO,IAAK,IAAG,MAAM,YACtf,IAAK,IAAG,MAAM,WAAW,IAAK,IAAG,MAAM,QAAQ,IAAK,IAAG,MAAM,WAAW,IAAK,IAAG,MAAM,eAAe,IAAK,IAAG,MAAM,gBAAgB,IAAK,GAAE,IAAK,GAAE,IAAK,IAAG,IAAK,GAAE,IAAK,IAAG,IAAK,IAAG,GAAgB,OAAOzD,GAApB,WAAsB,OAAOA,EAAE,aAAaA,EAAE,MAAM,KAAK,GAAc,OAAOA,GAAlB,SAAoB,OAAOA,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS4E,GAAGjF,EAAE,CAAC,OAAO,OAAOA,EAAG,KAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,EAAE,CAAC,CACra,SAASkF,GAAGlF,EAAE,CAAC,IAAIK,EAAEL,EAAE,KAAK,OAAOA,EAAEA,EAAE,WAAqBA,EAAE,YAAa,IAAzB,UAAyCK,IAAb,YAA0BA,IAAV,QAAY,CAC1G,SAAS8E,GAAGnF,EAAE,CAAC,IAAIK,EAAE6E,GAAGlF,CAAC,EAAE,UAAU,QAAQgB,EAAE,OAAO,yBAAyBhB,EAAE,YAAY,UAAUK,CAAC,EAAEU,EAAE,GAAGf,EAAEK,CAAC,EAAE,GAAG,CAACL,EAAE,eAAeK,CAAC,GAAiB,OAAOW,EAArB,KAAqC,OAAOA,EAAE,KAAtB,YAAwC,OAAOA,EAAE,KAAtB,WAA0B,CAAC,IAAIV,EAAEU,EAAE,IAAII,EAAEJ,EAAE,IAAI,cAAO,eAAehB,EAAEK,EAAE,CAAC,aAAa,GAAG,IAAI,UAAU,CAAC,OAAOC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,SAASN,EAAE,CAACe,EAAE,GAAGf,EAAEoB,EAAE,KAAK,KAAKpB,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,eAAeA,EAAEK,EAAE,CAAC,WAAWW,EAAE,UAAU,CAAC,EAAQ,CAAC,SAAS,UAAU,CAAC,OAAOD,CAAC,EAAE,SAAS,SAASf,EAAE,CAACe,EAAE,GAAGf,CAAC,EAAE,aAAa,UAAU,CAACA,EAAE,cACxf,KAAK,OAAOA,EAAEK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS+E,GAAGpF,EAAE,CAACA,EAAE,gBAAgBA,EAAE,cAAcmF,GAAGnF,CAAC,EAAE,CAAC,SAASqF,GAAGrF,EAAE,CAAC,GAAG,CAACA,EAAE,MAAM,GAAG,IAAIK,EAAEL,EAAE,cAAc,GAAG,CAACK,EAAE,MAAM,GAAG,IAAIW,EAAEX,EAAE,SAAQ,EAAOU,EAAE,GAAG,OAAAf,IAAIe,EAAEmE,GAAGlF,CAAC,EAAEA,EAAE,QAAQ,OAAO,QAAQA,EAAE,OAAOA,EAAEe,EAASf,IAAIgB,GAAGX,EAAE,SAASL,CAAC,EAAE,IAAI,EAAE,CAAC,SAASsF,GAAGtF,EAAE,CAAsD,GAArDA,EAAEA,IAAkB,OAAO,SAArB,IAA8B,SAAS,QAAyB,OAAOA,EAArB,IAAuB,OAAO,KAAK,GAAG,CAAC,OAAOA,EAAE,eAAeA,EAAE,IAAI,MAAS,CAAC,OAAOA,EAAE,IAAI,CAAC,CACpa,SAASuF,GAAGvF,EAAEK,EAAE,CAAC,IAAIW,EAAEX,EAAE,QAAQ,OAAON,GAAE,GAAGM,EAAE,CAAC,eAAe,OAAO,aAAa,OAAO,MAAM,OAAO,QAAcW,GAAIhB,EAAE,cAAc,cAAc,CAAC,CAAC,CAAC,SAASwF,GAAGxF,EAAEK,EAAE,CAAC,IAAIW,EAAQX,EAAE,cAAR,KAAqB,GAAGA,EAAE,aAAaU,EAAQV,EAAE,SAAR,KAAgBA,EAAE,QAAQA,EAAE,eAAeW,EAAEiE,GAAS5E,EAAE,OAAR,KAAcA,EAAE,MAAMW,CAAC,EAAEhB,EAAE,cAAc,CAAC,eAAee,EAAE,aAAaC,EAAE,WAAwBX,EAAE,OAAf,YAA+BA,EAAE,OAAZ,QAAuBA,EAAE,SAAR,KAAsBA,EAAE,OAAR,IAAa,CAAC,CAAC,SAASoF,GAAGzF,EAAEK,EAAE,CAACA,EAAEA,EAAE,QAAcA,GAAN,MAASoD,GAAGzD,EAAE,UAAUK,EAAE,EAAE,CAAC,CAC9d,SAASqF,GAAG1F,EAAEK,EAAE,CAACoF,GAAGzF,EAAEK,CAAC,EAAE,IAAIW,EAAEiE,GAAG5E,EAAE,KAAK,EAAEU,EAAEV,EAAE,KAAK,GAASW,GAAN,KAAsBD,IAAX,UAAqBC,IAAJ,GAAYhB,EAAE,QAAP,IAAcA,EAAE,OAAOgB,KAAEhB,EAAE,MAAM,GAAGgB,GAAOhB,EAAE,QAAQ,GAAGgB,IAAIhB,EAAE,MAAM,GAAGgB,WAAsBD,IAAX,UAAwBA,IAAV,QAAY,CAACf,EAAE,gBAAgB,OAAO,EAAE,MAAM,CAACK,EAAE,eAAe,OAAO,EAAEsF,GAAG3F,EAAEK,EAAE,KAAKW,CAAC,EAAEX,EAAE,eAAe,cAAc,GAAGsF,GAAG3F,EAAEK,EAAE,KAAK4E,GAAG5E,EAAE,YAAY,CAAC,EAAQA,EAAE,SAAR,MAAuBA,EAAE,gBAAR,OAAyBL,EAAE,eAAe,CAAC,CAACK,EAAE,eAAe,CACla,SAASuF,GAAG5F,EAAEK,EAAEW,EAAE,CAAC,GAAGX,EAAE,eAAe,OAAO,GAAGA,EAAE,eAAe,cAAc,EAAE,CAAC,IAAIU,EAAEV,EAAE,KAAK,GAAG,EAAaU,IAAX,UAAwBA,IAAV,SAAsBV,EAAE,QAAX,QAAyBA,EAAE,QAAT,MAAgB,OAAOA,EAAE,GAAGL,EAAE,cAAc,aAAagB,GAAGX,IAAIL,EAAE,QAAQA,EAAE,MAAMK,GAAGL,EAAE,aAAaK,CAAC,CAACW,EAAEhB,EAAE,KAAUgB,IAAL,KAAShB,EAAE,KAAK,IAAIA,EAAE,eAAe,CAAC,CAACA,EAAE,cAAc,eAAoBgB,IAAL,KAAShB,EAAE,KAAKgB,EAAE,CACzV,SAAS2E,GAAG3F,EAAEK,EAAEW,EAAE,EAAeX,IAAX,UAAciF,GAAGtF,EAAE,aAAa,IAAIA,KAAQgB,GAAN,KAAQhB,EAAE,aAAa,GAAGA,EAAE,cAAc,aAAaA,EAAE,eAAe,GAAGgB,IAAIhB,EAAE,aAAa,GAAGgB,GAAE,CAAC,IAAI6E,GAAG,MAAM,QAC7K,SAASC,GAAG9F,EAAEK,EAAEW,EAAED,EAAE,CAAa,GAAZf,EAAEA,EAAE,QAAWK,EAAE,CAACA,EAAE,CAAE,EAAC,QAAQC,EAAE,EAAEA,EAAEU,EAAE,OAAOV,IAAID,EAAE,IAAIW,EAAEV,CAAC,CAAC,EAAE,GAAG,IAAIU,EAAE,EAAEA,EAAEhB,EAAE,OAAOgB,IAAIV,EAAED,EAAE,eAAe,IAAIL,EAAEgB,CAAC,EAAE,KAAK,EAAEhB,EAAEgB,CAAC,EAAE,WAAWV,IAAIN,EAAEgB,CAAC,EAAE,SAASV,GAAGA,GAAGS,IAAIf,EAAEgB,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAmB,IAAlBA,EAAE,GAAGiE,GAAGjE,CAAC,EAAEX,EAAE,KAASC,EAAE,EAAEA,EAAEN,EAAE,OAAOM,IAAI,CAAC,GAAGN,EAAEM,CAAC,EAAE,QAAQU,EAAE,CAAChB,EAAEM,CAAC,EAAE,SAAS,GAAGS,IAAIf,EAAEM,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAQD,IAAP,MAAUL,EAAEM,CAAC,EAAE,WAAWD,EAAEL,EAAEM,CAAC,EAAE,CAAQD,IAAP,OAAWA,EAAE,SAAS,GAAG,CAAC,CACxY,SAAS0F,GAAG/F,EAAEK,EAAE,CAAC,GAASA,EAAE,yBAAR,KAAgC,MAAM,MAAMhB,EAAE,EAAE,CAAC,EAAE,OAAOU,GAAE,GAAGM,EAAE,CAAC,MAAM,OAAO,aAAa,OAAO,SAAS,GAAGL,EAAE,cAAc,YAAY,CAAC,CAAC,CAAC,SAASgG,GAAGhG,EAAEK,EAAE,CAAC,IAAIW,EAAEX,EAAE,MAAM,GAASW,GAAN,KAAQ,CAA+B,GAA9BA,EAAEX,EAAE,SAASA,EAAEA,EAAE,aAAsBW,GAAN,KAAQ,CAAC,GAASX,GAAN,KAAQ,MAAM,MAAMhB,EAAE,EAAE,CAAC,EAAE,GAAGwG,GAAG7E,CAAC,EAAE,CAAC,GAAG,EAAEA,EAAE,OAAO,MAAM,MAAM3B,EAAE,EAAE,CAAC,EAAE2B,EAAEA,EAAE,CAAC,CAAC,CAACX,EAAEW,CAAC,CAAOX,GAAN,OAAUA,EAAE,IAAIW,EAAEX,CAAC,CAACL,EAAE,cAAc,CAAC,aAAaiF,GAAGjE,CAAC,CAAC,CAAC,CACnY,SAASiF,GAAGjG,EAAEK,EAAE,CAAC,IAAIW,EAAEiE,GAAG5E,EAAE,KAAK,EAAEU,EAAEkE,GAAG5E,EAAE,YAAY,EAAQW,GAAN,OAAUA,EAAE,GAAGA,EAAEA,IAAIhB,EAAE,QAAQA,EAAE,MAAMgB,GAASX,EAAE,cAAR,MAAsBL,EAAE,eAAegB,IAAIhB,EAAE,aAAagB,IAAUD,GAAN,OAAUf,EAAE,aAAa,GAAGe,EAAE,CAAC,SAASmF,GAAGlG,EAAE,CAAC,IAAIK,EAAEL,EAAE,YAAYK,IAAIL,EAAE,cAAc,cAAmBK,IAAL,IAAeA,IAAP,OAAWL,EAAE,MAAMK,EAAE,CAAC,SAAS8F,GAAGnG,EAAE,CAAC,OAAOA,EAAG,KAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,8BAA8B,CAAC,CAC7c,SAASoG,GAAGpG,EAAEK,EAAE,CAAC,OAAaL,GAAN,MAA0CA,IAAjC,+BAAmCmG,GAAG9F,CAAC,EAAiCL,IAA/B,8BAAoDK,IAAlB,gBAAoB,+BAA+BL,CAAC,CAChK,IAAIqG,GAAGC,GAAG,SAAStG,EAAE,CAAC,OAAoB,OAAO,MAArB,KAA4B,MAAM,wBAAwB,SAASK,EAAEW,EAAED,EAAET,EAAE,CAAC,MAAM,wBAAwB,UAAU,CAAC,OAAON,EAAEK,EAAEW,EAAED,EAAET,CAAC,CAAC,CAAC,CAAC,EAAEN,CAAC,EAAE,SAASA,EAAEK,EAAE,CAAC,GAAkCL,EAAE,eAAjC,8BAA+C,cAAcA,EAAEA,EAAE,UAAUK,MAAM,CAA2F,IAA1FgG,GAAGA,IAAI,SAAS,cAAc,KAAK,EAAEA,GAAG,UAAU,QAAQhG,EAAE,QAAS,EAAC,SAAQ,EAAG,SAAaA,EAAEgG,GAAG,WAAWrG,EAAE,YAAYA,EAAE,YAAYA,EAAE,UAAU,EAAE,KAAKK,EAAE,YAAYL,EAAE,YAAYK,EAAE,UAAU,CAAC,CAAC,CAAC,EACpd,SAASkG,GAAGvG,EAAEK,EAAE,CAAC,GAAGA,EAAE,CAAC,IAAIW,EAAEhB,EAAE,WAAW,GAAGgB,GAAGA,IAAIhB,EAAE,WAAegB,EAAE,WAAN,EAAe,CAACA,EAAE,UAAUX,EAAE,MAAM,CAAC,CAACL,EAAE,YAAYK,CAAC,CACtH,IAAImG,GAAG,CAAC,wBAAwB,GAAG,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,GAAG,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAClf,KAAK,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,cAAc,GAAG,YAAY,EAAE,EAAEC,GAAG,CAAC,SAAS,KAAK,MAAM,GAAG,EAAE,OAAO,KAAKD,EAAE,EAAE,QAAQ,SAASxG,EAAE,CAACyG,GAAG,QAAQ,SAASpG,EAAE,CAACA,EAAEA,EAAEL,EAAE,OAAO,CAAC,EAAE,YAAW,EAAGA,EAAE,UAAU,CAAC,EAAEwG,GAAGnG,CAAC,EAAEmG,GAAGxG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS0G,GAAG1G,EAAEK,EAAEW,EAAE,CAAC,OAAaX,GAAN,MAAqB,OAAOA,GAAnB,WAA2BA,IAAL,GAAO,GAAGW,GAAc,OAAOX,GAAlB,UAAyBA,IAAJ,GAAOmG,GAAG,eAAexG,CAAC,GAAGwG,GAAGxG,CAAC,GAAG,GAAGK,GAAG,KAAI,EAAGA,EAAE,IAAI,CACzb,SAASsG,GAAG3G,EAAEK,EAAE,CAACL,EAAEA,EAAE,MAAM,QAAQgB,KAAKX,EAAE,GAAGA,EAAE,eAAeW,CAAC,EAAE,CAAC,IAAID,EAAMC,EAAE,QAAQ,IAAI,IAAlB,EAAoBV,EAAEoG,GAAG1F,EAAEX,EAAEW,CAAC,EAAED,CAAC,EAAYC,IAAV,UAAcA,EAAE,YAAYD,EAAEf,EAAE,YAAYgB,EAAEV,CAAC,EAAEN,EAAEgB,CAAC,EAAEV,CAAC,CAAC,CAAC,IAAIsG,GAAG7G,GAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,EACrT,SAAS8G,GAAG7G,EAAEK,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGuG,GAAG5G,CAAC,IAAUK,EAAE,UAAR,MAAwBA,EAAE,yBAAR,MAAiC,MAAM,MAAMhB,EAAE,IAAIW,CAAC,CAAC,EAAE,GAASK,EAAE,yBAAR,KAAgC,CAAC,GAASA,EAAE,UAAR,KAAiB,MAAM,MAAMhB,EAAE,EAAE,CAAC,EAAE,GAAc,OAAOgB,EAAE,yBAApB,UAA6C,EAAE,WAAWA,EAAE,yBAAyB,MAAM,MAAMhB,EAAE,EAAE,CAAC,CAAE,CAAC,GAASgB,EAAE,OAAR,MAA0B,OAAOA,EAAE,OAApB,SAA0B,MAAM,MAAMhB,EAAE,EAAE,CAAC,CAAE,CAAC,CAClW,SAASyH,GAAG9G,EAAEK,EAAE,CAAC,GAAQL,EAAE,QAAQ,GAAG,IAAlB,GAAoB,OAAiB,OAAOK,EAAE,IAApB,SAAuB,OAAOL,EAAC,CAAE,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,MAAM,GAAG,QAAQ,MAAM,EAAE,CAAC,CAAC,IAAI+G,GAAG,KAAK,SAASC,GAAGhH,EAAE,CAAC,OAAAA,EAAEA,EAAE,QAAQA,EAAE,YAAY,OAAOA,EAAE,0BAA0BA,EAAEA,EAAE,yBAAoCA,EAAE,WAAN,EAAeA,EAAE,WAAWA,CAAC,CAAC,IAAIiH,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAGpH,EAAE,CAAC,GAAGA,EAAEqH,GAAGrH,CAAC,EAAE,CAAC,GAAgB,OAAOiH,IAApB,WAAuB,MAAM,MAAM5H,EAAE,GAAG,CAAC,EAAE,IAAIgB,EAAEL,EAAE,UAAUK,IAAIA,EAAEiH,GAAGjH,CAAC,EAAE4G,GAAGjH,EAAE,UAAUA,EAAE,KAAKK,CAAC,EAAE,CAAC,CAAC,SAASkH,GAAGvH,EAAE,CAACkH,GAAGC,GAAGA,GAAG,KAAKnH,CAAC,EAAEmH,GAAG,CAACnH,CAAC,EAAEkH,GAAGlH,CAAC,CAAC,SAASwH,IAAI,CAAC,GAAGN,GAAG,CAAC,IAAIlH,EAAEkH,GAAG7G,EAAE8G,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGpH,CAAC,EAAKK,EAAE,IAAIL,EAAE,EAAEA,EAAEK,EAAE,OAAOL,IAAIoH,GAAG/G,EAAEL,CAAC,CAAC,CAAC,CAAC,CAAC,SAASyH,GAAGzH,EAAEK,EAAE,CAAC,OAAOL,EAAEK,CAAC,CAAC,CAAC,SAASqH,IAAI,EAAE,IAAIC,GAAG,GAAG,SAASC,GAAG5H,EAAEK,EAAEW,EAAE,CAAC,GAAG2G,GAAG,OAAO3H,EAAEK,EAAEW,CAAC,EAAE2G,GAAG,GAAG,GAAG,CAAC,OAAOF,GAAGzH,EAAEK,EAAEW,CAAC,CAAC,QAAC,CAAW2G,GAAG,IAAUT,KAAP,MAAkBC,KAAP,QAAUO,GAAE,EAAGF,GAAI,GAAC,CAChb,SAASK,GAAG7H,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,UAAU,GAAUgB,IAAP,KAAS,OAAO,KAAK,IAAID,EAAEuG,GAAGtG,CAAC,EAAE,GAAUD,IAAP,KAAS,OAAO,KAAKC,EAAED,EAAEV,CAAC,EAAEL,EAAE,OAAOK,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBU,EAAE,CAACA,EAAE,YAAYf,EAAEA,EAAE,KAAKe,EAAE,EAAaf,IAAX,UAAwBA,IAAV,SAAwBA,IAAX,UAA2BA,IAAb,aAAiBA,EAAE,CAACe,EAAE,MAAMf,EAAE,QAAQA,EAAE,EAAE,CAAC,GAAGA,EAAE,OAAO,KAAK,GAAGgB,GACte,OAAOA,GADke,WAChe,MAAM,MAAM3B,EAAE,IAAIgB,EAAE,OAAOW,CAAC,CAAC,EAAE,OAAOA,CAAC,CAAC,IAAI8G,GAAG,GAAG,GAAG/E,GAAG,GAAG,CAAC,IAAIgF,GAAG,GAAG,OAAO,eAAeA,GAAG,UAAU,CAAC,IAAI,UAAU,CAACD,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,iBAAiB,OAAOC,GAAGA,EAAE,EAAE,OAAO,oBAAoB,OAAOA,GAAGA,EAAE,CAAC,MAAS,CAACD,GAAG,EAAE,CAAC,SAASE,GAAGhI,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAED,EAAED,EAAE,CAAC,IAAI9B,EAAE,MAAM,UAAU,MAAM,KAAK,UAAU,CAAC,EAAE,GAAG,CAACkB,EAAE,MAAMW,EAAE7B,CAAC,CAAC,OAAOkC,EAAE,CAAC,KAAK,QAAQA,CAAC,CAAC,CAAC,CAAC,IAAI4G,GAAG,GAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,KAAKC,GAAG,CAAC,QAAQ,SAASrI,EAAE,CAACiI,GAAG,GAAGC,GAAGlI,CAAC,CAAC,EAAE,SAASsI,GAAGtI,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAED,EAAED,EAAE,CAACgH,GAAG,GAAGC,GAAG,KAAKF,GAAG,MAAMK,GAAG,SAAS,CAAC,CACze,SAASE,GAAGvI,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAED,EAAED,EAAE,CAA0B,GAAzBqH,GAAG,MAAM,KAAK,SAAS,EAAKL,GAAG,CAAC,GAAGA,GAAG,CAAC,IAAI9I,EAAE+I,GAAGD,GAAG,GAAGC,GAAG,IAAI,KAAM,OAAM,MAAM7I,EAAE,GAAG,CAAC,EAAE8I,KAAKA,GAAG,GAAGC,GAAGjJ,EAAE,CAAC,CAAC,SAASqJ,GAAGxI,EAAE,CAAC,IAAIK,EAAEL,EAAEgB,EAAEhB,EAAE,GAAGA,EAAE,UAAU,KAAKK,EAAE,QAAQA,EAAEA,EAAE,WAAW,CAACL,EAAEK,EAAE,GAAGA,EAAEL,EAAOK,EAAE,MAAM,OAAQW,EAAEX,EAAE,QAAQL,EAAEK,EAAE,aAAaL,EAAE,CAAC,OAAWK,EAAE,MAAN,EAAUW,EAAE,IAAI,CAAC,SAASyH,GAAGzI,EAAE,CAAC,GAAQA,EAAE,MAAP,GAAW,CAAC,IAAIK,EAAEL,EAAE,cAAsE,GAAjDK,IAAP,OAAWL,EAAEA,EAAE,UAAiBA,IAAP,OAAWK,EAAEL,EAAE,gBAA0BK,IAAP,KAAS,OAAOA,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAASqI,GAAG1I,EAAE,CAAC,GAAGwI,GAAGxI,CAAC,IAAIA,EAAE,MAAM,MAAMX,EAAE,GAAG,CAAC,CAAE,CACjf,SAASsJ,GAAG3I,EAAE,CAAC,IAAIK,EAAEL,EAAE,UAAU,GAAG,CAACK,EAAE,CAAS,GAARA,EAAEmI,GAAGxI,CAAC,EAAYK,IAAP,KAAS,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAE,OAAOgB,IAAIL,EAAE,KAAKA,CAAC,CAAC,QAAQgB,EAAEhB,EAAEe,EAAEV,IAAI,CAAC,IAAIC,EAAEU,EAAE,OAAO,GAAUV,IAAP,KAAS,MAAM,IAAIc,EAAEd,EAAE,UAAU,GAAUc,IAAP,KAAS,CAAY,GAAXL,EAAET,EAAE,OAAiBS,IAAP,KAAS,CAACC,EAAED,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGT,EAAE,QAAQc,EAAE,MAAM,CAAC,IAAIA,EAAEd,EAAE,MAAMc,GAAG,CAAC,GAAGA,IAAIJ,EAAE,OAAO0H,GAAGpI,CAAC,EAAEN,EAAE,GAAGoB,IAAIL,EAAE,OAAO2H,GAAGpI,CAAC,EAAED,EAAEe,EAAEA,EAAE,OAAO,CAAC,MAAM,MAAM/B,EAAE,GAAG,CAAC,CAAE,CAAC,GAAG2B,EAAE,SAASD,EAAE,OAAOC,EAAEV,EAAES,EAAEK,MAAM,CAAC,QAAQD,EAAE,GAAGD,EAAEZ,EAAE,MAAMY,GAAG,CAAC,GAAGA,IAAIF,EAAE,CAACG,EAAE,GAAGH,EAAEV,EAAES,EAAEK,EAAE,KAAK,CAAC,GAAGF,IAAIH,EAAE,CAACI,EAAE,GAAGJ,EAAET,EAAEU,EAAEI,EAAE,KAAK,CAACF,EAAEA,EAAE,OAAO,CAAC,GAAG,CAACC,EAAE,CAAC,IAAID,EAAEE,EAAE,MAAMF,GAAG,CAAC,GAAGA,IAC5fF,EAAE,CAACG,EAAE,GAAGH,EAAEI,EAAEL,EAAET,EAAE,KAAK,CAAC,GAAGY,IAAIH,EAAE,CAACI,EAAE,GAAGJ,EAAEK,EAAEJ,EAAEV,EAAE,KAAK,CAACY,EAAEA,EAAE,OAAO,CAAC,GAAG,CAACC,EAAE,MAAM,MAAM9B,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC,GAAG2B,EAAE,YAAYD,EAAE,MAAM,MAAM1B,EAAE,GAAG,CAAC,CAAE,CAAC,GAAO2B,EAAE,MAAN,EAAU,MAAM,MAAM3B,EAAE,GAAG,CAAC,EAAE,OAAO2B,EAAE,UAAU,UAAUA,EAAEhB,EAAEK,CAAC,CAAC,SAASuI,GAAG5I,EAAE,CAAC,OAAAA,EAAE2I,GAAG3I,CAAC,EAAgBA,IAAP,KAAS6I,GAAG7I,CAAC,EAAE,IAAI,CAAC,SAAS6I,GAAG7I,EAAE,CAAC,GAAOA,EAAE,MAAN,GAAeA,EAAE,MAAN,EAAU,OAAOA,EAAE,IAAIA,EAAEA,EAAE,MAAaA,IAAP,MAAU,CAAC,IAAIK,EAAEwI,GAAG7I,CAAC,EAAE,GAAUK,IAAP,KAAS,OAAOA,EAAEL,EAAEA,EAAE,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAI8I,GAAGrG,GAAG,0BAA0BsG,GAAGtG,GAAG,wBAAwBuG,GAAGvG,GAAG,qBAAqBwG,GAAGxG,GAAG,sBAAsBxC,GAAEwC,GAAG,aAAayG,GAAGzG,GAAG,iCAAiC0G,GAAG1G,GAAG,2BAA2B2G,GAAG3G,GAAG,8BAA8B4G,GAAG5G,GAAG,wBAAwB6G,GAAG7G,GAAG,qBAAqB8G,GAAG9G,GAAG,sBAAsB+G,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG1J,EAAE,CAAC,GAAGyJ,IAAiB,OAAOA,GAAG,mBAAvB,WAAyC,GAAG,CAACA,GAAG,kBAAkBD,GAAGxJ,EAAE,QAAcA,EAAE,QAAQ,MAAM,OAAvB,GAA2B,CAAC,MAAS,EAAE,CACve,IAAI2J,GAAG,KAAK,MAAM,KAAK,MAAMC,GAAGC,GAAG,KAAK,IAAIC,GAAG,KAAK,IAAI,SAASF,GAAG5J,EAAE,CAAC,OAAAA,KAAK,EAAaA,IAAJ,EAAM,GAAG,IAAI6J,GAAG7J,CAAC,EAAE8J,GAAG,GAAG,CAAC,CAAC,IAAIC,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAGjK,EAAE,CAAC,OAAOA,EAAE,CAACA,EAAC,CAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,IAAG,MAAO,IAAG,IAAK,IAAG,MAAO,IAAG,IAAK,IAAG,IAAK,KAAI,IAAK,KAAI,IAAK,KAAI,IAAK,MAAK,IAAK,MAAK,IAAK,MAAK,IAAK,MAAK,IAAK,OAAM,IAAK,OAAM,IAAK,OAAM,IAAK,QAAO,IAAK,QAAO,IAAK,QAAO,IAAK,SAAQ,IAAK,SAAQ,OAAOA,EAAE,QAAQ,IAAK,SAAQ,IAAK,SAAQ,IAAK,UAAS,IAAK,UAAS,IAAK,UAAS,OAAOA,EAAE,UAAU,IAAK,WAAU,MAAO,WAAU,IAAK,WAAU,MAAO,WAAU,IAAK,WAAU,MAAO,WAAU,IAAK,YAAW,MAAO,YACzgB,QAAQ,OAAOA,CAAC,CAAC,CAAC,SAASkK,GAAGlK,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,aAAa,GAAOgB,IAAJ,EAAM,MAAO,GAAE,IAAID,EAAE,EAAET,EAAEN,EAAE,eAAeoB,EAAEpB,EAAE,YAAYmB,EAAEH,EAAE,UAAU,GAAOG,IAAJ,EAAM,CAAC,IAAID,EAAEC,EAAE,CAACb,EAAMY,IAAJ,EAAMH,EAAEkJ,GAAG/I,CAAC,GAAGE,GAAGD,EAAMC,IAAJ,IAAQL,EAAEkJ,GAAG7I,CAAC,GAAG,MAAMD,EAAEH,EAAE,CAACV,EAAMa,IAAJ,EAAMJ,EAAEkJ,GAAG9I,CAAC,EAAMC,IAAJ,IAAQL,EAAEkJ,GAAG7I,CAAC,GAAG,GAAOL,IAAJ,EAAM,MAAO,GAAE,GAAOV,IAAJ,GAAOA,IAAIU,GAAQ,EAAAV,EAAEC,KAAKA,EAAES,EAAE,CAACA,EAAEK,EAAEf,EAAE,CAACA,EAAEC,GAAGc,GAAQd,IAAL,KAAac,EAAE,WAAP,GAAiB,OAAOf,EAA0C,GAAnCU,EAAE,IAAKA,GAAGC,EAAE,IAAIX,EAAEL,EAAE,eAAsBK,IAAJ,EAAM,IAAIL,EAAEA,EAAE,cAAcK,GAAGU,EAAE,EAAEV,GAAGW,EAAE,GAAG2I,GAAGtJ,CAAC,EAAEC,EAAE,GAAGU,EAAED,GAAGf,EAAEgB,CAAC,EAAEX,GAAG,CAACC,EAAE,OAAOS,CAAC,CACvc,SAASoJ,GAAGnK,EAAEK,EAAE,CAAC,OAAOL,EAAC,CAAE,IAAK,GAAE,IAAK,GAAE,IAAK,GAAE,OAAOK,EAAE,IAAI,IAAK,GAAE,IAAK,IAAG,IAAK,IAAG,IAAK,IAAG,IAAK,KAAI,IAAK,KAAI,IAAK,KAAI,IAAK,MAAK,IAAK,MAAK,IAAK,MAAK,IAAK,MAAK,IAAK,OAAM,IAAK,OAAM,IAAK,OAAM,IAAK,QAAO,IAAK,QAAO,IAAK,QAAO,IAAK,SAAQ,IAAK,SAAQ,OAAOA,EAAE,IAAI,IAAK,SAAQ,IAAK,SAAQ,IAAK,UAAS,IAAK,UAAS,IAAK,UAAS,MAAM,GAAG,IAAK,WAAU,IAAK,WAAU,IAAK,WAAU,IAAK,YAAW,MAAM,GAAG,QAAQ,MAAM,EAAE,CAAC,CAC/a,SAAS+J,GAAGpK,EAAEK,EAAE,CAAC,QAAQW,EAAEhB,EAAE,eAAee,EAAEf,EAAE,YAAYM,EAAEN,EAAE,gBAAgBoB,EAAEpB,EAAE,aAAa,EAAEoB,GAAG,CAAC,IAAID,EAAE,GAAGwI,GAAGvI,CAAC,EAAEF,EAAE,GAAGC,EAAEF,EAAEX,EAAEa,CAAC,EAAUF,IAAL,IAAgB,EAAAC,EAAEF,IAASE,EAAEH,KAAGT,EAAEa,CAAC,EAAEgJ,GAAGjJ,EAAEb,CAAC,GAAOY,GAAGZ,IAAIL,EAAE,cAAckB,GAAGE,GAAG,CAACF,CAAC,CAAC,CAAC,SAASmJ,GAAGrK,EAAE,CAAC,OAAAA,EAAEA,EAAE,aAAa,YAAuBA,IAAJ,EAAMA,EAAEA,EAAE,WAAW,WAAW,CAAC,CAAC,SAASsK,IAAI,CAAC,IAAItK,EAAE+J,GAAG,OAAAA,KAAK,EAAO,EAAAA,GAAG,WAAWA,GAAG,IAAW/J,CAAC,CAAC,SAASuK,GAAGvK,EAAE,CAAC,QAAQK,EAAE,GAAGW,EAAE,EAAE,GAAGA,EAAEA,IAAIX,EAAE,KAAKL,CAAC,EAAE,OAAOK,CAAC,CAC3a,SAASmK,GAAGxK,EAAEK,EAAEW,EAAE,CAAChB,EAAE,cAAcK,EAAcA,IAAZ,YAAgBL,EAAE,eAAe,EAAEA,EAAE,YAAY,GAAGA,EAAEA,EAAE,WAAWK,EAAE,GAAGsJ,GAAGtJ,CAAC,EAAEL,EAAEK,CAAC,EAAEW,CAAC,CAAC,SAASyJ,GAAGzK,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,aAAa,CAACK,EAAEL,EAAE,aAAaK,EAAEL,EAAE,eAAe,EAAEA,EAAE,YAAY,EAAEA,EAAE,cAAcK,EAAEL,EAAE,kBAAkBK,EAAEL,EAAE,gBAAgBK,EAAEA,EAAEL,EAAE,cAAc,IAAIe,EAAEf,EAAE,WAAW,IAAIA,EAAEA,EAAE,gBAAgB,EAAEgB,GAAG,CAAC,IAAIV,EAAE,GAAGqJ,GAAG3I,CAAC,EAAEI,EAAE,GAAGd,EAAED,EAAEC,CAAC,EAAE,EAAES,EAAET,CAAC,EAAE,GAAGN,EAAEM,CAAC,EAAE,GAAGU,GAAG,CAACI,CAAC,CAAC,CACzY,SAASsJ,GAAG1K,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,gBAAgBK,EAAE,IAAIL,EAAEA,EAAE,cAAcgB,GAAG,CAAC,IAAID,EAAE,GAAG4I,GAAG3I,CAAC,EAAEV,EAAE,GAAGS,EAAET,EAAED,EAAEL,EAAEe,CAAC,EAAEV,IAAIL,EAAEe,CAAC,GAAGV,GAAGW,GAAG,CAACV,CAAC,CAAC,CAAC,IAAIJ,GAAE,EAAE,SAASyK,GAAG3K,EAAE,CAAC,OAAAA,GAAG,CAACA,EAAS,EAAEA,EAAE,EAAEA,EAAOA,EAAE,UAAW,GAAG,UAAU,EAAE,CAAC,CAAC,IAAI4K,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAI,IAAIC,GAAG,IAAI,IAAIC,GAAG,GAAGC,GAAG,6PAA6P,MAAM,GAAG,EACniB,SAASC,GAAG1L,EAAEK,EAAE,CAAC,OAAOL,GAAG,IAAK,UAAU,IAAK,WAAWmL,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAG,OAAOjL,EAAE,SAAS,EAAE,MAAM,IAAK,oBAAoB,IAAK,qBAAqBkL,GAAG,OAAOlL,EAAE,SAAS,CAAC,CAAC,CACnT,SAASsL,GAAG3L,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAE,CAAC,OAAUpB,IAAP,MAAUA,EAAE,cAAcoB,GAASpB,EAAE,CAAC,UAAUK,EAAE,aAAaW,EAAE,iBAAiBD,EAAE,YAAYK,EAAE,iBAAiB,CAACd,CAAC,CAAC,EAASD,IAAP,OAAWA,EAAEgH,GAAGhH,CAAC,EAASA,IAAP,MAAUwK,GAAGxK,CAAC,GAAGL,IAAEA,EAAE,kBAAkBe,EAAEV,EAAEL,EAAE,iBAAwBM,IAAP,MAAeD,EAAE,QAAQC,CAAC,IAAhB,IAAmBD,EAAE,KAAKC,CAAC,EAASN,EAAC,CACpR,SAAS4L,GAAG5L,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,OAAOD,EAAG,KAAK,UAAU,OAAO8K,GAAGQ,GAAGR,GAAGnL,EAAEK,EAAEW,EAAED,EAAET,CAAC,EAAE,GAAG,IAAK,YAAY,OAAO8K,GAAGO,GAAGP,GAAGpL,EAAEK,EAAEW,EAAED,EAAET,CAAC,EAAE,GAAG,IAAK,YAAY,OAAO+K,GAAGM,GAAGN,GAAGrL,EAAEK,EAAEW,EAAED,EAAET,CAAC,EAAE,GAAG,IAAK,cAAc,IAAIc,EAAEd,EAAE,UAAU,OAAAgL,GAAG,IAAIlK,EAAEuK,GAAGL,GAAG,IAAIlK,CAAC,GAAG,KAAKpB,EAAEK,EAAEW,EAAED,EAAET,CAAC,CAAC,EAAQ,GAAG,IAAK,oBAAoB,OAAOc,EAAEd,EAAE,UAAUiL,GAAG,IAAInK,EAAEuK,GAAGJ,GAAG,IAAInK,CAAC,GAAG,KAAKpB,EAAEK,EAAEW,EAAED,EAAET,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CACnW,SAASuL,GAAG7L,EAAE,CAAC,IAAIK,EAAEyL,GAAG9L,EAAE,MAAM,EAAE,GAAUK,IAAP,KAAS,CAAC,IAAIW,EAAEwH,GAAGnI,CAAC,EAAE,GAAUW,IAAP,MAAS,GAAGX,EAAEW,EAAE,IAASX,IAAL,IAAQ,GAAGA,EAAEoI,GAAGzH,CAAC,EAASX,IAAP,KAAS,CAACL,EAAE,UAAUK,EAAE2K,GAAGhL,EAAE,SAAS,UAAU,CAAC8K,GAAG9J,CAAC,CAAC,CAAC,EAAE,MAAM,UAAcX,IAAJ,GAAOW,EAAE,UAAU,QAAQ,cAAc,aAAa,CAAChB,EAAE,UAAcgB,EAAE,MAAN,EAAUA,EAAE,UAAU,cAAc,KAAK,MAAM,EAAC,CAAChB,EAAE,UAAU,IAAI,CAClT,SAAS+L,GAAG/L,EAAE,CAAC,GAAUA,EAAE,YAAT,KAAmB,MAAM,GAAG,QAAQK,EAAEL,EAAE,iBAAiB,EAAEK,EAAE,QAAQ,CAAC,IAAIW,EAAEgL,GAAGhM,EAAE,aAAaA,EAAE,iBAAiBK,EAAE,CAAC,EAAEL,EAAE,WAAW,EAAE,GAAUgB,IAAP,KAAS,CAACA,EAAEhB,EAAE,YAAY,IAAIe,EAAE,IAAIC,EAAE,YAAYA,EAAE,KAAKA,CAAC,EAAE+F,GAAGhG,EAAEC,EAAE,OAAO,cAAcD,CAAC,EAAEgG,GAAG,IAAI,KAAM,QAAO1G,EAAEgH,GAAGrG,CAAC,EAASX,IAAP,MAAUwK,GAAGxK,CAAC,EAAEL,EAAE,UAAUgB,EAAE,GAAGX,EAAE,MAAK,CAAE,CAAC,MAAM,EAAE,CAAC,SAAS4L,GAAGjM,EAAEK,EAAEW,EAAE,CAAC+K,GAAG/L,CAAC,GAAGgB,EAAE,OAAOX,CAAC,CAAC,CAAC,SAAS6L,IAAI,CAACjB,GAAG,GAAUE,KAAP,MAAWY,GAAGZ,EAAE,IAAIA,GAAG,MAAaC,KAAP,MAAWW,GAAGX,EAAE,IAAIA,GAAG,MAAaC,KAAP,MAAWU,GAAGV,EAAE,IAAIA,GAAG,MAAMC,GAAG,QAAQW,EAAE,EAAEV,GAAG,QAAQU,EAAE,CAAC,CACnf,SAASE,GAAGnM,EAAEK,EAAE,CAACL,EAAE,YAAYK,IAAIL,EAAE,UAAU,KAAKiL,KAAKA,GAAG,GAAGxI,GAAG,0BAA0BA,GAAG,wBAAwByJ,EAAE,GAAG,CAC5H,SAASE,GAAGpM,EAAE,CAAC,SAASK,EAAEA,EAAE,CAAC,OAAO8L,GAAG9L,EAAEL,CAAC,CAAC,CAAC,GAAG,EAAEkL,GAAG,OAAO,CAACiB,GAAGjB,GAAG,CAAC,EAAElL,CAAC,EAAE,QAAQgB,EAAE,EAAEA,EAAEkK,GAAG,OAAOlK,IAAI,CAAC,IAAID,EAAEmK,GAAGlK,CAAC,EAAED,EAAE,YAAYf,IAAIe,EAAE,UAAU,KAAK,CAAC,CAAyF,IAAjFoK,KAAP,MAAWgB,GAAGhB,GAAGnL,CAAC,EAASoL,KAAP,MAAWe,GAAGf,GAAGpL,CAAC,EAASqL,KAAP,MAAWc,GAAGd,GAAGrL,CAAC,EAAEsL,GAAG,QAAQjL,CAAC,EAAEkL,GAAG,QAAQlL,CAAC,EAAMW,EAAE,EAAEA,EAAEwK,GAAG,OAAOxK,IAAID,EAAEyK,GAAGxK,CAAC,EAAED,EAAE,YAAYf,IAAIe,EAAE,UAAU,MAAM,KAAK,EAAEyK,GAAG,SAASxK,EAAEwK,GAAG,CAAC,EAASxK,EAAE,YAAT,OAAqB6K,GAAG7K,CAAC,EAASA,EAAE,YAAT,MAAoBwK,GAAG,MAAO,EAAC,IAAIa,GAAG3I,GAAG,wBAAwB4I,GAAG,GAC5a,SAASC,GAAGvM,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAEJ,GAAEkB,EAAEiL,GAAG,WAAWA,GAAG,WAAW,KAAK,GAAG,CAACnM,GAAE,EAAEsM,GAAGxM,EAAEK,EAAEW,EAAED,CAAC,CAAC,QAAC,CAAQb,GAAEI,EAAE+L,GAAG,WAAWjL,CAAC,CAAC,CAAC,SAASqL,GAAGzM,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAEJ,GAAEkB,EAAEiL,GAAG,WAAWA,GAAG,WAAW,KAAK,GAAG,CAACnM,GAAE,EAAEsM,GAAGxM,EAAEK,EAAEW,EAAED,CAAC,CAAC,QAAC,CAAQb,GAAEI,EAAE+L,GAAG,WAAWjL,CAAC,CAAC,CACjO,SAASoL,GAAGxM,EAAEK,EAAEW,EAAED,EAAE,CAAC,GAAGuL,GAAG,CAAC,IAAIhM,EAAE0L,GAAGhM,EAAEK,EAAEW,EAAED,CAAC,EAAE,GAAUT,IAAP,KAASoM,GAAG1M,EAAEK,EAAEU,EAAE4L,GAAG3L,CAAC,EAAE0K,GAAG1L,EAAEe,CAAC,UAAU6K,GAAGtL,EAAEN,EAAEK,EAAEW,EAAED,CAAC,EAAEA,EAAE,gBAAe,UAAW2K,GAAG1L,EAAEe,CAAC,EAAEV,EAAE,GAAG,GAAGoL,GAAG,QAAQzL,CAAC,EAAE,CAAC,KAAYM,IAAP,MAAU,CAAC,IAAIc,EAAEiG,GAAG/G,CAAC,EAAyD,GAAhDc,IAAP,MAAUwJ,GAAGxJ,CAAC,EAAEA,EAAE4K,GAAGhM,EAAEK,EAAEW,EAAED,CAAC,EAASK,IAAP,MAAUsL,GAAG1M,EAAEK,EAAEU,EAAE4L,GAAG3L,CAAC,EAAKI,IAAId,EAAE,MAAMA,EAAEc,CAAC,CAAQd,IAAP,MAAUS,EAAE,gBAAe,CAAE,MAAM2L,GAAG1M,EAAEK,EAAEU,EAAE,KAAKC,CAAC,CAAC,CAAC,CAAC,IAAI2L,GAAG,KACpU,SAASX,GAAGhM,EAAEK,EAAEW,EAAED,EAAE,CAAyB,GAAxB4L,GAAG,KAAK3M,EAAEgH,GAAGjG,CAAC,EAAEf,EAAE8L,GAAG9L,CAAC,EAAYA,IAAP,KAAS,GAAGK,EAAEmI,GAAGxI,CAAC,EAASK,IAAP,KAASL,EAAE,aAAagB,EAAEX,EAAE,IAASW,IAAL,GAAO,CAAS,GAARhB,EAAEyI,GAAGpI,CAAC,EAAYL,IAAP,KAAS,OAAOA,EAAEA,EAAE,IAAI,SAAagB,IAAJ,EAAM,CAAC,GAAGX,EAAE,UAAU,QAAQ,cAAc,aAAa,OAAWA,EAAE,MAAN,EAAUA,EAAE,UAAU,cAAc,KAAKL,EAAE,IAAI,MAAMK,IAAIL,IAAIA,EAAE,MAAM2M,UAAG3M,EAAS,IAAI,CAC7S,SAAS4M,GAAG5M,EAAE,CAAC,OAAOA,EAAC,CAAE,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,MAAO,GAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,MAAO,GACpqC,IAAK,UAAU,OAAOkJ,GAAI,GAAE,KAAKC,GAAG,MAAO,GAAE,KAAKC,GAAG,MAAO,GAAE,KAAKC,GAAG,KAAKC,GAAG,MAAO,IAAG,KAAKC,GAAG,MAAO,WAAU,QAAQ,MAAO,GAAE,CAAC,QAAQ,MAAO,GAAE,CAAC,CAAC,IAAIsD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,IAAI,CAAC,GAAGD,GAAG,OAAOA,GAAG,IAAI/M,EAAEK,EAAEyM,GAAG9L,EAAEX,EAAE,OAAOU,EAAET,EAAE,UAAUuM,GAAGA,GAAG,MAAMA,GAAG,YAAYzL,EAAEd,EAAE,OAAO,IAAIN,EAAE,EAAEA,EAAEgB,GAAGX,EAAEL,CAAC,IAAIM,EAAEN,CAAC,EAAEA,IAAI,CAAC,IAAImB,EAAEH,EAAEhB,EAAE,IAAIe,EAAE,EAAEA,GAAGI,GAAGd,EAAEW,EAAED,CAAC,IAAIT,EAAEc,EAAEL,CAAC,EAAEA,IAAI,CAAC,OAAOgM,GAAGzM,EAAE,MAAMN,EAAE,EAAEe,EAAE,EAAEA,EAAE,MAAM,CAAC,CACxY,SAASkM,GAAGjN,EAAE,CAAC,IAAIK,EAAEL,EAAE,QAAQ,mBAAaA,GAAGA,EAAEA,EAAE,SAAaA,IAAJ,GAAYK,IAAL,KAASL,EAAE,KAAKA,EAAEK,EAAOL,IAAL,KAASA,EAAE,IAAW,IAAIA,GAAQA,IAAL,GAAOA,EAAE,CAAC,CAAC,SAASkN,IAAI,CAAC,MAAM,EAAE,CAAC,SAASC,IAAI,CAAC,MAAM,EAAE,CAC5K,SAASC,GAAGpN,EAAE,CAAC,SAASK,EAAEA,EAAEU,EAAET,EAAEc,EAAED,EAAE,CAAC,KAAK,WAAWd,EAAE,KAAK,YAAYC,EAAE,KAAK,KAAKS,EAAE,KAAK,YAAYK,EAAE,KAAK,OAAOD,EAAE,KAAK,cAAc,KAAK,QAAQH,KAAKhB,EAAEA,EAAE,eAAegB,CAAC,IAAIX,EAAEL,EAAEgB,CAAC,EAAE,KAAKA,CAAC,EAAEX,EAAEA,EAAEe,CAAC,EAAEA,EAAEJ,CAAC,GAAG,YAAK,oBAA0BI,EAAE,kBAAR,KAAyBA,EAAE,iBAAsBA,EAAE,cAAP,IAAoB8L,GAAGC,GAAG,KAAK,qBAAqBA,GAAU,IAAI,CAACpN,UAAEM,EAAE,UAAU,CAAC,eAAe,UAAU,CAAC,KAAK,iBAAiB,GAAG,IAAIL,EAAE,KAAK,YAAYA,IAAIA,EAAE,eAAeA,EAAE,iBAA6B,OAAOA,EAAE,aAArB,YACxdA,EAAE,YAAY,IAAI,KAAK,mBAAmBkN,GAAG,EAAE,gBAAgB,UAAU,CAAC,IAAIlN,EAAE,KAAK,YAAYA,IAAIA,EAAE,gBAAgBA,EAAE,gBAAe,EAAe,OAAOA,EAAE,cAArB,YAAoCA,EAAE,aAAa,IAAI,KAAK,qBAAqBkN,GAAG,EAAE,QAAQ,UAAU,CAAE,EAAC,aAAaA,EAAE,CAAC,EAAS7M,CAAC,CACjR,IAAIgN,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,SAASrN,EAAE,CAAC,OAAOA,EAAE,WAAW,KAAK,KAAK,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAEsN,GAAGF,GAAGC,EAAE,EAAEE,GAAGxN,GAAE,GAAGsN,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAEG,GAAGJ,GAAGG,EAAE,EAAEE,GAAGC,GAAGC,GAAGC,GAAG7N,GAAE,GAAGwN,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiBM,GAAG,OAAO,EAAE,QAAQ,EAAE,cAAc,SAAS7N,EAAE,CAAC,OAAgBA,EAAE,gBAAX,OAAyBA,EAAE,cAAcA,EAAE,WAAWA,EAAE,UAAUA,EAAE,YAAYA,EAAE,aAAa,EAAE,UAAU,SAASA,EAAE,CAAC,MAAG,cAC3eA,EAASA,EAAE,WAAUA,IAAI2N,KAAKA,IAAkB3N,EAAE,OAAhB,aAAsByN,GAAGzN,EAAE,QAAQ2N,GAAG,QAAQD,GAAG1N,EAAE,QAAQ2N,GAAG,SAASD,GAAGD,GAAG,EAAEE,GAAG3N,GAAUyN,GAAE,EAAE,UAAU,SAASzN,EAAE,CAAC,MAAM,cAAcA,EAAEA,EAAE,UAAU0N,EAAE,CAAC,CAAC,EAAEI,GAAGV,GAAGQ,EAAE,EAAEG,GAAGhO,GAAE,CAAE,EAAC6N,GAAG,CAAC,aAAa,CAAC,CAAC,EAAEI,GAAGZ,GAAGW,EAAE,EAAEE,GAAGlO,GAAE,GAAGwN,GAAG,CAAC,cAAc,CAAC,CAAC,EAAEW,GAAGd,GAAGa,EAAE,EAAEE,GAAGpO,GAAE,CAAE,EAACsN,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,EAAEe,GAAGhB,GAAGe,EAAE,EAAEE,GAAGtO,GAAE,GAAGsN,GAAG,CAAC,cAAc,SAASrN,EAAE,CAAC,MAAM,kBAAkBA,EAAEA,EAAE,cAAc,OAAO,aAAa,CAAC,CAAC,EAAEsO,GAAGlB,GAAGiB,EAAE,EAAEE,GAAGxO,GAAE,CAAE,EAACsN,GAAG,CAAC,KAAK,CAAC,CAAC,EAAEmB,GAAGpB,GAAGmB,EAAE,EAAEE,GAAG,CAAC,IAAI,SACxf,SAAS,IAAI,KAAK,YAAY,GAAG,UAAU,MAAM,aAAa,KAAK,YAAY,IAAI,SAAS,IAAI,KAAK,KAAK,cAAc,KAAK,cAAc,OAAO,aAAa,gBAAgB,cAAc,EAAEC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,MAAM,EAAEC,GAAG,CAAC,IAAI,SAAS,QAAQ,UAAU,KAAK,UAAU,MAAM,UAAU,EAAE,SAASC,GAAG5O,EAAE,CAAC,IAAIK,EAAE,KAAK,YAAY,OAAOA,EAAE,iBAAiBA,EAAE,iBAAiBL,CAAC,GAAGA,EAAE2O,GAAG3O,CAAC,GAAG,CAAC,CAACK,EAAEL,CAAC,EAAE,EAAE,CAAC,SAAS6N,IAAI,CAAC,OAAOe,EAAE,CAChS,IAAIC,GAAG9O,GAAE,CAAE,EAACwN,GAAG,CAAC,IAAI,SAASvN,EAAE,CAAC,GAAGA,EAAE,IAAI,CAAC,IAAIK,EAAEoO,GAAGzO,EAAE,GAAG,GAAGA,EAAE,IAAI,GAAoBK,IAAjB,eAAmB,OAAOA,CAAC,CAAC,OAAmBL,EAAE,OAAf,YAAqBA,EAAEiN,GAAGjN,CAAC,EAAOA,IAAL,GAAO,QAAQ,OAAO,aAAaA,CAAC,GAAeA,EAAE,OAAd,WAA8BA,EAAE,OAAZ,QAAiB0O,GAAG1O,EAAE,OAAO,GAAG,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB6N,GAAG,SAAS,SAAS7N,EAAE,CAAC,OAAmBA,EAAE,OAAf,WAAoBiN,GAAGjN,CAAC,EAAE,CAAC,EAAE,QAAQ,SAASA,EAAE,CAAC,OAAkBA,EAAE,OAAd,WAA8BA,EAAE,OAAZ,QAAiBA,EAAE,QAAQ,CAAC,EAAE,MAAM,SAASA,EAAE,CAAC,OACveA,EAAE,OAD2e,WACteiN,GAAGjN,CAAC,EAAcA,EAAE,OAAd,WAA8BA,EAAE,OAAZ,QAAiBA,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE8O,GAAG1B,GAAGyB,EAAE,EAAEE,GAAGhP,GAAE,CAAE,EAAC6N,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,EAAEoB,GAAG5B,GAAG2B,EAAE,EAAEE,GAAGlP,GAAE,CAAE,EAACwN,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiBM,EAAE,CAAC,EAAEqB,GAAG9B,GAAG6B,EAAE,EAAEE,GAAGpP,GAAE,CAAE,EAACsN,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,EAAE+B,GAAGhC,GAAG+B,EAAE,EAAEE,GAAGtP,GAAE,GAAG6N,GAAG,CAAC,OAAO,SAAS5N,EAAE,CAAC,MAAM,WAAWA,EAAEA,EAAE,OAAO,gBAAgBA,EAAE,CAACA,EAAE,YAAY,CAAC,EACnf,OAAO,SAASA,EAAE,CAAC,MAAM,WAAWA,EAAEA,EAAE,OAAO,gBAAgBA,EAAE,CAACA,EAAE,YAAY,eAAeA,EAAE,CAACA,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,EAAEsP,GAAGlC,GAAGiC,EAAE,EAAEE,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAEC,GAAGzM,IAAI,qBAAqB,OAAO0M,GAAG,KAAK1M,IAAI,iBAAiB,WAAW0M,GAAG,SAAS,cAAc,IAAIC,GAAG3M,IAAI,cAAc,QAAQ,CAAC0M,GAAGE,GAAG5M,KAAK,CAACyM,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIG,GAAG,IAAwBC,GAAG,GAC1W,SAASC,GAAG9P,EAAEK,EAAE,CAAC,OAAOL,GAAG,IAAK,QAAQ,OAAWuP,GAAG,QAAQlP,EAAE,OAAO,IAAzB,GAA2B,IAAK,UAAU,OAAaA,EAAE,UAAR,IAAgB,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,MAAM,GAAG,QAAQ,MAAM,EAAE,CAAC,CAAC,SAAS0P,GAAG/P,EAAE,CAAC,OAAAA,EAAEA,EAAE,OAAwB,OAAOA,GAAlB,UAAqB,SAASA,EAAEA,EAAE,KAAK,IAAI,CAAC,IAAIgQ,GAAG,GAAG,SAASC,GAAGjQ,EAAEK,EAAE,CAAC,OAAOL,EAAG,KAAK,iBAAiB,OAAO+P,GAAG1P,CAAC,EAAE,IAAK,WAAW,OAAQA,EAAE,QAAP,GAAoB,MAAKwP,GAAG,GAAUD,IAAG,IAAK,YAAY,OAAO5P,EAAEK,EAAE,KAAKL,IAAI4P,IAAIC,GAAG,KAAK7P,EAAE,QAAQ,OAAO,IAAI,CAAC,CACld,SAASkQ,GAAGlQ,EAAEK,EAAE,CAAC,GAAG2P,GAAG,OAAyBhQ,IAAnB,kBAAsB,CAACwP,IAAIM,GAAG9P,EAAEK,CAAC,GAAGL,EAAEgN,GAAE,EAAGD,GAAGD,GAAGD,GAAG,KAAKmD,GAAG,GAAGhQ,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAQ,OAAO,KAAK,IAAK,WAAW,GAAG,EAAEK,EAAE,SAASA,EAAE,QAAQA,EAAE,UAAUA,EAAE,SAASA,EAAE,OAAO,CAAC,GAAGA,EAAE,MAAM,EAAEA,EAAE,KAAK,OAAO,OAAOA,EAAE,KAAK,GAAGA,EAAE,MAAM,OAAO,OAAO,aAAaA,EAAE,KAAK,CAAC,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAOsP,IAAWtP,EAAE,SAAT,KAAgB,KAAKA,EAAE,KAAK,QAAQ,OAAO,IAAI,CAAC,CACvY,IAAI8P,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE,SAASC,GAAGpQ,EAAE,CAAC,IAAIK,EAAEL,GAAGA,EAAE,UAAUA,EAAE,SAAS,YAAa,EAAC,OAAgBK,IAAV,QAAY,CAAC,CAAC8P,GAAGnQ,EAAE,IAAI,EAAeK,IAAb,UAAoB,CAAC,SAASgQ,GAAGrQ,EAAEK,EAAEW,EAAED,EAAE,CAACwG,GAAGxG,CAAC,EAAEV,EAAEiQ,GAAGjQ,EAAE,UAAU,EAAE,EAAEA,EAAE,SAASW,EAAE,IAAIsM,GAAG,WAAW,SAAS,KAAKtM,EAAED,CAAC,EAAEf,EAAE,KAAK,CAAC,MAAMgB,EAAE,UAAUX,CAAC,CAAC,EAAE,CAAC,IAAIkQ,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGzQ,EAAE,CAAC0Q,GAAG1Q,EAAE,CAAC,CAAC,CAAC,SAAS2Q,GAAG3Q,EAAE,CAAC,IAAIK,EAAEuQ,GAAG5Q,CAAC,EAAE,GAAGqF,GAAGhF,CAAC,EAAE,OAAOL,CAAC,CACpe,SAAS6Q,GAAG7Q,EAAEK,EAAE,CAAC,GAAcL,IAAX,SAAa,OAAOK,CAAC,CAAC,IAAIyQ,GAAG,GAAG,GAAG/N,GAAG,CAAC,IAAIgO,GAAG,GAAGhO,GAAG,CAAC,IAAIiO,GAAG,YAAY,SAAS,GAAG,CAACA,GAAG,CAAC,IAAIC,GAAG,SAAS,cAAc,KAAK,EAAEA,GAAG,aAAa,UAAU,SAAS,EAAED,GAAgB,OAAOC,GAAG,SAAvB,UAA8B,CAACF,GAAGC,EAAE,MAAMD,GAAG,GAAGD,GAAGC,KAAK,CAAC,SAAS,cAAc,EAAE,SAAS,aAAa,CAAC,SAASG,IAAI,CAACX,KAAKA,GAAG,YAAY,mBAAmBY,EAAE,EAAEX,GAAGD,GAAG,KAAK,CAAC,SAASY,GAAGnR,EAAE,CAAC,GAAaA,EAAE,eAAZ,SAA0B2Q,GAAGH,EAAE,EAAE,CAAC,IAAInQ,EAAE,GAAGgQ,GAAGhQ,EAAEmQ,GAAGxQ,EAAEgH,GAAGhH,CAAC,CAAC,EAAE4H,GAAG6I,GAAGpQ,CAAC,CAAC,CAAC,CAC/b,SAAS+Q,GAAGpR,EAAEK,EAAEW,EAAE,CAAahB,IAAZ,WAAekR,GAAE,EAAGX,GAAGlQ,EAAEmQ,GAAGxP,EAAEuP,GAAG,YAAY,mBAAmBY,EAAE,GAAgBnR,IAAb,YAAgBkR,GAAI,EAAC,SAASG,GAAGrR,EAAE,CAAC,GAAuBA,IAApB,mBAAiCA,IAAV,SAAyBA,IAAZ,UAAc,OAAO2Q,GAAGH,EAAE,CAAC,CAAC,SAASc,GAAGtR,EAAEK,EAAE,CAAC,GAAaL,IAAV,QAAY,OAAO2Q,GAAGtQ,CAAC,CAAC,CAAC,SAASkR,GAAGvR,EAAEK,EAAE,CAAC,GAAaL,IAAV,SAAwBA,IAAX,SAAa,OAAO2Q,GAAGtQ,CAAC,CAAC,CAAC,SAASmR,GAAGxR,EAAEK,EAAE,CAAC,OAAOL,IAAIK,IAAQL,IAAJ,GAAO,EAAEA,IAAI,EAAEK,IAAIL,IAAIA,GAAGK,IAAIA,CAAC,CAAC,IAAIoR,GAAgB,OAAO,OAAO,IAA3B,WAA8B,OAAO,GAAGD,GACtZ,SAASE,GAAG1R,EAAEK,EAAE,CAAC,GAAGoR,GAAGzR,EAAEK,CAAC,EAAE,MAAM,GAAG,GAAc,OAAOL,GAAlB,UAA4BA,IAAP,MAAqB,OAAOK,GAAlB,UAA4BA,IAAP,KAAS,MAAM,GAAG,IAAIW,EAAE,OAAO,KAAKhB,CAAC,EAAEe,EAAE,OAAO,KAAKV,CAAC,EAAE,GAAGW,EAAE,SAASD,EAAE,OAAO,MAAM,GAAG,IAAIA,EAAE,EAAEA,EAAEC,EAAE,OAAOD,IAAI,CAAC,IAAIT,EAAEU,EAAED,CAAC,EAAE,GAAG,CAACiC,GAAG,KAAK3C,EAAEC,CAAC,GAAG,CAACmR,GAAGzR,EAAEM,CAAC,EAAED,EAAEC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,SAASqR,GAAG3R,EAAE,CAAC,KAAKA,GAAGA,EAAE,YAAYA,EAAEA,EAAE,WAAW,OAAOA,CAAC,CACtU,SAAS4R,GAAG5R,EAAEK,EAAE,CAAC,IAAIW,EAAE2Q,GAAG3R,CAAC,EAAEA,EAAE,EAAE,QAAQe,EAAEC,GAAG,CAAC,GAAOA,EAAE,WAAN,EAAe,CAA0B,GAAzBD,EAAEf,EAAEgB,EAAE,YAAY,OAAUhB,GAAGK,GAAGU,GAAGV,EAAE,MAAM,CAAC,KAAKW,EAAE,OAAOX,EAAEL,CAAC,EAAEA,EAAEe,CAAC,CAACf,EAAE,CAAC,KAAKgB,GAAG,CAAC,GAAGA,EAAE,YAAY,CAACA,EAAEA,EAAE,YAAY,MAAMhB,CAAC,CAACgB,EAAEA,EAAE,UAAU,CAACA,EAAE,MAAM,CAACA,EAAE2Q,GAAG3Q,CAAC,CAAC,CAAC,CAAC,SAAS6Q,GAAG7R,EAAEK,EAAE,CAAC,OAAOL,GAAGK,EAAEL,IAAIK,EAAE,GAAGL,GAAOA,EAAE,WAAN,EAAe,GAAGK,GAAOA,EAAE,WAAN,EAAewR,GAAG7R,EAAEK,EAAE,UAAU,EAAE,aAAaL,EAAEA,EAAE,SAASK,CAAC,EAAEL,EAAE,wBAAwB,CAAC,EAAEA,EAAE,wBAAwBK,CAAC,EAAE,IAAI,GAAG,EAAE,CAC9Z,SAASyR,IAAI,CAAC,QAAQ9R,EAAE,OAAOK,EAAEiF,KAAKjF,aAAaL,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAIgB,EAAa,OAAOX,EAAE,cAAc,SAAS,MAA3C,QAA+C,MAAS,CAACW,EAAE,EAAE,CAAC,GAAGA,EAAEhB,EAAEK,EAAE,kBAAmB,OAAMA,EAAEiF,GAAGtF,EAAE,QAAQ,CAAC,CAAC,OAAOK,CAAC,CAAC,SAAS0R,GAAG/R,EAAE,CAAC,IAAIK,EAAEL,GAAGA,EAAE,UAAUA,EAAE,SAAS,YAAa,EAAC,OAAOK,IAAcA,IAAV,UAAuBL,EAAE,OAAX,QAA4BA,EAAE,OAAb,UAA2BA,EAAE,OAAV,OAAwBA,EAAE,OAAV,OAA6BA,EAAE,OAAf,aAAmCK,IAAb,YAAyBL,EAAE,kBAAX,OAA2B,CACxa,SAASgS,GAAGhS,EAAE,CAAC,IAAIK,EAAEyR,GAAI,EAAC9Q,EAAEhB,EAAE,YAAYe,EAAEf,EAAE,eAAe,GAAGK,IAAIW,GAAGA,GAAGA,EAAE,eAAe6Q,GAAG7Q,EAAE,cAAc,gBAAgBA,CAAC,EAAE,CAAC,GAAUD,IAAP,MAAUgR,GAAG/Q,CAAC,GAAE,GAAGX,EAAEU,EAAE,MAAMf,EAAEe,EAAE,IAAaf,IAAT,SAAaA,EAAEK,GAAG,mBAAmBW,EAAEA,EAAE,eAAeX,EAAEW,EAAE,aAAa,KAAK,IAAIhB,EAAEgB,EAAE,MAAM,MAAM,UAAUhB,GAAGK,EAAEW,EAAE,eAAe,WAAWX,EAAE,aAAa,OAAOL,EAAE,aAAa,CAACA,EAAEA,EAAE,eAAe,IAAIM,EAAEU,EAAE,YAAY,OAAOI,EAAE,KAAK,IAAIL,EAAE,MAAMT,CAAC,EAAES,EAAWA,EAAE,MAAX,OAAeK,EAAE,KAAK,IAAIL,EAAE,IAAIT,CAAC,EAAE,CAACN,EAAE,QAAQoB,EAAEL,IAAIT,EAAES,EAAEA,EAAEK,EAAEA,EAAEd,GAAGA,EAAEsR,GAAG5Q,EAAEI,CAAC,EAAE,IAAID,EAAEyQ,GAAG5Q,EACvfD,CAAC,EAAET,GAAGa,IAAQnB,EAAE,aAAN,GAAkBA,EAAE,aAAaM,EAAE,MAAMN,EAAE,eAAeM,EAAE,QAAQN,EAAE,YAAYmB,EAAE,MAAMnB,EAAE,cAAcmB,EAAE,UAAUd,EAAEA,EAAE,YAAa,EAACA,EAAE,SAASC,EAAE,KAAKA,EAAE,MAAM,EAAEN,EAAE,gBAAiB,EAACoB,EAAEL,GAAGf,EAAE,SAASK,CAAC,EAAEL,EAAE,OAAOmB,EAAE,KAAKA,EAAE,MAAM,IAAId,EAAE,OAAOc,EAAE,KAAKA,EAAE,MAAM,EAAEnB,EAAE,SAASK,CAAC,GAAG,EAAM,IAALA,EAAE,GAAOL,EAAEgB,EAAEhB,EAAEA,EAAE,YAAgBA,EAAE,WAAN,GAAgBK,EAAE,KAAK,CAAC,QAAQL,EAAE,KAAKA,EAAE,WAAW,IAAIA,EAAE,SAAS,CAAC,EAAyC,IAA1B,OAAOgB,EAAE,OAAtB,YAA6BA,EAAE,MAAK,EAAOA,EAAE,EAAEA,EAAEX,EAAE,OAAOW,IAAIhB,EAAEK,EAAEW,CAAC,EAAEhB,EAAE,QAAQ,WAAWA,EAAE,KAAKA,EAAE,QAAQ,UAAUA,EAAE,GAAG,CAAC,CACzf,IAAIiS,GAAGlP,IAAI,iBAAiB,UAAU,IAAI,SAAS,aAAamP,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,GAC3F,SAASC,GAAGtS,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEC,EAAE,SAASA,EAAEA,EAAE,SAAaA,EAAE,WAAN,EAAeA,EAAEA,EAAE,cAAcqR,IAAUH,IAAN,MAAUA,KAAK5M,GAAGvE,CAAC,IAAIA,EAAEmR,GAAG,mBAAmBnR,GAAGgR,GAAGhR,CAAC,EAAEA,EAAE,CAAC,MAAMA,EAAE,eAAe,IAAIA,EAAE,YAAY,GAAGA,GAAGA,EAAE,eAAeA,EAAE,cAAc,aAAa,QAAQ,aAAY,EAAGA,EAAE,CAAC,WAAWA,EAAE,WAAW,aAAaA,EAAE,aAAa,UAAUA,EAAE,UAAU,YAAYA,EAAE,WAAW,GAAGqR,IAAIV,GAAGU,GAAGrR,CAAC,IAAIqR,GAAGrR,EAAEA,EAAEuP,GAAG6B,GAAG,UAAU,EAAE,EAAEpR,EAAE,SAASV,EAAE,IAAIiN,GAAG,WAAW,SAAS,KAAKjN,EAAEW,CAAC,EAAEhB,EAAE,KAAK,CAAC,MAAMK,EAAE,UAAUU,CAAC,CAAC,EAAEV,EAAE,OAAO6R,KAAK,CACtf,SAASK,GAAGvS,EAAEK,EAAE,CAAC,IAAIW,EAAE,GAAG,OAAAA,EAAEhB,EAAE,YAAa,GAAEK,EAAE,cAAcW,EAAE,SAAShB,CAAC,EAAE,SAASK,EAAEW,EAAE,MAAMhB,CAAC,EAAE,MAAMK,EAASW,CAAC,CAAC,IAAIwR,GAAG,CAAC,aAAaD,GAAG,YAAY,cAAc,EAAE,mBAAmBA,GAAG,YAAY,oBAAoB,EAAE,eAAeA,GAAG,YAAY,gBAAgB,EAAE,cAAcA,GAAG,aAAa,eAAe,CAAC,EAAEE,GAAG,GAAGC,GAAG,GACvU3P,KAAK2P,GAAG,SAAS,cAAc,KAAK,EAAE,MAAM,mBAAmB,SAAS,OAAOF,GAAG,aAAa,UAAU,OAAOA,GAAG,mBAAmB,UAAU,OAAOA,GAAG,eAAe,WAAW,oBAAoB,QAAQ,OAAOA,GAAG,cAAc,YAAY,SAASG,GAAG3S,EAAE,CAAC,GAAGyS,GAAGzS,CAAC,EAAE,OAAOyS,GAAGzS,CAAC,EAAE,GAAG,CAACwS,GAAGxS,CAAC,EAAE,OAAOA,EAAE,IAAIK,EAAEmS,GAAGxS,CAAC,EAAEgB,EAAE,IAAIA,KAAKX,EAAE,GAAGA,EAAE,eAAeW,CAAC,GAAGA,KAAK0R,GAAG,OAAOD,GAAGzS,CAAC,EAAEK,EAAEW,CAAC,EAAE,OAAOhB,CAAC,CAAC,IAAI4S,GAAGD,GAAG,cAAc,EAAEE,GAAGF,GAAG,oBAAoB,EAAEG,GAAGH,GAAG,gBAAgB,EAAEI,GAAGJ,GAAG,eAAe,EAAEK,GAAG,IAAI,IAAIC,GAAG,smBAAsmB,MAAM,GAAG,EAClmC,SAASC,GAAGlT,EAAEK,EAAE,CAAC2S,GAAG,IAAIhT,EAAEK,CAAC,EAAEwC,GAAGxC,EAAE,CAACL,CAAC,CAAC,CAAC,CAAC,QAAQmT,GAAG,EAAEA,GAAGF,GAAG,OAAOE,KAAK,CAAC,IAAIC,GAAGH,GAAGE,EAAE,EAAEE,GAAGD,GAAG,cAAcE,GAAGF,GAAG,CAAC,EAAE,YAAW,EAAGA,GAAG,MAAM,CAAC,EAAEF,GAAGG,GAAG,KAAKC,EAAE,CAAC,CAACJ,GAAGN,GAAG,gBAAgB,EAAEM,GAAGL,GAAG,sBAAsB,EAAEK,GAAGJ,GAAG,kBAAkB,EAAEI,GAAG,WAAW,eAAe,EAAEA,GAAG,UAAU,SAAS,EAAEA,GAAG,WAAW,QAAQ,EAAEA,GAAGH,GAAG,iBAAiB,EAAEjQ,GAAG,eAAe,CAAC,WAAW,WAAW,CAAC,EAAEA,GAAG,eAAe,CAAC,WAAW,WAAW,CAAC,EAAEA,GAAG,iBAAiB,CAAC,aAAa,aAAa,CAAC,EAC3dA,GAAG,iBAAiB,CAAC,aAAa,aAAa,CAAC,EAAED,GAAG,WAAW,oEAAoE,MAAM,GAAG,CAAC,EAAEA,GAAG,WAAW,uFAAuF,MAAM,GAAG,CAAC,EAAEA,GAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,OAAO,CAAC,EAAEA,GAAG,mBAAmB,2DAA2D,MAAM,GAAG,CAAC,EAAEA,GAAG,qBAAqB,6DAA6D,MAAM,GAAG,CAAC,EACngBA,GAAG,sBAAsB,8DAA8D,MAAM,GAAG,CAAC,EAAE,IAAI0Q,GAAG,6NAA6N,MAAM,GAAG,EAAEC,GAAG,IAAI,IAAI,0CAA0C,MAAM,GAAG,EAAE,OAAOD,EAAE,CAAC,EAC5Z,SAASE,GAAGzT,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,MAAM,gBAAgBA,EAAE,cAAcgB,EAAEuH,GAAGxH,EAAEV,EAAE,OAAOL,CAAC,EAAEA,EAAE,cAAc,IAAI,CACxG,SAAS0Q,GAAG1Q,EAAEK,EAAE,CAACA,GAAOA,EAAE,KAAP,EAAU,QAAQW,EAAE,EAAEA,EAAEhB,EAAE,OAAOgB,IAAI,CAAC,IAAID,EAAEf,EAAEgB,CAAC,EAAEV,EAAES,EAAE,MAAMA,EAAEA,EAAE,UAAUf,EAAE,CAAC,IAAIoB,EAAE,OAAO,GAAGf,EAAE,QAAQc,EAAEJ,EAAE,OAAO,EAAE,GAAGI,EAAEA,IAAI,CAAC,IAAID,EAAEH,EAAEI,CAAC,EAAEF,EAAEC,EAAE,SAAS/B,EAAE+B,EAAE,cAA2B,GAAbA,EAAEA,EAAE,SAAYD,IAAIG,GAAGd,EAAE,qBAAsB,EAAC,MAAMN,EAAEyT,GAAGnT,EAAEY,EAAE/B,CAAC,EAAEiC,EAAEH,CAAC,KAAM,KAAIE,EAAE,EAAEA,EAAEJ,EAAE,OAAOI,IAAI,CAAoD,GAAnDD,EAAEH,EAAEI,CAAC,EAAEF,EAAEC,EAAE,SAAS/B,EAAE+B,EAAE,cAAcA,EAAEA,EAAE,SAAYD,IAAIG,GAAGd,EAAE,qBAAoB,EAAG,MAAMN,EAAEyT,GAAGnT,EAAEY,EAAE/B,CAAC,EAAEiC,EAAEH,CAAC,CAAC,CAAC,CAAC,GAAGkH,GAAG,MAAMnI,EAAEoI,GAAGD,GAAG,GAAGC,GAAG,KAAKpI,CAAE,CAC5a,SAASG,GAAEH,EAAEK,EAAE,CAAC,IAAIW,EAAEX,EAAEqT,EAAE,EAAW1S,IAAT,SAAaA,EAAEX,EAAEqT,EAAE,EAAE,IAAI,KAAK,IAAI3S,EAAEf,EAAE,WAAWgB,EAAE,IAAID,CAAC,IAAI4S,GAAGtT,EAAEL,EAAE,EAAE,EAAE,EAAEgB,EAAE,IAAID,CAAC,EAAE,CAAC,SAAS6S,GAAG5T,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAE,EAAEV,IAAIU,GAAG,GAAG4S,GAAG3S,EAAEhB,EAAEe,EAAEV,CAAC,CAAC,CAAC,IAAIwT,GAAG,kBAAkB,KAAK,OAAQ,EAAC,SAAS,EAAE,EAAE,MAAM,CAAC,EAAE,SAASC,GAAG9T,EAAE,CAAC,GAAG,CAACA,EAAE6T,EAAE,EAAE,CAAC7T,EAAE6T,EAAE,EAAE,GAAGlR,GAAG,QAAQ,SAAStC,EAAE,CAAqBA,IAApB,oBAAwBmT,GAAG,IAAInT,CAAC,GAAGuT,GAAGvT,EAAE,GAAGL,CAAC,EAAE4T,GAAGvT,EAAE,GAAGL,CAAC,EAAE,CAAC,EAAE,IAAIK,EAAML,EAAE,WAAN,EAAeA,EAAEA,EAAE,cAAqBK,IAAP,MAAUA,EAAEwT,EAAE,IAAIxT,EAAEwT,EAAE,EAAE,GAAGD,GAAG,kBAAkB,GAAGvT,CAAC,EAAE,CAAC,CACjb,SAASsT,GAAG3T,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAO6L,GAAGvM,CAAC,EAAC,CAAE,IAAK,GAAE,IAAIC,EAAEiM,GAAG,MAAM,IAAK,GAAEjM,EAAEmM,GAAG,MAAM,QAAQnM,EAAEkM,EAAE,CAACxL,EAAEV,EAAE,KAAK,KAAKD,EAAEW,EAAEhB,CAAC,EAAEM,EAAE,OAAO,CAACwH,IAAmBzH,IAAf,cAAgCA,IAAd,aAA2BA,IAAV,UAAcC,EAAE,IAAIS,EAAWT,IAAT,OAAWN,EAAE,iBAAiBK,EAAEW,EAAE,CAAC,QAAQ,GAAG,QAAQV,CAAC,CAAC,EAAEN,EAAE,iBAAiBK,EAAEW,EAAE,EAAE,EAAWV,IAAT,OAAWN,EAAE,iBAAiBK,EAAEW,EAAE,CAAC,QAAQV,CAAC,CAAC,EAAEN,EAAE,iBAAiBK,EAAEW,EAAE,EAAE,CAAC,CAClV,SAAS0L,GAAG1M,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,IAAIc,EAAEL,EAAE,GAAQ,EAAAV,EAAE,IAAS,EAAAA,EAAE,IAAWU,IAAP,KAASf,EAAE,OAAO,CAAC,GAAUe,IAAP,KAAS,OAAO,IAAII,EAAEJ,EAAE,IAAI,GAAOI,IAAJ,GAAWA,IAAJ,EAAM,CAAC,IAAID,EAAEH,EAAE,UAAU,cAAc,GAAGG,IAAIZ,GAAOY,EAAE,WAAN,GAAgBA,EAAE,aAAaZ,EAAE,MAAM,GAAOa,IAAJ,EAAM,IAAIA,EAAEJ,EAAE,OAAcI,IAAP,MAAU,CAAC,IAAIF,EAAEE,EAAE,IAAI,IAAOF,IAAJ,GAAWA,IAAJ,KAASA,EAAEE,EAAE,UAAU,cAAcF,IAAIX,GAAOW,EAAE,WAAN,GAAgBA,EAAE,aAAaX,GAAE,OAAOa,EAAEA,EAAE,MAAM,CAAC,KAAYD,IAAP,MAAU,CAAS,GAARC,EAAE2K,GAAG5K,CAAC,EAAYC,IAAP,KAAS,OAAe,GAARF,EAAEE,EAAE,IAAWF,IAAJ,GAAWA,IAAJ,EAAM,CAACF,EAAEK,EAAED,EAAE,SAASnB,CAAC,CAACkB,EAAEA,EAAE,UAAU,CAAC,CAACH,EAAEA,EAAE,MAAM,CAAC6G,GAAG,UAAU,CAAC,IAAI7G,EAAEK,EAAEd,EAAE0G,GAAGhG,CAAC,EAAEG,EAAE,GACpfnB,EAAE,CAAC,IAAIkB,EAAE8R,GAAG,IAAIhT,CAAC,EAAE,GAAYkB,IAAT,OAAW,CAAC,IAAID,EAAEqM,GAAGlO,EAAEY,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAOiN,GAAGjM,CAAC,IAAR,EAAU,MAAMhB,EAAE,IAAK,UAAU,IAAK,QAAQiB,EAAE6N,GAAG,MAAM,IAAK,UAAU1P,EAAE,QAAQ6B,EAAEiN,GAAG,MAAM,IAAK,WAAW9O,EAAE,OAAO6B,EAAEiN,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYjN,EAAEiN,GAAG,MAAM,IAAK,QAAQ,GAAOlN,EAAE,SAAN,EAAa,MAAMhB,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAciB,EAAE6M,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO7M,EAC1iB+M,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAa/M,EAAEiO,GAAG,MAAM,KAAK0D,GAAG,KAAKC,GAAG,KAAKC,GAAG7R,EAAEmN,GAAG,MAAM,KAAK2E,GAAG9R,EAAEmO,GAAG,MAAM,IAAK,SAASnO,EAAEuM,GAAG,MAAM,IAAK,QAAQvM,EAAEqO,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQrO,EAAEqN,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYrN,EAAE+N,EAAE,CAAC,IAAIxP,GAAOa,EAAE,KAAP,EAAUM,EAAE,CAACnB,GAAcQ,IAAX,SAAaJ,EAAEJ,EAAS0B,IAAP,KAASA,EAAE,UAAU,KAAKA,EAAE1B,EAAE,CAAE,EAAC,QAAQG,EAAEoB,EAAEtB,EAC7eE,IAD+e,MAC5e,CAACF,EAAEE,EAAE,IAAIY,EAAEd,EAAE,UAAsF,GAAxEA,EAAE,MAAN,GAAkBc,IAAP,OAAWd,EAAEc,EAASX,IAAP,OAAWW,EAAEsH,GAAGlI,EAAEC,CAAC,EAAQW,GAAN,MAASf,EAAE,KAAKuU,GAAGpU,EAAEY,EAAEd,CAAC,CAAC,IAAOkB,EAAE,MAAMhB,EAAEA,EAAE,MAAM,CAAC,EAAEH,EAAE,SAAS0B,EAAE,IAAID,EAAEC,EAAE9B,EAAE,KAAK4B,EAAEV,CAAC,EAAEa,EAAE,KAAK,CAAC,MAAMD,EAAE,UAAU1B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAQ,EAAAa,EAAE,GAAG,CAACL,EAAE,CAAyE,GAAxEkB,EAAgBlB,IAAd,aAAiCA,IAAhB,cAAkBiB,EAAejB,IAAb,YAA+BA,IAAf,aAAoBkB,GAAGF,IAAI+F,KAAK3H,EAAE4B,EAAE,eAAeA,EAAE,eAAe8K,GAAG1M,CAAC,GAAGA,EAAE4U,EAAE,GAAG,MAAMhU,EAAE,IAAGiB,GAAGC,KAAGA,EAAEZ,EAAE,SAASA,EAAEA,GAAGY,EAAEZ,EAAE,eAAeY,EAAE,aAAaA,EAAE,aAAa,OAAUD,GAAM7B,EAAE4B,EAAE,eAAeA,EAAE,UAAUC,EAAEF,EAAE3B,EAAEA,EAAE0M,GAAG1M,CAAC,EAAE,KAC1eA,IAD+e,OAC3euB,EAAE6H,GAAGpJ,CAAC,EAAEA,IAAIuB,GAAOvB,EAAE,MAAN,GAAeA,EAAE,MAAN,KAAWA,EAAE,QAAU6B,EAAE,KAAK7B,EAAE2B,GAAKE,IAAI7B,GAAE,CAAgU,GAA/TI,EAAEsO,GAAGvN,EAAE,eAAeX,EAAE,eAAeD,EAAE,SAA0BK,IAAf,cAAkCA,IAAhB,iBAAkBR,EAAEwP,GAAGzO,EAAE,iBAAiBX,EAAE,iBAAiBD,EAAE,WAAUgB,EAAQM,GAAN,KAAQC,EAAE0P,GAAG3P,CAAC,EAAExB,EAAQL,GAAN,KAAQ8B,EAAE0P,GAAGxR,CAAC,EAAE8B,EAAE,IAAI1B,EAAEe,EAAEZ,EAAE,QAAQsB,EAAED,EAAEV,CAAC,EAAEY,EAAE,OAAOP,EAAEO,EAAE,cAAczB,EAAEc,EAAE,KAAKuL,GAAGxL,CAAC,IAAIS,IAAIvB,EAAE,IAAIA,EAAEI,EAAED,EAAE,QAAQP,EAAE4B,EAAEV,CAAC,EAAEd,EAAE,OAAOC,EAAED,EAAE,cAAcmB,EAAEJ,EAAEf,GAAGmB,EAAEJ,EAAKU,GAAG7B,EAAEiB,EAAE,CAAa,IAAZb,EAAEyB,EAAErB,EAAER,EAAEO,EAAE,EAAMF,EAAED,EAAEC,EAAEA,EAAEwU,GAAGxU,CAAC,EAAEE,IAAQ,IAAJF,EAAE,EAAMc,EAAEX,EAAEW,EAAEA,EAAE0T,GAAG1T,CAAC,EAAEd,IAAI,KAAK,EAAEE,EAAEF,GAAGD,EAAEyU,GAAGzU,CAAC,EAAEG,IAAI,KAAK,EAAEF,EAAEE,GAAGC,EACpfqU,GAAGrU,CAAC,EAAEH,IAAI,KAAKE,KAAK,CAAC,GAAGH,IAAII,GAAUA,IAAP,MAAUJ,IAAII,EAAE,UAAU,MAAMS,EAAEb,EAAEyU,GAAGzU,CAAC,EAAEI,EAAEqU,GAAGrU,CAAC,CAAC,CAACJ,EAAE,IAAI,MAAMA,EAAE,KAAYyB,IAAP,MAAUiT,GAAG/S,EAAED,EAAED,EAAEzB,EAAE,EAAE,EAASJ,IAAP,MAAiBuB,IAAP,MAAUuT,GAAG/S,EAAER,EAAEvB,EAAEI,EAAE,EAAE,CAAC,CAAE,CAACQ,EAAE,CAAyD,GAAxDkB,EAAEH,EAAE6P,GAAG7P,CAAC,EAAE,OAAOE,EAAEC,EAAE,UAAUA,EAAE,SAAS,YAAa,EAAeD,IAAX,UAAwBA,IAAV,SAAsBC,EAAE,OAAX,OAAgB,IAAIiT,EAAGtD,WAAWT,GAAGlP,CAAC,EAAE,GAAG4P,GAAGqD,EAAG5C,OAAO,CAAC4C,EAAG9C,GAAG,IAAI+C,EAAGhD,EAAE,MAAMnQ,EAAEC,EAAE,WAAqBD,EAAE,YAAW,IAAvB,UAAyCC,EAAE,OAAf,YAA+BA,EAAE,OAAZ,WAAoBiT,EAAG7C,IAAI,GAAG6C,IAAKA,EAAGA,EAAGnU,EAAEe,CAAC,GAAG,CAACsP,GAAGlP,EAAEgT,EAAGnT,EAAEV,CAAC,EAAE,MAAMN,CAAC,CAACoU,GAAIA,EAAGpU,EAAEkB,EAAEH,CAAC,EAAef,IAAb,aAAiBoU,EAAGlT,EAAE,gBAClfkT,EAAG,YAAuBlT,EAAE,OAAb,UAAmByE,GAAGzE,EAAE,SAASA,EAAE,KAAK,CAAC,CAAmB,OAAlBkT,EAAGrT,EAAE6P,GAAG7P,CAAC,EAAE,OAAcf,EAAG,KAAK,WAAaoQ,GAAGgE,CAAE,GAAYA,EAAG,kBAAZ,UAA4BlC,GAAGkC,EAAGjC,GAAGpR,EAAEqR,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,GAAG,GAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,GAAG,GAAGC,GAAGnR,EAAEH,EAAEV,CAAC,EAAE,MAAM,IAAK,kBAAkB,GAAG2R,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGnR,EAAEH,EAAEV,CAAC,CAAC,CAAC,IAAI+T,EAAG,GAAG7E,GAAGnP,EAAE,CAAC,OAAOL,EAAC,CAAE,IAAK,mBAAmB,IAAIsU,EAAG,qBAAqB,MAAMjU,EAAE,IAAK,iBAAiBiU,EAAG,mBACpe,MAAMjU,EAAE,IAAK,oBAAoBiU,EAAG,sBAAsB,MAAMjU,CAAC,CAACiU,EAAG,MAAM,MAAMtE,GAAGF,GAAG9P,EAAEgB,CAAC,IAAIsT,EAAG,oBAAgCtU,IAAZ,WAAqBgB,EAAE,UAAR,MAAkBsT,EAAG,sBAAsBA,IAAK3E,IAAW3O,EAAE,SAAT,OAAkBgP,IAA2BsE,IAAvB,qBAA+CA,IAArB,oBAAyBtE,KAAKqE,EAAGrH,GAAI,IAAGH,GAAGvM,EAAEwM,GAAG,UAAUD,GAAGA,GAAG,MAAMA,GAAG,YAAYmD,GAAG,KAAKoE,EAAG9D,GAAGvP,EAAEuT,CAAE,EAAE,EAAEF,EAAG,SAASE,EAAG,IAAI9F,GAAG8F,EAAGtU,EAAE,KAAKgB,EAAEV,CAAC,EAAEa,EAAE,KAAK,CAAC,MAAMmT,EAAG,UAAUF,CAAE,CAAC,EAAEC,EAAGC,EAAG,KAAKD,GAAIA,EAAGtE,GAAG/O,CAAC,EAASqT,IAAP,OAAYC,EAAG,KAAKD,OAAUA,EAAG3E,GAAGO,GAAGjQ,EAAEgB,CAAC,EAAEkP,GAAGlQ,EAAEgB,CAAC,KAAED,EAAEuP,GAAGvP,EAAE,eAAe,EAC1f,EAAEA,EAAE,SAAST,EAAE,IAAIkO,GAAG,gBAAgB,cAAc,KAAKxN,EAAEV,CAAC,EAAEa,EAAE,KAAK,CAAC,MAAMb,EAAE,UAAUS,CAAC,CAAC,EAAET,EAAE,KAAK+T,GAAG,CAAC3D,GAAGvP,EAAEd,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS0T,GAAG/T,EAAEK,EAAEW,EAAE,CAAC,MAAM,CAAC,SAAShB,EAAE,SAASK,EAAE,cAAcW,CAAC,CAAC,CAAC,SAASsP,GAAGtQ,EAAEK,EAAE,CAAC,QAAQW,EAAEX,EAAE,UAAUU,EAAE,GAAUf,IAAP,MAAU,CAAC,IAAIM,EAAEN,EAAEoB,EAAEd,EAAE,UAAcA,EAAE,MAAN,GAAkBc,IAAP,OAAWd,EAAEc,EAAEA,EAAEyG,GAAG7H,EAAEgB,CAAC,EAAQI,GAAN,MAASL,EAAE,QAAQgT,GAAG/T,EAAEoB,EAAEd,CAAC,CAAC,EAAEc,EAAEyG,GAAG7H,EAAEK,CAAC,EAAQe,GAAN,MAASL,EAAE,KAAKgT,GAAG/T,EAAEoB,EAAEd,CAAC,CAAC,GAAGN,EAAEA,EAAE,MAAM,CAAC,OAAOe,CAAC,CAAC,SAASkT,GAAGjU,EAAE,CAAC,GAAUA,IAAP,KAAS,OAAO,KAAK,GAAGA,EAAEA,EAAE,aAAaA,GAAOA,EAAE,MAAN,GAAW,OAAOA,GAAI,IAAI,CACnd,SAASkU,GAAGlU,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,QAAQc,EAAEf,EAAE,WAAWc,EAAE,CAAE,EAAQH,IAAP,MAAUA,IAAID,GAAG,CAAC,IAAIG,EAAEF,EAAEC,EAAEC,EAAE,UAAU/B,EAAE+B,EAAE,UAAU,GAAUD,IAAP,MAAUA,IAAIF,EAAE,MAAUG,EAAE,MAAN,GAAkB/B,IAAP,OAAW+B,EAAE/B,EAAEmB,GAAGW,EAAE4G,GAAG7G,EAAEI,CAAC,EAAQH,GAAN,MAASE,EAAE,QAAQ4S,GAAG/S,EAAEC,EAAEC,CAAC,CAAC,GAAGZ,IAAIW,EAAE4G,GAAG7G,EAAEI,CAAC,EAAQH,GAAN,MAASE,EAAE,KAAK4S,GAAG/S,EAAEC,EAAEC,CAAC,CAAC,IAAIF,EAAEA,EAAE,MAAM,CAAKG,EAAE,SAAN,GAAcnB,EAAE,KAAK,CAAC,MAAMK,EAAE,UAAUc,CAAC,CAAC,CAAC,CAAC,IAAIoT,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAGzU,EAAE,CAAC,OAAkB,OAAOA,GAAlB,SAAoBA,EAAE,GAAGA,GAAG,QAAQuU,GAAG;AAAA,CAAI,EAAE,QAAQC,GAAG,EAAE,CAAC,CAAC,SAASE,GAAG1U,EAAEK,EAAEW,EAAE,CAAS,GAARX,EAAEoU,GAAGpU,CAAC,EAAKoU,GAAGzU,CAAC,IAAIK,GAAGW,EAAE,MAAM,MAAM3B,EAAE,GAAG,CAAC,CAAE,CAAC,SAASsV,IAAI,CAAE,CAC/e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG9U,EAAEK,EAAE,CAAC,OAAmBL,IAAb,YAA6BA,IAAb,YAA2B,OAAOK,EAAE,UAApB,UAAyC,OAAOA,EAAE,UAApB,UAAyC,OAAOA,EAAE,yBAApB,UAAoDA,EAAE,0BAAT,MAAwCA,EAAE,wBAAwB,QAAhC,IAAsC,CAC5P,IAAI0U,GAAgB,OAAO,YAApB,WAA+B,WAAW,OAAOC,GAAgB,OAAO,cAApB,WAAiC,aAAa,OAAOC,GAAgB,OAAO,SAApB,WAA4B,QAAQ,OAAOC,GAAgB,OAAO,gBAApB,WAAmC,eAA6B,OAAOD,GAArB,IAAwB,SAASjV,EAAE,CAAC,OAAOiV,GAAG,QAAQ,IAAI,EAAE,KAAKjV,CAAC,EAAE,MAAMmV,EAAE,CAAC,EAAEJ,GAAG,SAASI,GAAGnV,EAAE,CAAC,WAAW,UAAU,CAAC,MAAMA,CAAE,CAAC,CAAC,CACpV,SAASoV,GAAGpV,EAAEK,EAAE,CAAC,IAAIW,EAAEX,EAAEU,EAAE,EAAE,EAAE,CAAC,IAAIT,EAAEU,EAAE,YAA6B,GAAjBhB,EAAE,YAAYgB,CAAC,EAAKV,GAAOA,EAAE,WAAN,EAAe,GAAGU,EAAEV,EAAE,KAAYU,IAAP,KAAS,CAAC,GAAOD,IAAJ,EAAM,CAACf,EAAE,YAAYM,CAAC,EAAE8L,GAAG/L,CAAC,EAAE,MAAM,CAACU,GAAG,MAAWC,IAAN,KAAgBA,IAAP,MAAiBA,IAAP,MAAUD,IAAIC,EAAEV,CAAC,OAAOU,GAAGoL,GAAG/L,CAAC,CAAC,CAAC,SAASgV,GAAGrV,EAAE,CAAC,KAAWA,GAAN,KAAQA,EAAEA,EAAE,YAAY,CAAC,IAAIK,EAAEL,EAAE,SAAS,GAAOK,IAAJ,GAAWA,IAAJ,EAAM,MAAM,GAAOA,IAAJ,EAAM,CAAU,GAATA,EAAEL,EAAE,KAAcK,IAAN,KAAgBA,IAAP,MAAiBA,IAAP,KAAS,MAAM,GAAUA,IAAP,KAAS,OAAO,IAAI,CAAC,CAAC,OAAOL,CAAC,CACjY,SAASsV,GAAGtV,EAAE,CAACA,EAAEA,EAAE,gBAAgB,QAAQK,EAAE,EAAEL,GAAG,CAAC,GAAOA,EAAE,WAAN,EAAe,CAAC,IAAIgB,EAAEhB,EAAE,KAAK,GAASgB,IAAN,KAAgBA,IAAP,MAAiBA,IAAP,KAAS,CAAC,GAAOX,IAAJ,EAAM,OAAOL,EAAEK,GAAG,MAAYW,IAAP,MAAUX,GAAG,CAACL,EAAEA,EAAE,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIuV,GAAG,KAAK,OAAQ,EAAC,SAAS,EAAE,EAAE,MAAM,CAAC,EAAEC,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGvB,GAAG,oBAAoBuB,GAAG7B,GAAG,iBAAiB6B,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAASzJ,GAAG9L,EAAE,CAAC,IAAIK,EAAEL,EAAEwV,EAAE,EAAE,GAAGnV,EAAE,OAAOA,EAAE,QAAQW,EAAEhB,EAAE,WAAWgB,GAAG,CAAC,GAAGX,EAAEW,EAAEgT,EAAE,GAAGhT,EAAEwU,EAAE,EAAE,CAAe,GAAdxU,EAAEX,EAAE,UAAoBA,EAAE,QAAT,MAAuBW,IAAP,MAAiBA,EAAE,QAAT,KAAe,IAAIhB,EAAEsV,GAAGtV,CAAC,EAASA,IAAP,MAAU,CAAC,GAAGgB,EAAEhB,EAAEwV,EAAE,EAAE,OAAOxU,EAAEhB,EAAEsV,GAAGtV,CAAC,CAAC,CAAC,OAAOK,CAAC,CAACL,EAAEgB,EAAEA,EAAEhB,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAASqH,GAAGrH,EAAE,CAAC,OAAAA,EAAEA,EAAEwV,EAAE,GAAGxV,EAAEgU,EAAE,EAAQ,CAAChU,GAAOA,EAAE,MAAN,GAAeA,EAAE,MAAN,GAAgBA,EAAE,MAAP,IAAgBA,EAAE,MAAN,EAAU,KAAKA,CAAC,CAAC,SAAS4Q,GAAG5Q,EAAE,CAAC,GAAOA,EAAE,MAAN,GAAeA,EAAE,MAAN,EAAU,OAAOA,EAAE,UAAU,MAAM,MAAMX,EAAE,EAAE,CAAC,CAAE,CAAC,SAASiI,GAAGtH,EAAE,CAAC,OAAOA,EAAEyV,EAAE,GAAG,IAAI,CAAC,IAAIG,GAAG,CAAE,EAACC,GAAG,GAAG,SAASC,GAAG9V,EAAE,CAAC,MAAM,CAAC,QAAQA,CAAC,CAAC,CACve,SAASI,GAAEJ,EAAE,CAAC,EAAE6V,KAAK7V,EAAE,QAAQ4V,GAAGC,EAAE,EAAED,GAAGC,EAAE,EAAE,KAAKA,KAAK,CAAC,SAASrV,GAAER,EAAEK,EAAE,CAACwV,KAAKD,GAAGC,EAAE,EAAE7V,EAAE,QAAQA,EAAE,QAAQK,CAAC,CAAC,IAAI0V,GAAG,GAAGtV,GAAEqV,GAAGC,EAAE,EAAEC,GAAGF,GAAG,EAAE,EAAEG,GAAGF,GAAG,SAASG,GAAGlW,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,KAAK,aAAa,GAAG,CAACgB,EAAE,OAAO+U,GAAG,IAAIhV,EAAEf,EAAE,UAAU,GAAGe,GAAGA,EAAE,8CAA8CV,EAAE,OAAOU,EAAE,0CAA0C,IAAIT,EAAE,CAAE,EAACc,EAAE,IAAIA,KAAKJ,EAAEV,EAAEc,CAAC,EAAEf,EAAEe,CAAC,EAAE,OAAAL,IAAIf,EAAEA,EAAE,UAAUA,EAAE,4CAA4CK,EAAEL,EAAE,0CAA0CM,GAAUA,CAAC,CAC9d,SAAS6V,GAAGnW,EAAE,CAAC,OAAAA,EAAEA,EAAE,kBAAgCA,GAAP,IAAoB,CAAC,SAASoW,IAAI,CAAChW,GAAE4V,EAAE,EAAE5V,GAAEK,EAAC,CAAC,CAAC,SAAS4V,GAAGrW,EAAEK,EAAEW,EAAE,CAAC,GAAGP,GAAE,UAAUsV,GAAG,MAAM,MAAM1W,EAAE,GAAG,CAAC,EAAEmB,GAAEC,GAAEJ,CAAC,EAAEG,GAAEwV,GAAGhV,CAAC,CAAC,CAAC,SAASsV,GAAGtW,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,UAAgC,GAAtBK,EAAEA,EAAE,kBAAkC,OAAOU,EAAE,iBAAtB,WAAsC,OAAOC,EAAED,EAAEA,EAAE,gBAAe,EAAG,QAAQT,KAAKS,EAAE,GAAG,EAAET,KAAKD,GAAG,MAAM,MAAMhB,EAAE,IAAI2F,GAAGhF,CAAC,GAAG,UAAUM,CAAC,CAAC,EAAE,OAAOP,GAAE,GAAGiB,EAAED,CAAC,CAAC,CACxX,SAASwV,GAAGvW,EAAE,CAAC,OAAAA,GAAGA,EAAEA,EAAE,YAAYA,EAAE,2CAA2C+V,GAAGE,GAAGxV,GAAE,QAAQD,GAAEC,GAAET,CAAC,EAAEQ,GAAEwV,GAAGA,GAAG,OAAO,EAAQ,EAAE,CAAC,SAASQ,GAAGxW,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,UAAU,GAAG,CAACe,EAAE,MAAM,MAAM1B,EAAE,GAAG,CAAC,EAAE2B,GAAGhB,EAAEsW,GAAGtW,EAAEK,EAAE4V,EAAE,EAAElV,EAAE,0CAA0Cf,EAAEI,GAAE4V,EAAE,EAAE5V,GAAEK,EAAC,EAAED,GAAEC,GAAET,CAAC,GAAGI,GAAE4V,EAAE,EAAExV,GAAEwV,GAAGhV,CAAC,CAAC,CAAC,IAAIyV,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAG,SAASC,GAAG5W,EAAE,CAAQyW,KAAP,KAAUA,GAAG,CAACzW,CAAC,EAAEyW,GAAG,KAAKzW,CAAC,CAAC,CAAC,SAAS6W,GAAG7W,EAAE,CAAC0W,GAAG,GAAGE,GAAG5W,CAAC,CAAC,CAC3X,SAAS8W,IAAI,CAAC,GAAG,CAACH,IAAWF,KAAP,KAAU,CAACE,GAAG,GAAG,IAAI3W,EAAE,EAAEK,EAAEH,GAAE,GAAG,CAAC,IAAIc,EAAEyV,GAAG,IAAIvW,GAAE,EAAEF,EAAEgB,EAAE,OAAOhB,IAAI,CAAC,IAAIe,EAAEC,EAAEhB,CAAC,EAAE,GAAGe,EAAEA,EAAE,EAAE,QAAeA,IAAP,KAAS,CAAC0V,GAAG,KAAKC,GAAG,EAAE,OAAOpW,EAAE,CAAC,MAAamW,KAAP,OAAYA,GAAGA,GAAG,MAAMzW,EAAE,CAAC,GAAG8I,GAAGK,GAAG2N,EAAE,EAAExW,CAAE,QAAC,CAAQJ,GAAEG,EAAEsW,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAII,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAGxX,EAAEK,EAAE,CAAC0W,GAAGC,IAAI,EAAEE,GAAGH,GAAGC,IAAI,EAAEC,GAAGA,GAAGjX,EAAEkX,GAAG7W,CAAC,CACjV,SAASoX,GAAGzX,EAAEK,EAAEW,EAAE,CAACmW,GAAGC,IAAI,EAAEE,GAAGH,GAAGC,IAAI,EAAEG,GAAGJ,GAAGC,IAAI,EAAEC,GAAGA,GAAGrX,EAAE,IAAIe,EAAEuW,GAAGtX,EAAEuX,GAAG,IAAIjX,EAAE,GAAGqJ,GAAG5I,CAAC,EAAE,EAAEA,GAAG,EAAE,GAAGT,GAAGU,GAAG,EAAE,IAAII,EAAE,GAAGuI,GAAGtJ,CAAC,EAAEC,EAAE,GAAG,GAAGc,EAAE,CAAC,IAAID,EAAEb,EAAEA,EAAE,EAAEc,GAAGL,GAAG,GAAGI,GAAG,GAAG,SAAS,EAAE,EAAEJ,IAAII,EAAEb,GAAGa,EAAEmW,GAAG,GAAG,GAAG3N,GAAGtJ,CAAC,EAAEC,EAAEU,GAAGV,EAAES,EAAEwW,GAAGnW,EAAEpB,CAAC,MAAMsX,GAAG,GAAGlW,EAAEJ,GAAGV,EAAES,EAAEwW,GAAGvX,CAAC,CAAC,SAAS0X,GAAG1X,EAAE,CAAQA,EAAE,SAAT,OAAkBwX,GAAGxX,EAAE,CAAC,EAAEyX,GAAGzX,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS2X,GAAG3X,EAAE,CAAC,KAAKA,IAAIiX,IAAIA,GAAGF,GAAG,EAAEC,EAAE,EAAED,GAAGC,EAAE,EAAE,KAAKE,GAAGH,GAAG,EAAEC,EAAE,EAAED,GAAGC,EAAE,EAAE,KAAK,KAAKhX,IAAIqX,IAAIA,GAAGF,GAAG,EAAEC,EAAE,EAAED,GAAGC,EAAE,EAAE,KAAKG,GAAGJ,GAAG,EAAEC,EAAE,EAAED,GAAGC,EAAE,EAAE,KAAKE,GAAGH,GAAG,EAAEC,EAAE,EAAED,GAAGC,EAAE,EAAE,IAAI,CAAC,IAAIQ,GAAG,KAAKC,GAAG,KAAKnX,GAAE,GAAGoX,GAAG,KACje,SAASC,GAAG/X,EAAEK,EAAE,CAAC,IAAIW,EAAEgX,GAAG,EAAE,KAAK,KAAK,CAAC,EAAEhX,EAAE,YAAY,UAAUA,EAAE,UAAUX,EAAEW,EAAE,OAAOhB,EAAEK,EAAEL,EAAE,UAAiBK,IAAP,MAAUL,EAAE,UAAU,CAACgB,CAAC,EAAEhB,EAAE,OAAO,IAAIK,EAAE,KAAKW,CAAC,CAAC,CACxJ,SAASiX,GAAGjY,EAAEK,EAAE,CAAC,OAAOL,EAAE,KAAK,IAAK,GAAE,IAAIgB,EAAEhB,EAAE,KAAK,OAAAK,EAAMA,EAAE,WAAN,GAAgBW,EAAE,YAAW,IAAKX,EAAE,SAAS,YAAW,EAAG,KAAKA,EAAgBA,IAAP,MAAUL,EAAE,UAAUK,EAAEuX,GAAG5X,EAAE6X,GAAGxC,GAAGhV,EAAE,UAAU,EAAE,IAAI,GAAG,IAAK,GAAE,OAAOA,EAAOL,EAAE,eAAP,IAAyBK,EAAE,WAAN,EAAe,KAAKA,EAASA,IAAP,MAAUL,EAAE,UAAUK,EAAEuX,GAAG5X,EAAE6X,GAAG,KAAK,IAAI,GAAG,IAAK,IAAG,OAAOxX,EAAMA,EAAE,WAAN,EAAe,KAAKA,EAASA,IAAP,MAAUW,EAASqW,KAAP,KAAU,CAAC,GAAGC,GAAG,SAASC,EAAE,EAAE,KAAKvX,EAAE,cAAc,CAAC,WAAWK,EAAE,YAAYW,EAAE,UAAU,UAAU,EAAEA,EAAEgX,GAAG,GAAG,KAAK,KAAK,CAAC,EAAEhX,EAAE,UAAUX,EAAEW,EAAE,OAAOhB,EAAEA,EAAE,MAAMgB,EAAE4W,GAAG5X,EAAE6X,GAClf,KAAK,IAAI,GAAG,QAAQ,MAAM,EAAE,CAAC,CAAC,SAASK,GAAGlY,EAAE,CAAC,OAAYA,EAAE,KAAK,KAAZ,IAAqBA,EAAE,MAAM,OAAb,CAAiB,CAAC,SAASmY,GAAGnY,EAAE,CAAC,GAAGU,GAAE,CAAC,IAAIL,EAAEwX,GAAG,GAAGxX,EAAE,CAAC,IAAIW,EAAEX,EAAE,GAAG,CAAC4X,GAAGjY,EAAEK,CAAC,EAAE,CAAC,GAAG6X,GAAGlY,CAAC,EAAE,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAEgB,EAAEgV,GAAGrU,EAAE,WAAW,EAAE,IAAID,EAAE6W,GAAGvX,GAAG4X,GAAGjY,EAAEK,CAAC,EAAE0X,GAAGhX,EAAEC,CAAC,GAAGhB,EAAE,MAAMA,EAAE,MAAM,MAAM,EAAEU,GAAE,GAAGkX,GAAG5X,EAAE,CAAC,KAAK,CAAC,GAAGkY,GAAGlY,CAAC,EAAE,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAEW,EAAE,MAAMA,EAAE,MAAM,MAAM,EAAEU,GAAE,GAAGkX,GAAG5X,CAAC,CAAC,CAAC,CAAC,SAASoY,GAAGpY,EAAE,CAAC,IAAIA,EAAEA,EAAE,OAAcA,IAAP,MAAcA,EAAE,MAAN,GAAeA,EAAE,MAAN,GAAgBA,EAAE,MAAP,IAAYA,EAAEA,EAAE,OAAO4X,GAAG5X,CAAC,CACha,SAASqY,GAAGrY,EAAE,CAAC,GAAGA,IAAI4X,GAAG,MAAM,GAAG,GAAG,CAAClX,GAAE,OAAO0X,GAAGpY,CAAC,EAAEU,GAAE,GAAG,GAAG,IAAIL,EAAkG,IAA/FA,EAAML,EAAE,MAAN,IAAY,EAAEK,EAAML,EAAE,MAAN,KAAaK,EAAEL,EAAE,KAAKK,EAAWA,IAAT,QAAqBA,IAAT,QAAY,CAACyU,GAAG9U,EAAE,KAAKA,EAAE,aAAa,GAAMK,IAAIA,EAAEwX,IAAI,CAAC,GAAGK,GAAGlY,CAAC,EAAE,MAAMsY,GAAI,EAAC,MAAMjZ,EAAE,GAAG,CAAC,EAAE,KAAKgB,GAAG0X,GAAG/X,EAAEK,CAAC,EAAEA,EAAEgV,GAAGhV,EAAE,WAAW,CAAC,CAAO,GAAN+X,GAAGpY,CAAC,EAAUA,EAAE,MAAP,GAAW,CAAgD,GAA/CA,EAAEA,EAAE,cAAcA,EAASA,IAAP,KAASA,EAAE,WAAW,KAAQ,CAACA,EAAE,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAEW,EAAE,CAAiB,IAAhBA,EAAEA,EAAE,YAAgBK,EAAE,EAAEL,GAAG,CAAC,GAAOA,EAAE,WAAN,EAAe,CAAC,IAAIgB,EAAEhB,EAAE,KAAK,GAAUgB,IAAP,KAAS,CAAC,GAAOX,IAAJ,EAAM,CAACwX,GAAGxC,GAAGrV,EAAE,WAAW,EAAE,MAAMA,CAAC,CAACK,GAAG,MAAWW,IAAN,KAAgBA,IAAP,MAAiBA,IAAP,MAAUX,GAAG,CAACL,EAAEA,EAAE,WAAW,CAAC6X,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAGvC,GAAGrV,EAAE,UAAU,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC,SAASsY,IAAI,CAAC,QAAQtY,EAAE6X,GAAG7X,GAAGA,EAAEqV,GAAGrV,EAAE,WAAW,CAAC,CAAC,SAASuY,IAAI,CAACV,GAAGD,GAAG,KAAKlX,GAAE,EAAE,CAAC,SAAS8X,GAAGxY,EAAE,CAAQ8X,KAAP,KAAUA,GAAG,CAAC9X,CAAC,EAAE8X,GAAG,KAAK9X,CAAC,CAAC,CAAC,IAAIyY,GAAG/U,GAAG,wBAAwB,SAASgV,GAAG1Y,EAAEK,EAAE,CAAC,GAAGL,GAAGA,EAAE,aAAa,CAACK,EAAEN,GAAE,GAAGM,CAAC,EAAEL,EAAEA,EAAE,aAAa,QAAQgB,KAAKhB,EAAWK,EAAEW,CAAC,IAAZ,SAAgBX,EAAEW,CAAC,EAAEhB,EAAEgB,CAAC,GAAG,OAAOX,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAIsY,GAAG7C,GAAG,IAAI,EAAE8C,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,IAAI,CAACD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAGhZ,EAAE,CAAC,IAAIK,EAAEsY,GAAG,QAAQvY,GAAEuY,EAAE,EAAE3Y,EAAE,cAAcK,CAAC,CACjd,SAAS4Y,GAAGjZ,EAAEK,EAAEW,EAAE,CAAC,KAAYhB,IAAP,MAAU,CAAC,IAAIe,EAAEf,EAAE,UAA+H,IAApHA,EAAE,WAAWK,KAAKA,GAAGL,EAAE,YAAYK,EAASU,IAAP,OAAWA,EAAE,YAAYV,IAAWU,IAAP,OAAWA,EAAE,WAAWV,KAAKA,IAAIU,EAAE,YAAYV,GAAML,IAAIgB,EAAE,MAAMhB,EAAEA,EAAE,MAAM,CAAC,CAAC,SAASkZ,GAAGlZ,EAAEK,EAAE,CAACuY,GAAG5Y,EAAE8Y,GAAGD,GAAG,KAAK7Y,EAAEA,EAAE,aAAoBA,IAAP,MAAiBA,EAAE,eAAT,OAA6BA,EAAE,MAAMK,IAAK8Y,GAAG,IAAInZ,EAAE,aAAa,KAAK,CACtU,SAASoZ,GAAGpZ,EAAE,CAAC,IAAIK,EAAEL,EAAE,cAAc,GAAG8Y,KAAK9Y,EAAE,GAAGA,EAAE,CAAC,QAAQA,EAAE,cAAcK,EAAE,KAAK,IAAI,EAASwY,KAAP,KAAU,CAAC,GAAUD,KAAP,KAAU,MAAM,MAAMvZ,EAAE,GAAG,CAAC,EAAEwZ,GAAG7Y,EAAE4Y,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa5Y,CAAC,CAAC,MAAM6Y,GAAGA,GAAG,KAAK7Y,EAAE,OAAOK,CAAC,CAAC,IAAIgZ,GAAG,KAAK,SAASC,GAAGtZ,EAAE,CAAQqZ,KAAP,KAAUA,GAAG,CAACrZ,CAAC,EAAEqZ,GAAG,KAAKrZ,CAAC,CAAC,CAAC,SAASuZ,GAAGvZ,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAED,EAAE,YAAY,OAAOC,IAAP,MAAUU,EAAE,KAAKA,EAAEsY,GAAGjZ,CAAC,IAAIW,EAAE,KAAKV,EAAE,KAAKA,EAAE,KAAKU,GAAGX,EAAE,YAAYW,EAASwY,GAAGxZ,EAAEe,CAAC,CAAC,CAChY,SAASyY,GAAGxZ,EAAEK,EAAE,CAACL,EAAE,OAAOK,EAAE,IAAIW,EAAEhB,EAAE,UAAqC,IAApBgB,IAAP,OAAWA,EAAE,OAAOX,GAAGW,EAAEhB,EAAMA,EAAEA,EAAE,OAAcA,IAAP,MAAUA,EAAE,YAAYK,EAAEW,EAAEhB,EAAE,UAAiBgB,IAAP,OAAWA,EAAE,YAAYX,GAAGW,EAAEhB,EAAEA,EAAEA,EAAE,OAAO,OAAWgB,EAAE,MAAN,EAAUA,EAAE,UAAU,IAAI,CAAC,IAAIyY,GAAG,GAAG,SAASC,GAAG1Z,EAAE,CAACA,EAAE,YAAY,CAAC,UAAUA,EAAE,cAAc,gBAAgB,KAAK,eAAe,KAAK,OAAO,CAAC,QAAQ,KAAK,YAAY,KAAK,MAAM,CAAC,EAAE,QAAQ,IAAI,CAAC,CACpX,SAAS2Z,GAAG3Z,EAAEK,EAAE,CAACL,EAAEA,EAAE,YAAYK,EAAE,cAAcL,IAAIK,EAAE,YAAY,CAAC,UAAUL,EAAE,UAAU,gBAAgBA,EAAE,gBAAgB,eAAeA,EAAE,eAAe,OAAOA,EAAE,OAAO,QAAQA,EAAE,OAAO,EAAE,CAAC,SAAS4Z,GAAG5Z,EAAEK,EAAE,CAAC,MAAM,CAAC,UAAUL,EAAE,KAAKK,EAAE,IAAI,EAAE,QAAQ,KAAK,SAAS,KAAK,KAAK,IAAI,CAAC,CACtR,SAASwZ,GAAG7Z,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,YAAY,GAAUe,IAAP,KAAS,OAAO,KAAgB,GAAXA,EAAEA,EAAE,OAAeH,GAAE,EAAG,CAAC,IAAIN,EAAES,EAAE,QAAQ,OAAOT,IAAP,KAASD,EAAE,KAAKA,GAAGA,EAAE,KAAKC,EAAE,KAAKA,EAAE,KAAKD,GAAGU,EAAE,QAAQV,EAASmZ,GAAGxZ,EAAEgB,CAAC,CAAC,CAAC,OAAAV,EAAES,EAAE,YAAmBT,IAAP,MAAUD,EAAE,KAAKA,EAAEiZ,GAAGvY,CAAC,IAAIV,EAAE,KAAKC,EAAE,KAAKA,EAAE,KAAKD,GAAGU,EAAE,YAAYV,EAASmZ,GAAGxZ,EAAEgB,CAAC,CAAC,CAAC,SAAS8Y,GAAG9Z,EAAEK,EAAEW,EAAE,CAAiB,GAAhBX,EAAEA,EAAE,YAAsBA,IAAP,OAAWA,EAAEA,EAAE,QAAYW,EAAE,WAAP,GAAiB,CAAC,IAAID,EAAEV,EAAE,MAAMU,GAAGf,EAAE,aAAagB,GAAGD,EAAEV,EAAE,MAAMW,EAAE0J,GAAG1K,EAAEgB,CAAC,CAAC,CAAC,CACrZ,SAAS+Y,GAAG/Z,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,YAAYe,EAAEf,EAAE,UAAU,GAAUe,IAAP,OAAWA,EAAEA,EAAE,YAAYC,IAAID,GAAG,CAAC,IAAIT,EAAE,KAAKc,EAAE,KAAyB,GAApBJ,EAAEA,EAAE,gBAA0BA,IAAP,KAAS,CAAC,EAAE,CAAC,IAAIG,EAAE,CAAC,UAAUH,EAAE,UAAU,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,QAAQA,EAAE,QAAQ,SAASA,EAAE,SAAS,KAAK,IAAI,EAASI,IAAP,KAASd,EAAEc,EAAED,EAAEC,EAAEA,EAAE,KAAKD,EAAEH,EAAEA,EAAE,IAAI,OAAcA,IAAP,MAAiBI,IAAP,KAASd,EAAEc,EAAEf,EAAEe,EAAEA,EAAE,KAAKf,CAAC,MAAMC,EAAEc,EAAEf,EAAEW,EAAE,CAAC,UAAUD,EAAE,UAAU,gBAAgBT,EAAE,eAAec,EAAE,OAAOL,EAAE,OAAO,QAAQA,EAAE,OAAO,EAAEf,EAAE,YAAYgB,EAAE,MAAM,CAAChB,EAAEgB,EAAE,eAAsBhB,IAAP,KAASgB,EAAE,gBAAgBX,EAAEL,EAAE,KACnfK,EAAEW,EAAE,eAAeX,CAAC,CACpB,SAAS2Z,GAAGha,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAEN,EAAE,YAAYyZ,GAAG,GAAG,IAAIrY,EAAEd,EAAE,gBAAgBa,EAAEb,EAAE,eAAeY,EAAEZ,EAAE,OAAO,QAAQ,GAAUY,IAAP,KAAS,CAACZ,EAAE,OAAO,QAAQ,KAAK,IAAIW,EAAEC,EAAE/B,EAAE8B,EAAE,KAAKA,EAAE,KAAK,KAAYE,IAAP,KAASC,EAAEjC,EAAEgC,EAAE,KAAKhC,EAAEgC,EAAEF,EAAE,IAAII,EAAErB,EAAE,UAAiBqB,IAAP,OAAWA,EAAEA,EAAE,YAAYH,EAAEG,EAAE,eAAeH,IAAIC,IAAWD,IAAP,KAASG,EAAE,gBAAgBlC,EAAE+B,EAAE,KAAK/B,EAAEkC,EAAE,eAAeJ,GAAG,CAAC,GAAUG,IAAP,KAAS,CAAC,IAAI9B,EAAEgB,EAAE,UAAUa,EAAE,EAAEE,EAAElC,EAAE8B,EAAE,KAAKC,EAAEE,EAAE,EAAE,CAAC,IAAI7B,EAAE2B,EAAE,KAAKrB,EAAEqB,EAAE,UAAU,IAAIH,EAAExB,KAAKA,EAAE,CAAQ8B,IAAP,OAAWA,EAAEA,EAAE,KAAK,CAAC,UAAUxB,EAAE,KAAK,EAAE,IAAIqB,EAAE,IAAI,QAAQA,EAAE,QAAQ,SAASA,EAAE,SACvf,KAAK,IAAI,GAAGlB,EAAE,CAAC,IAAIZ,EAAEY,EAAER,EAAE0B,EAAU,OAAR3B,EAAEc,EAAER,EAAEmB,EAASxB,EAAE,IAAG,CAAE,IAAK,GAAc,GAAZJ,EAAEI,EAAE,QAAwB,OAAOJ,GAApB,WAAsB,CAACE,EAAEF,EAAE,KAAKS,EAAEP,EAAEC,CAAC,EAAE,MAAMS,CAAC,CAACV,EAAEF,EAAE,MAAMY,EAAE,IAAK,GAAEZ,EAAE,MAAMA,EAAE,MAAM,OAAO,IAAI,IAAK,GAAsD,GAApDA,EAAEI,EAAE,QAAQD,EAAe,OAAOH,GAApB,WAAsBA,EAAE,KAAKS,EAAEP,EAAEC,CAAC,EAAEH,EAAYG,GAAP,KAAqB,MAAMS,EAAEV,EAAES,GAAE,CAAE,EAACT,EAAEC,CAAC,EAAE,MAAMS,EAAE,IAAK,GAAEyZ,GAAG,EAAE,CAAC,CAAQvY,EAAE,WAAT,MAAuBA,EAAE,OAAN,IAAalB,EAAE,OAAO,GAAGT,EAAEe,EAAE,QAAef,IAAP,KAASe,EAAE,QAAQ,CAACY,CAAC,EAAE3B,EAAE,KAAK2B,CAAC,EAAE,MAAMrB,EAAE,CAAC,UAAUA,EAAE,KAAKN,EAAE,IAAI2B,EAAE,IAAI,QAAQA,EAAE,QAAQ,SAASA,EAAE,SAAS,KAAK,IAAI,EAASG,IAAP,MAAUlC,EAAEkC,EAAExB,EAAEoB,EAAE3B,GAAG+B,EAAEA,EAAE,KAAKxB,EAAEsB,GAAG5B,EAC3e,GAAT2B,EAAEA,EAAE,KAAeA,IAAP,KAAS,IAAGA,EAAEZ,EAAE,OAAO,QAAeY,IAAP,KAAS,MAAW3B,EAAE2B,EAAEA,EAAE3B,EAAE,KAAKA,EAAE,KAAK,KAAKe,EAAE,eAAef,EAAEe,EAAE,OAAO,QAAQ,KAAI,OAAO,IAA+F,GAArFe,IAAP,OAAWJ,EAAE3B,GAAGgB,EAAE,UAAUW,EAAEX,EAAE,gBAAgBnB,EAAEmB,EAAE,eAAee,EAAEhB,EAAEC,EAAE,OAAO,YAAsBD,IAAP,KAAS,CAACC,EAAED,EAAE,GAAGc,GAAGb,EAAE,KAAKA,EAAEA,EAAE,WAAWA,IAAID,EAAE,MAAae,IAAP,OAAWd,EAAE,OAAO,MAAM,GAAG2Z,IAAI9Y,EAAEnB,EAAE,MAAMmB,EAAEnB,EAAE,cAAcV,CAAC,CAAC,CAC9V,SAAS4a,GAAGla,EAAEK,EAAEW,EAAE,CAA4B,GAA3BhB,EAAEK,EAAE,QAAQA,EAAE,QAAQ,KAAeL,IAAP,KAAS,IAAIK,EAAE,EAAEA,EAAEL,EAAE,OAAOK,IAAI,CAAC,IAAIU,EAAEf,EAAEK,CAAC,EAAEC,EAAES,EAAE,SAAS,GAAUT,IAAP,KAAS,CAAqB,GAApBS,EAAE,SAAS,KAAKA,EAAEC,EAAkB,OAAOV,GAApB,WAAsB,MAAM,MAAMjB,EAAE,IAAIiB,CAAC,CAAC,EAAEA,EAAE,KAAKS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIoZ,GAAI,IAAI3X,GAAG,YAAW,KAAK,SAAS4X,GAAGpa,EAAEK,EAAEW,EAAED,EAAE,CAACV,EAAEL,EAAE,cAAcgB,EAAEA,EAAED,EAAEV,CAAC,EAAEW,EAASA,GAAP,KAAqBX,EAAEN,GAAE,GAAGM,EAAEW,CAAC,EAAEhB,EAAE,cAAcgB,EAAMhB,EAAE,QAAN,IAAcA,EAAE,YAAY,UAAUgB,EAAE,CAClX,IAAIqZ,GAAG,CAAC,UAAU,SAASra,EAAE,CAAC,OAAOA,EAAEA,EAAE,iBAAiBwI,GAAGxI,CAAC,IAAIA,EAAE,EAAE,EAAE,gBAAgB,SAASA,EAAEK,EAAEW,EAAE,CAAChB,EAAEA,EAAE,gBAAgB,IAAIe,EAAEF,GAAC,EAAGP,EAAEga,GAAGta,CAAC,EAAEoB,EAAEwY,GAAG7Y,EAAET,CAAC,EAAEc,EAAE,QAAQf,EAAqBW,GAAP,OAAWI,EAAE,SAASJ,GAAGX,EAAEwZ,GAAG7Z,EAAEoB,EAAEd,CAAC,EAASD,IAAP,OAAWka,GAAGla,EAAEL,EAAEM,EAAES,CAAC,EAAE+Y,GAAGzZ,EAAEL,EAAEM,CAAC,EAAE,EAAE,oBAAoB,SAASN,EAAEK,EAAEW,EAAE,CAAChB,EAAEA,EAAE,gBAAgB,IAAIe,EAAEF,GAAG,EAACP,EAAEga,GAAGta,CAAC,EAAEoB,EAAEwY,GAAG7Y,EAAET,CAAC,EAAEc,EAAE,IAAI,EAAEA,EAAE,QAAQf,EAAqBW,GAAP,OAAWI,EAAE,SAASJ,GAAGX,EAAEwZ,GAAG7Z,EAAEoB,EAAEd,CAAC,EAASD,IAAP,OAAWka,GAAGla,EAAEL,EAAEM,EAAES,CAAC,EAAE+Y,GAAGzZ,EAAEL,EAAEM,CAAC,EAAE,EAAE,mBAAmB,SAASN,EAAEK,EAAE,CAACL,EAAEA,EAAE,gBAAgB,IAAIgB,EAAEH,GAAG,EAACE,EACnfuZ,GAAGta,CAAC,EAAEM,EAAEsZ,GAAG5Y,EAAED,CAAC,EAAET,EAAE,IAAI,EAAqBD,GAAP,OAAWC,EAAE,SAASD,GAAGA,EAAEwZ,GAAG7Z,EAAEM,EAAES,CAAC,EAASV,IAAP,OAAWka,GAAGla,EAAEL,EAAEe,EAAEC,CAAC,EAAE8Y,GAAGzZ,EAAEL,EAAEe,CAAC,EAAE,CAAC,EAAE,SAASyZ,GAAGxa,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAE,CAAC,OAAAnB,EAAEA,EAAE,UAA6B,OAAOA,EAAE,uBAAtB,WAA4CA,EAAE,sBAAsBe,EAAEK,EAAED,CAAC,EAAEd,EAAE,WAAWA,EAAE,UAAU,qBAAqB,CAACqR,GAAG1Q,EAAED,CAAC,GAAG,CAAC2Q,GAAGpR,EAAEc,CAAC,EAAE,EAAE,CAC1S,SAASqZ,GAAGza,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAE,GAAGT,EAAEyV,GAAO3U,EAAEf,EAAE,YAAY,OAAW,OAAOe,GAAlB,UAA4BA,IAAP,KAASA,EAAEgY,GAAGhY,CAAC,GAAGd,EAAE6V,GAAG9V,CAAC,EAAE4V,GAAGxV,GAAE,QAAQM,EAAEV,EAAE,aAAae,GAAGL,EAASA,GAAP,MAAsBmV,GAAGlW,EAAEM,CAAC,EAAEyV,IAAI1V,EAAE,IAAIA,EAAEW,EAAEI,CAAC,EAAEpB,EAAE,cAAqBK,EAAE,QAAT,MAAyBA,EAAE,QAAX,OAAiBA,EAAE,MAAM,KAAKA,EAAE,QAAQga,GAAGra,EAAE,UAAUK,EAAEA,EAAE,gBAAgBL,EAAEe,IAAIf,EAAEA,EAAE,UAAUA,EAAE,4CAA4CM,EAAEN,EAAE,0CAA0CoB,GAAUf,CAAC,CAC5Z,SAASqa,GAAG1a,EAAEK,EAAEW,EAAED,EAAE,CAACf,EAAEK,EAAE,MAAmB,OAAOA,EAAE,2BAAtB,YAAiDA,EAAE,0BAA0BW,EAAED,CAAC,EAAe,OAAOV,EAAE,kCAAtB,YAAwDA,EAAE,iCAAiCW,EAAED,CAAC,EAAEV,EAAE,QAAQL,GAAGqa,GAAG,oBAAoBha,EAAEA,EAAE,MAAM,IAAI,CAAC,CACpQ,SAASsa,GAAG3a,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAEN,EAAE,UAAUM,EAAE,MAAMU,EAAEV,EAAE,MAAMN,EAAE,cAAcM,EAAE,KAAK6Z,GAAGT,GAAG1Z,CAAC,EAAE,IAAIoB,EAAEf,EAAE,YAAuB,OAAOe,GAAlB,UAA4BA,IAAP,KAASd,EAAE,QAAQ8Y,GAAGhY,CAAC,GAAGA,EAAE+U,GAAG9V,CAAC,EAAE4V,GAAGxV,GAAE,QAAQH,EAAE,QAAQ4V,GAAGlW,EAAEoB,CAAC,GAAGd,EAAE,MAAMN,EAAE,cAAcoB,EAAEf,EAAE,yBAAsC,OAAOe,GAApB,aAAwBgZ,GAAGpa,EAAEK,EAAEe,EAAEJ,CAAC,EAAEV,EAAE,MAAMN,EAAE,eAA4B,OAAOK,EAAE,0BAAtB,YAA6D,OAAOC,EAAE,yBAAtB,YAA4D,OAAOA,EAAE,2BAAtB,YAA8D,OAAOA,EAAE,oBAAtB,aAA2CD,EAAEC,EAAE,MACxe,OAAOA,EAAE,oBAAtB,YAA0CA,EAAE,qBAAkC,OAAOA,EAAE,2BAAtB,YAAiDA,EAAE,0BAAyB,EAAGD,IAAIC,EAAE,OAAO+Z,GAAG,oBAAoB/Z,EAAEA,EAAE,MAAM,IAAI,EAAE0Z,GAAGha,EAAEgB,EAAEV,EAAES,CAAC,EAAET,EAAE,MAAMN,EAAE,eAA4B,OAAOM,EAAE,mBAAtB,aAA0CN,EAAE,OAAO,QAAQ,CACpS,SAAS4a,GAAG5a,EAAEK,EAAEW,EAAE,CAAS,GAARhB,EAAEgB,EAAE,IAAchB,IAAP,MAAuB,OAAOA,GAApB,YAAkC,OAAOA,GAAlB,SAAoB,CAAC,GAAGgB,EAAE,OAAO,CAAY,GAAXA,EAAEA,EAAE,OAAUA,EAAE,CAAC,GAAOA,EAAE,MAAN,EAAU,MAAM,MAAM3B,EAAE,GAAG,CAAC,EAAE,IAAI0B,EAAEC,EAAE,SAAS,CAAC,GAAG,CAACD,EAAE,MAAM,MAAM1B,EAAE,IAAIW,CAAC,CAAC,EAAE,IAAIM,EAAES,EAAEK,EAAE,GAAGpB,EAAE,OAAUK,IAAP,MAAiBA,EAAE,MAAT,MAA2B,OAAOA,EAAE,KAAtB,YAA2BA,EAAE,IAAI,aAAae,EAASf,EAAE,KAAIA,EAAE,SAASL,EAAE,CAAC,IAAIK,EAAEC,EAAE,KAAKD,IAAI8Z,KAAK9Z,EAAEC,EAAE,KAAK,IAAWN,IAAP,KAAS,OAAOK,EAAEe,CAAC,EAAEf,EAAEe,CAAC,EAAEpB,CAAC,EAAEK,EAAE,WAAWe,EAASf,EAAC,CAAC,GAAc,OAAOL,GAAlB,SAAoB,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC2B,EAAE,OAAO,MAAM,MAAM3B,EAAE,IAAIW,CAAC,CAAC,CAAE,CAAC,OAAOA,CAAC,CACre,SAAS6a,GAAG7a,EAAEK,EAAE,CAAC,MAAAL,EAAE,OAAO,UAAU,SAAS,KAAKK,CAAC,EAAQ,MAAMhB,EAAE,GAAuBW,IAApB,kBAAsB,qBAAqB,OAAO,KAAKK,CAAC,EAAE,KAAK,IAAI,EAAE,IAAIL,CAAC,CAAC,CAAE,CAAC,SAAS8a,GAAG9a,EAAE,CAAC,IAAIK,EAAEL,EAAE,MAAM,OAAOK,EAAEL,EAAE,QAAQ,CAAC,CACrM,SAAS+a,GAAG/a,EAAE,CAAC,SAASK,EAAEA,EAAEW,EAAE,CAAC,GAAGhB,EAAE,CAAC,IAAIe,EAAEV,EAAE,UAAiBU,IAAP,MAAUV,EAAE,UAAU,CAACW,CAAC,EAAEX,EAAE,OAAO,IAAIU,EAAE,KAAKC,CAAC,CAAC,CAAC,CAAC,SAASA,EAAEA,EAAED,EAAE,CAAC,GAAG,CAACf,EAAE,OAAO,KAAK,KAAYe,IAAP,MAAUV,EAAEW,EAAED,CAAC,EAAEA,EAAEA,EAAE,QAAQ,OAAO,IAAI,CAAC,SAASA,EAAEf,EAAEK,EAAE,CAAC,IAAIL,EAAE,IAAI,IAAWK,IAAP,MAAiBA,EAAE,MAAT,KAAaL,EAAE,IAAIK,EAAE,IAAIA,CAAC,EAAEL,EAAE,IAAIK,EAAE,MAAMA,CAAC,EAAEA,EAAEA,EAAE,QAAQ,OAAOL,CAAC,CAAC,SAASM,EAAEN,EAAEK,EAAE,CAAC,OAAAL,EAAEgb,GAAGhb,EAAEK,CAAC,EAAEL,EAAE,MAAM,EAAEA,EAAE,QAAQ,KAAYA,CAAC,CAAC,SAASoB,EAAEf,EAAEW,EAAED,EAAE,CAAW,OAAVV,EAAE,MAAMU,EAAMf,GAA4Be,EAAEV,EAAE,UAAoBU,IAAP,MAAgBA,EAAEA,EAAE,MAAMA,EAAEC,GAAGX,EAAE,OAAO,EAAEW,GAAGD,IAAEV,EAAE,OAAO,EAASW,KAArGX,EAAE,OAAO,QAAQW,EAAqF,CAAC,SAASG,EAAEd,EAAE,CAAC,OAAAL,GACtfK,EAAE,YAAT,OAAqBA,EAAE,OAAO,GAAUA,CAAC,CAAC,SAASa,EAAElB,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAUV,IAAP,MAAcA,EAAE,MAAN,GAAiBA,EAAE4a,GAAGja,EAAEhB,EAAE,KAAKe,CAAC,EAAEV,EAAE,OAAOL,EAAEK,IAAEA,EAAEC,EAAED,EAAEW,CAAC,EAAEX,EAAE,OAAOL,EAASK,EAAC,CAAC,SAASY,EAAEjB,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIK,EAAEJ,EAAE,KAAK,OAAGI,IAAIyC,GAAUxC,EAAErB,EAAEK,EAAEW,EAAE,MAAM,SAASD,EAAEC,EAAE,GAAG,EAAYX,IAAP,OAAWA,EAAE,cAAce,GAAc,OAAOA,GAAlB,UAA4BA,IAAP,MAAUA,EAAE,WAAWkD,IAAIwW,GAAG1Z,CAAC,IAAIf,EAAE,OAAaU,EAAET,EAAED,EAAEW,EAAE,KAAK,EAAED,EAAE,IAAI6Z,GAAG5a,EAAEK,EAAEW,CAAC,EAAED,EAAE,OAAOf,EAAEe,IAAEA,EAAEma,GAAGla,EAAE,KAAKA,EAAE,IAAIA,EAAE,MAAM,KAAKhB,EAAE,KAAKe,CAAC,EAAEA,EAAE,IAAI6Z,GAAG5a,EAAEK,EAAEW,CAAC,EAAED,EAAE,OAAOf,EAASe,EAAC,CAAC,SAAS5B,EAAEa,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAUV,IAAP,MAAcA,EAAE,MAAN,GAC3eA,EAAE,UAAU,gBAAgBW,EAAE,eAAeX,EAAE,UAAU,iBAAiBW,EAAE,gBAAsBX,EAAE8a,GAAGna,EAAEhB,EAAE,KAAKe,CAAC,EAAEV,EAAE,OAAOL,EAAEK,IAAEA,EAAEC,EAAED,EAAEW,EAAE,UAAU,EAAE,EAAEX,EAAE,OAAOL,EAASK,EAAC,CAAC,SAASgB,EAAErB,EAAEK,EAAEW,EAAED,EAAEK,EAAE,CAAC,OAAUf,IAAP,MAAcA,EAAE,MAAN,GAAiBA,EAAE+a,GAAGpa,EAAEhB,EAAE,KAAKe,EAAEK,CAAC,EAAEf,EAAE,OAAOL,EAAEK,IAAEA,EAAEC,EAAED,EAAEW,CAAC,EAAEX,EAAE,OAAOL,EAASK,EAAC,CAAC,SAASf,EAAEU,EAAEK,EAAEW,EAAE,CAAC,GAAc,OAAOX,GAAlB,UAA0BA,IAAL,IAAmB,OAAOA,GAAlB,SAAoB,OAAOA,EAAE4a,GAAG,GAAG5a,EAAEL,EAAE,KAAKgB,CAAC,EAAEX,EAAE,OAAOL,EAAEK,EAAE,GAAc,OAAOA,GAAlB,UAA4BA,IAAP,KAAS,CAAC,OAAOA,EAAE,SAAQ,CAAE,KAAKsD,GAAG,OAAO3C,EAAEka,GAAG7a,EAAE,KAAKA,EAAE,IAAIA,EAAE,MAAM,KAAKL,EAAE,KAAKgB,CAAC,EACpfA,EAAE,IAAI4Z,GAAG5a,EAAE,KAAKK,CAAC,EAAEW,EAAE,OAAOhB,EAAEgB,EAAE,KAAK4C,GAAG,OAAOvD,EAAE8a,GAAG9a,EAAEL,EAAE,KAAKgB,CAAC,EAAEX,EAAE,OAAOL,EAAEK,EAAE,KAAKiE,GAAG,IAAIvD,EAAEV,EAAE,MAAM,OAAOf,EAAEU,EAAEe,EAAEV,EAAE,QAAQ,EAAEW,CAAC,CAAC,CAAC,GAAG6E,GAAGxF,CAAC,GAAGoE,GAAGpE,CAAC,EAAE,OAAOA,EAAE+a,GAAG/a,EAAEL,EAAE,KAAKgB,EAAE,IAAI,EAAEX,EAAE,OAAOL,EAAEK,EAAEwa,GAAG7a,EAAEK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAASd,EAAES,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAASD,IAAP,KAASA,EAAE,IAAI,KAAK,GAAc,OAAOW,GAAlB,UAA0BA,IAAL,IAAmB,OAAOA,GAAlB,SAAoB,OAAcV,IAAP,KAAS,KAAKY,EAAElB,EAAEK,EAAE,GAAGW,EAAED,CAAC,EAAE,GAAc,OAAOC,GAAlB,UAA4BA,IAAP,KAAS,CAAC,OAAOA,EAAE,SAAQ,CAAE,KAAK2C,GAAG,OAAO3C,EAAE,MAAMV,EAAEW,EAAEjB,EAAEK,EAAEW,EAAED,CAAC,EAAE,KAAK,KAAK6C,GAAG,OAAO5C,EAAE,MAAMV,EAAEnB,EAAEa,EAAEK,EAAEW,EAAED,CAAC,EAAE,KAAK,KAAKuD,GAAG,OAAOhE,EAAEU,EAAE,MAAMzB,EAAES,EACpfK,EAAEC,EAAEU,EAAE,QAAQ,EAAED,CAAC,CAAC,CAAC,GAAG8E,GAAG7E,CAAC,GAAGyD,GAAGzD,CAAC,EAAE,OAAcV,IAAP,KAAS,KAAKe,EAAErB,EAAEK,EAAEW,EAAED,EAAE,IAAI,EAAE8Z,GAAG7a,EAAEgB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAASnB,EAAEG,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,GAAc,OAAOS,GAAlB,UAA0BA,IAAL,IAAmB,OAAOA,GAAlB,SAAoB,OAAOf,EAAEA,EAAE,IAAIgB,CAAC,GAAG,KAAKE,EAAEb,EAAEL,EAAE,GAAGe,EAAET,CAAC,EAAE,GAAc,OAAOS,GAAlB,UAA4BA,IAAP,KAAS,CAAC,OAAOA,EAAE,SAAU,MAAK4C,GAAG,OAAO3D,EAAEA,EAAE,IAAWe,EAAE,MAAT,KAAaC,EAAED,EAAE,GAAG,GAAG,KAAKE,EAAEZ,EAAEL,EAAEe,EAAET,CAAC,EAAE,KAAKsD,GAAG,OAAO5D,EAAEA,EAAE,IAAWe,EAAE,MAAT,KAAaC,EAAED,EAAE,GAAG,GAAG,KAAK5B,EAAEkB,EAAEL,EAAEe,EAAET,CAAC,EAAE,KAAKgE,GAAG,IAAIlD,EAAEL,EAAE,MAAM,OAAOlB,EAAEG,EAAEK,EAAEW,EAAEI,EAAEL,EAAE,QAAQ,EAAET,CAAC,CAAC,CAAC,GAAGuF,GAAG9E,CAAC,GAAG0D,GAAG1D,CAAC,EAAE,OAAOf,EAAEA,EAAE,IAAIgB,CAAC,GAAG,KAAKK,EAAEhB,EAAEL,EAAEe,EAAET,EAAE,IAAI,EAAEua,GAAGxa,EAAEU,CAAC,CAAC,CAAC,OAAO,IAAI,CAC9f,SAAS3B,EAAEkB,EAAEa,EAAED,EAAED,EAAE,CAAC,QAAQ9B,EAAE,KAAKkC,EAAE,KAAK5B,EAAE0B,EAAExB,EAAEwB,EAAE,EAAEvB,EAAE,KAAYH,IAAP,MAAUE,EAAEuB,EAAE,OAAOvB,IAAI,CAACF,EAAE,MAAME,GAAGC,EAAEH,EAAEA,EAAE,MAAMG,EAAEH,EAAE,QAAQ,IAAIL,EAAEG,EAAEe,EAAEb,EAAEyB,EAAEvB,CAAC,EAAEsB,CAAC,EAAE,GAAU7B,IAAP,KAAS,CAAQK,IAAP,OAAWA,EAAEG,GAAG,KAAK,CAACI,GAAGP,GAAUL,EAAE,YAAT,MAAoBiB,EAAEC,EAAEb,CAAC,EAAE0B,EAAEC,EAAEhC,EAAE+B,EAAExB,CAAC,EAAS0B,IAAP,KAASlC,EAAEC,EAAEiC,EAAE,QAAQjC,EAAEiC,EAAEjC,EAAEK,EAAEG,CAAC,CAAC,GAAGD,IAAIuB,EAAE,OAAO,OAAOF,EAAEV,EAAEb,CAAC,EAAEiB,IAAG8W,GAAGlX,EAAEX,CAAC,EAAER,EAAE,GAAUM,IAAP,KAAS,CAAC,KAAKE,EAAEuB,EAAE,OAAOvB,IAAIF,EAAEH,EAAEgB,EAAEY,EAAEvB,CAAC,EAAEsB,CAAC,EAASxB,IAAP,OAAW0B,EAAEC,EAAE3B,EAAE0B,EAAExB,CAAC,EAAS0B,IAAP,KAASlC,EAAEM,EAAE4B,EAAE,QAAQ5B,EAAE4B,EAAE5B,GAAG,OAAAiB,IAAG8W,GAAGlX,EAAEX,CAAC,EAASR,CAAC,CAAC,IAAIM,EAAEsB,EAAET,EAAEb,CAAC,EAAEE,EAAEuB,EAAE,OAAOvB,IAAIC,EAAEC,EAAEJ,EAAEa,EAAEX,EAAEuB,EAAEvB,CAAC,EAAEsB,CAAC,EAASrB,IAAP,OAAWI,GAAUJ,EAAE,YAAT,MAAoBH,EAAE,OAChfG,EAAE,MADqf,KACjfD,EAAEC,EAAE,GAAG,EAAEuB,EAAEC,EAAExB,EAAEuB,EAAExB,CAAC,EAAS0B,IAAP,KAASlC,EAAES,EAAEyB,EAAE,QAAQzB,EAAEyB,EAAEzB,GAAG,OAAAI,GAAGP,EAAE,QAAQ,SAASO,EAAE,CAAC,OAAOK,EAAEC,EAAEN,CAAC,CAAC,CAAC,EAAEU,IAAG8W,GAAGlX,EAAEX,CAAC,EAASR,CAAC,CAAC,SAASK,EAAEc,EAAEa,EAAED,EAAED,EAAE,CAAC,IAAI9B,EAAEsF,GAAGvD,CAAC,EAAE,GAAgB,OAAO/B,GAApB,WAAsB,MAAM,MAAME,EAAE,GAAG,CAAC,EAAc,GAAZ6B,EAAE/B,EAAE,KAAK+B,CAAC,EAAWA,GAAN,KAAQ,MAAM,MAAM7B,EAAE,GAAG,CAAC,EAAE,QAAQI,EAAEN,EAAE,KAAKkC,EAAEF,EAAExB,EAAEwB,EAAE,EAAEvB,EAAE,KAAKR,EAAE8B,EAAE,KAAI,EAAUG,IAAP,MAAU,CAACjC,EAAE,KAAKO,IAAIP,EAAE8B,EAAE,KAAM,EAAC,CAACG,EAAE,MAAM1B,GAAGC,EAAEyB,EAAEA,EAAE,MAAMzB,EAAEyB,EAAE,QAAQ,IAAI7B,EAAED,EAAEe,EAAEe,EAAEjC,EAAE,MAAM6B,CAAC,EAAE,GAAUzB,IAAP,KAAS,CAAQ6B,IAAP,OAAWA,EAAEzB,GAAG,KAAK,CAACI,GAAGqB,GAAU7B,EAAE,YAAT,MAAoBa,EAAEC,EAAEe,CAAC,EAAEF,EAAEC,EAAE5B,EAAE2B,EAAExB,CAAC,EAASF,IAAP,KAASN,EAAEK,EAAEC,EAAE,QAAQD,EAAEC,EAAED,EAAE6B,EAAEzB,CAAC,CAAC,GAAGR,EAAE,KAAK,OAAO4B,EAAEV,EACzfe,CAAC,EAAEX,IAAG8W,GAAGlX,EAAEX,CAAC,EAAER,EAAE,GAAUkC,IAAP,KAAS,CAAC,KAAK,CAACjC,EAAE,KAAKO,IAAIP,EAAE8B,EAAE,KAAM,EAAC9B,EAAEE,EAAEgB,EAAElB,EAAE,MAAM6B,CAAC,EAAS7B,IAAP,OAAW+B,EAAEC,EAAEhC,EAAE+B,EAAExB,CAAC,EAASF,IAAP,KAASN,EAAEC,EAAEK,EAAE,QAAQL,EAAEK,EAAEL,GAAG,OAAAsB,IAAG8W,GAAGlX,EAAEX,CAAC,EAASR,CAAC,CAAC,IAAIkC,EAAEN,EAAET,EAAEe,CAAC,EAAE,CAACjC,EAAE,KAAKO,IAAIP,EAAE8B,EAAE,KAAI,EAAG9B,EAAES,EAAEwB,EAAEf,EAAEX,EAAEP,EAAE,MAAM6B,CAAC,EAAS7B,IAAP,OAAWY,GAAUZ,EAAE,YAAT,MAAoBiC,EAAE,OAAcjC,EAAE,MAAT,KAAaO,EAAEP,EAAE,GAAG,EAAE+B,EAAEC,EAAEhC,EAAE+B,EAAExB,CAAC,EAASF,IAAP,KAASN,EAAEC,EAAEK,EAAE,QAAQL,EAAEK,EAAEL,GAAG,OAAAY,GAAGqB,EAAE,QAAQ,SAASrB,EAAE,CAAC,OAAOK,EAAEC,EAAEN,CAAC,CAAC,CAAC,EAAEU,IAAG8W,GAAGlX,EAAEX,CAAC,EAASR,CAAC,CAAC,SAASwB,EAAEX,EAAEe,EAAEK,EAAEF,EAAE,CAAgF,GAApE,OAAOE,GAAlB,UAA4BA,IAAP,MAAUA,EAAE,OAAOyC,IAAWzC,EAAE,MAAT,OAAeA,EAAEA,EAAE,MAAM,UAAwB,OAAOA,GAAlB,UAA4BA,IAAP,KAAS,CAAC,OAAOA,EAAE,SAAQ,CAAE,KAAKuC,GAAG3D,EAAE,CAAC,QAAQiB,EAC7hBG,EAAE,IAAIjC,EAAE4B,EAAS5B,IAAP,MAAU,CAAC,GAAGA,EAAE,MAAM8B,EAAE,CAAU,GAATA,EAAEG,EAAE,KAAQH,IAAI4C,IAAI,GAAO1E,EAAE,MAAN,EAAU,CAAC6B,EAAEhB,EAAEb,EAAE,OAAO,EAAE4B,EAAET,EAAEnB,EAAEiC,EAAE,MAAM,QAAQ,EAAEL,EAAE,OAAOf,EAAEA,EAAEe,EAAE,MAAMf,CAAC,UAAUb,EAAE,cAAc8B,GAAc,OAAOA,GAAlB,UAA4BA,IAAP,MAAUA,EAAE,WAAWqD,IAAIwW,GAAG7Z,CAAC,IAAI9B,EAAE,KAAK,CAAC6B,EAAEhB,EAAEb,EAAE,OAAO,EAAE4B,EAAET,EAAEnB,EAAEiC,EAAE,KAAK,EAAEL,EAAE,IAAI6Z,GAAG5a,EAAEb,EAAEiC,CAAC,EAAEL,EAAE,OAAOf,EAAEA,EAAEe,EAAE,MAAMf,CAAC,CAACgB,EAAEhB,EAAEb,CAAC,EAAE,KAAK,MAAMkB,EAAEL,EAAEb,CAAC,EAAEA,EAAEA,EAAE,OAAO,CAACiC,EAAE,OAAOyC,IAAI9C,EAAEqa,GAAGha,EAAE,MAAM,SAASpB,EAAE,KAAKkB,EAAEE,EAAE,GAAG,EAAEL,EAAE,OAAOf,EAAEA,EAAEe,IAAIG,EAAEga,GAAG9Z,EAAE,KAAKA,EAAE,IAAIA,EAAE,MAAM,KAAKpB,EAAE,KAAKkB,CAAC,EAAEA,EAAE,IAAI0Z,GAAG5a,EAAEe,EAAEK,CAAC,EAAEF,EAAE,OAAOlB,EAAEA,EAAEkB,EAAE,CAAC,OAAOC,EAAEnB,CAAC,EAAE,KAAK4D,GAAG5D,EAAE,CAAC,IAAIb,EAAEiC,EAAE,IACrfL,IADyf,MACtf,CAAC,GAAGA,EAAE,MAAM5B,EAAE,GAAO4B,EAAE,MAAN,GAAWA,EAAE,UAAU,gBAAgBK,EAAE,eAAeL,EAAE,UAAU,iBAAiBK,EAAE,eAAe,CAACJ,EAAEhB,EAAEe,EAAE,OAAO,EAAEA,EAAET,EAAES,EAAEK,EAAE,UAAU,CAAE,GAAEL,EAAE,OAAOf,EAAEA,EAAEe,EAAE,MAAMf,CAAC,KAAK,CAACgB,EAAEhB,EAAEe,CAAC,EAAE,KAAK,MAAMV,EAAEL,EAAEe,CAAC,EAAEA,EAAEA,EAAE,OAAO,CAACA,EAAEoa,GAAG/Z,EAAEpB,EAAE,KAAKkB,CAAC,EAAEH,EAAE,OAAOf,EAAEA,EAAEe,CAAC,CAAC,OAAOI,EAAEnB,CAAC,EAAE,KAAKsE,GAAG,OAAOnF,EAAEiC,EAAE,MAAMT,EAAEX,EAAEe,EAAE5B,EAAEiC,EAAE,QAAQ,EAAEF,CAAC,CAAC,CAAC,GAAG2E,GAAGzE,CAAC,EAAE,OAAOhC,EAAEY,EAAEe,EAAEK,EAAEF,CAAC,EAAE,GAAGuD,GAAGrD,CAAC,EAAE,OAAO5B,EAAEQ,EAAEe,EAAEK,EAAEF,CAAC,EAAE2Z,GAAG7a,EAAEoB,CAAC,CAAC,CAAC,OAAiB,OAAOA,GAAlB,UAA0BA,IAAL,IAAmB,OAAOA,GAAlB,UAAqBA,EAAE,GAAGA,EAASL,IAAP,MAAcA,EAAE,MAAN,GAAWC,EAAEhB,EAAEe,EAAE,OAAO,EAAEA,EAAET,EAAES,EAAEK,CAAC,EAAEL,EAAE,OAAOf,EAAEA,EAAEe,IACnfC,EAAEhB,EAAEe,CAAC,EAAEA,EAAEka,GAAG7Z,EAAEpB,EAAE,KAAKkB,CAAC,EAAEH,EAAE,OAAOf,EAAEA,EAAEe,GAAGI,EAAEnB,CAAC,GAAGgB,EAAEhB,EAAEe,CAAC,CAAC,CAAC,OAAOJ,CAAC,CAAC,IAAI0a,GAAGN,GAAG,EAAE,EAAEO,GAAGP,GAAG,EAAE,EAAEQ,GAAG,GAAGC,GAAG1F,GAAGyF,EAAE,EAAEE,GAAG3F,GAAGyF,EAAE,EAAEG,GAAG5F,GAAGyF,EAAE,EAAE,SAASI,GAAG3b,EAAE,CAAC,GAAGA,IAAIub,GAAG,MAAM,MAAMlc,EAAE,GAAG,CAAC,EAAE,OAAOW,CAAC,CAAC,SAAS4b,GAAG5b,EAAEK,EAAE,CAAuC,OAAtCG,GAAEkb,GAAGrb,CAAC,EAAEG,GAAEib,GAAGzb,CAAC,EAAEQ,GAAEgb,GAAGD,EAAE,EAAEvb,EAAEK,EAAE,SAAgBL,EAAC,CAAE,IAAK,GAAE,IAAK,IAAGK,GAAGA,EAAEA,EAAE,iBAAiBA,EAAE,aAAa+F,GAAG,KAAK,EAAE,EAAE,MAAM,QAAQpG,EAAMA,IAAJ,EAAMK,EAAE,WAAWA,EAAEA,EAAEL,EAAE,cAAc,KAAKA,EAAEA,EAAE,QAAQK,EAAE+F,GAAG/F,EAAEL,CAAC,CAAC,CAACI,GAAEob,EAAE,EAAEhb,GAAEgb,GAAGnb,CAAC,CAAC,CAAC,SAASwb,IAAI,CAACzb,GAAEob,EAAE,EAAEpb,GAAEqb,EAAE,EAAErb,GAAEsb,EAAE,CAAC,CACnb,SAASI,GAAG9b,EAAE,CAAC2b,GAAGD,GAAG,OAAO,EAAE,IAAIrb,EAAEsb,GAAGH,GAAG,OAAO,EAAMxa,EAAEoF,GAAG/F,EAAEL,EAAE,IAAI,EAAEK,IAAIW,IAAIR,GAAEib,GAAGzb,CAAC,EAAEQ,GAAEgb,GAAGxa,CAAC,EAAE,CAAC,SAAS+a,GAAG/b,EAAE,CAACyb,GAAG,UAAUzb,IAAII,GAAEob,EAAE,EAAEpb,GAAEqb,EAAE,EAAE,CAAC,IAAI3a,GAAEgV,GAAG,CAAC,EACtJ,SAASkG,GAAGhc,EAAE,CAAC,QAAQK,EAAEL,EAASK,IAAP,MAAU,CAAC,GAAQA,EAAE,MAAP,GAAW,CAAC,IAAIW,EAAEX,EAAE,cAAc,GAAUW,IAAP,OAAWA,EAAEA,EAAE,WAAkBA,IAAP,MAAiBA,EAAE,OAAT,MAAsBA,EAAE,OAAT,MAAe,OAAOX,CAAC,SAAcA,EAAE,MAAP,IAAqBA,EAAE,cAAc,cAAzB,QAAsC,GAAQA,EAAE,MAAM,IAAK,OAAOA,UAAiBA,EAAE,QAAT,KAAe,CAACA,EAAE,MAAM,OAAOA,EAAEA,EAAEA,EAAE,MAAM,QAAQ,CAAC,GAAGA,IAAIL,EAAE,MAAM,KAAYK,EAAE,UAAT,MAAkB,CAAC,GAAUA,EAAE,SAAT,MAAiBA,EAAE,SAASL,EAAE,OAAO,KAAKK,EAAEA,EAAE,MAAM,CAACA,EAAE,QAAQ,OAAOA,EAAE,OAAOA,EAAEA,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI4b,GAAG,GACrc,SAASC,IAAI,CAAC,QAAQlc,EAAE,EAAEA,EAAEic,GAAG,OAAOjc,IAAIic,GAAGjc,CAAC,EAAE,8BAA8B,KAAKic,GAAG,OAAO,CAAC,CAAC,IAAIE,GAAGzY,GAAG,uBAAuB0Y,GAAG1Y,GAAG,wBAAwB2Y,GAAG,EAAE/a,GAAE,KAAKC,GAAE,KAAKE,GAAE,KAAK6a,GAAG,GAAGC,GAAG,GAAGC,GAAG,EAAEC,GAAG,EAAE,SAAS/a,IAAG,CAAC,MAAM,MAAMrC,EAAE,GAAG,CAAC,CAAE,CAAC,SAASqd,GAAG1c,EAAEK,EAAE,CAAC,GAAUA,IAAP,KAAS,MAAM,GAAG,QAAQW,EAAE,EAAEA,EAAEX,EAAE,QAAQW,EAAEhB,EAAE,OAAOgB,IAAI,GAAG,CAACyQ,GAAGzR,EAAEgB,CAAC,EAAEX,EAAEW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAChW,SAAS2b,GAAG3c,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAE,CAAuH,GAAtHib,GAAGjb,EAAEE,GAAEjB,EAAEA,EAAE,cAAc,KAAKA,EAAE,YAAY,KAAKA,EAAE,MAAM,EAAE8b,GAAG,QAAenc,IAAP,MAAiBA,EAAE,gBAAT,KAAuB4c,GAAGC,GAAG7c,EAAEgB,EAAED,EAAET,CAAC,EAAKic,GAAG,CAACnb,EAAE,EAAE,EAAE,CAAY,GAAXmb,GAAG,GAAGC,GAAG,EAAK,IAAIpb,EAAE,MAAM,MAAM/B,EAAE,GAAG,CAAC,EAAE+B,GAAG,EAAEK,GAAEF,GAAE,KAAKlB,EAAE,YAAY,KAAK8b,GAAG,QAAQW,GAAG9c,EAAEgB,EAAED,EAAET,CAAC,CAAC,OAAOic,GAAG,CAA+D,GAA9DJ,GAAG,QAAQY,GAAG1c,EAASkB,KAAP,MAAiBA,GAAE,OAAT,KAAc8a,GAAG,EAAE5a,GAAEF,GAAED,GAAE,KAAKgb,GAAG,GAAMjc,EAAE,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAE,OAAOW,CAAC,CAAC,SAASgd,IAAI,CAAC,IAAIhd,EAAMwc,KAAJ,EAAO,OAAAA,GAAG,EAASxc,CAAC,CAC/Y,SAASid,IAAI,CAAC,IAAIjd,EAAE,CAAC,cAAc,KAAK,UAAU,KAAK,UAAU,KAAK,MAAM,KAAK,KAAK,IAAI,EAAE,OAAOyB,KAAP,KAASH,GAAE,cAAcG,GAAEzB,EAAEyB,GAAEA,GAAE,KAAKzB,EAASyB,EAAC,CAAC,SAASyb,IAAI,CAAC,GAAU3b,KAAP,KAAS,CAAC,IAAIvB,EAAEsB,GAAE,UAAUtB,EAASA,IAAP,KAASA,EAAE,cAAc,IAAI,MAAMA,EAAEuB,GAAE,KAAK,IAAIlB,EAASoB,KAAP,KAASH,GAAE,cAAcG,GAAE,KAAK,GAAUpB,IAAP,KAASoB,GAAEpB,EAAEkB,GAAEvB,MAAM,CAAC,GAAUA,IAAP,KAAS,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAEkC,GAAEvB,EAAEA,EAAE,CAAC,cAAcuB,GAAE,cAAc,UAAUA,GAAE,UAAU,UAAUA,GAAE,UAAU,MAAMA,GAAE,MAAM,KAAK,IAAI,EAASE,KAAP,KAASH,GAAE,cAAcG,GAAEzB,EAAEyB,GAAEA,GAAE,KAAKzB,CAAC,CAAC,OAAOyB,EAAC,CACje,SAAS0b,GAAGnd,EAAEK,EAAE,CAAC,OAAmB,OAAOA,GAApB,WAAsBA,EAAEL,CAAC,EAAEK,CAAC,CACnD,SAAS+c,GAAGpd,EAAE,CAAC,IAAIK,EAAE6c,GAAE,EAAGlc,EAAEX,EAAE,MAAM,GAAUW,IAAP,KAAS,MAAM,MAAM3B,EAAE,GAAG,CAAC,EAAE2B,EAAE,oBAAoBhB,EAAE,IAAIe,EAAEQ,GAAEjB,EAAES,EAAE,UAAUK,EAAEJ,EAAE,QAAQ,GAAUI,IAAP,KAAS,CAAC,GAAUd,IAAP,KAAS,CAAC,IAAIa,EAAEb,EAAE,KAAKA,EAAE,KAAKc,EAAE,KAAKA,EAAE,KAAKD,CAAC,CAACJ,EAAE,UAAUT,EAAEc,EAAEJ,EAAE,QAAQ,IAAI,CAAC,GAAUV,IAAP,KAAS,CAACc,EAAEd,EAAE,KAAKS,EAAEA,EAAE,UAAU,IAAIG,EAAEC,EAAE,KAAKF,EAAE,KAAK9B,EAAEiC,EAAE,EAAE,CAAC,IAAIC,EAAElC,EAAE,KAAK,IAAIkd,GAAGhb,KAAKA,EAASJ,IAAP,OAAWA,EAAEA,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO9B,EAAE,OAAO,cAAcA,EAAE,cAAc,WAAWA,EAAE,WAAW,KAAK,IAAI,GAAG4B,EAAE5B,EAAE,cAAcA,EAAE,WAAWa,EAAEe,EAAE5B,EAAE,MAAM,MAAM,CAAC,IAAIG,EAAE,CAAC,KAAK+B,EAAE,OAAOlC,EAAE,OAAO,cAAcA,EAAE,cACngB,WAAWA,EAAE,WAAW,KAAK,IAAI,EAAS8B,IAAP,MAAUC,EAAED,EAAE3B,EAAE6B,EAAEJ,GAAGE,EAAEA,EAAE,KAAK3B,EAAEgC,GAAE,OAAOD,EAAE4Y,IAAI5Y,CAAC,CAAClC,EAAEA,EAAE,IAAI,OAAcA,IAAP,MAAUA,IAAIiC,GAAUH,IAAP,KAASE,EAAEJ,EAAEE,EAAE,KAAKC,EAAEuQ,GAAG1Q,EAAEV,EAAE,aAAa,IAAI8Y,GAAG,IAAI9Y,EAAE,cAAcU,EAAEV,EAAE,UAAUc,EAAEd,EAAE,UAAUY,EAAED,EAAE,kBAAkBD,CAAC,CAAiB,GAAhBf,EAAEgB,EAAE,YAAsBhB,IAAP,KAAS,CAACM,EAAEN,EAAE,GAAGoB,EAAEd,EAAE,KAAKgB,GAAE,OAAOF,EAAE6Y,IAAI7Y,EAAEd,EAAEA,EAAE,WAAWA,IAAIN,EAAE,MAAaM,IAAP,OAAWU,EAAE,MAAM,GAAG,MAAM,CAACX,EAAE,cAAcW,EAAE,QAAQ,CAAC,CAC9X,SAASqc,GAAGrd,EAAE,CAAC,IAAIK,EAAE6c,KAAKlc,EAAEX,EAAE,MAAM,GAAUW,IAAP,KAAS,MAAM,MAAM3B,EAAE,GAAG,CAAC,EAAE2B,EAAE,oBAAoBhB,EAAE,IAAIe,EAAEC,EAAE,SAASV,EAAEU,EAAE,QAAQI,EAAEf,EAAE,cAAc,GAAUC,IAAP,KAAS,CAACU,EAAE,QAAQ,KAAK,IAAIG,EAAEb,EAAEA,EAAE,KAAK,GAAGc,EAAEpB,EAAEoB,EAAED,EAAE,MAAM,EAAEA,EAAEA,EAAE,WAAWA,IAAIb,GAAGmR,GAAGrQ,EAAEf,EAAE,aAAa,IAAI8Y,GAAG,IAAI9Y,EAAE,cAAce,EAASf,EAAE,YAAT,OAAqBA,EAAE,UAAUe,GAAGJ,EAAE,kBAAkBI,CAAC,CAAC,MAAM,CAACA,EAAEL,CAAC,CAAC,CAAC,SAASuc,IAAI,CAAE,CACrW,SAASC,GAAGvd,EAAEK,EAAE,CAAC,IAAIW,EAAEM,GAAEP,EAAEmc,GAAI,EAAC5c,EAAED,EAAC,EAAGe,EAAE,CAACqQ,GAAG1Q,EAAE,cAAcT,CAAC,EAAqE,GAAnEc,IAAIL,EAAE,cAAcT,EAAE6Y,GAAG,IAAIpY,EAAEA,EAAE,MAAMyc,GAAGC,GAAG,KAAK,KAAKzc,EAAED,EAAEf,CAAC,EAAE,CAACA,CAAC,CAAC,EAAKe,EAAE,cAAcV,GAAGe,GAAUK,KAAP,MAAUA,GAAE,cAAc,IAAI,EAAE,CAAuD,GAAtDT,EAAE,OAAO,KAAK0c,GAAG,EAAEC,GAAG,KAAK,KAAK3c,EAAED,EAAET,EAAED,CAAC,EAAE,OAAO,IAAI,EAAYsB,KAAP,KAAS,MAAM,MAAMtC,EAAE,GAAG,CAAC,EAAOgd,GAAG,IAAKuB,GAAG5c,EAAEX,EAAEC,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,SAASsd,GAAG5d,EAAEK,EAAEW,EAAE,CAAChB,EAAE,OAAO,MAAMA,EAAE,CAAC,YAAYK,EAAE,MAAMW,CAAC,EAAEX,EAAEiB,GAAE,YAAmBjB,IAAP,MAAUA,EAAE,CAAC,WAAW,KAAK,OAAO,IAAI,EAAEiB,GAAE,YAAYjB,EAAEA,EAAE,OAAO,CAACL,CAAC,IAAIgB,EAAEX,EAAE,OAAcW,IAAP,KAASX,EAAE,OAAO,CAACL,CAAC,EAAEgB,EAAE,KAAKhB,CAAC,EAAE,CAClf,SAAS2d,GAAG3d,EAAEK,EAAEW,EAAED,EAAE,CAACV,EAAE,MAAMW,EAAEX,EAAE,YAAYU,EAAE8c,GAAGxd,CAAC,GAAGyd,GAAG9d,CAAC,CAAC,CAAC,SAASyd,GAAGzd,EAAEK,EAAEW,EAAE,CAAC,OAAOA,EAAE,UAAU,CAAC6c,GAAGxd,CAAC,GAAGyd,GAAG9d,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS6d,GAAG7d,EAAE,CAAC,IAAIK,EAAEL,EAAE,YAAYA,EAAEA,EAAE,MAAM,GAAG,CAAC,IAAIgB,EAAEX,EAAG,EAAC,MAAM,CAACoR,GAAGzR,EAAEgB,CAAC,CAAC,MAAS,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS8c,GAAG9d,EAAE,CAAC,IAAIK,EAAEmZ,GAAGxZ,EAAE,CAAC,EAASK,IAAP,MAAUka,GAAGla,EAAEL,EAAE,EAAE,EAAE,CAAC,CAClQ,SAAS+d,GAAG/d,EAAE,CAAC,IAAIK,EAAE4c,KAAK,OAAa,OAAOjd,GAApB,aAAwBA,EAAEA,EAAG,GAAEK,EAAE,cAAcA,EAAE,UAAUL,EAAEA,EAAE,CAAC,QAAQ,KAAK,YAAY,KAAK,MAAM,EAAE,SAAS,KAAK,oBAAoBmd,GAAG,kBAAkBnd,CAAC,EAAEK,EAAE,MAAML,EAAEA,EAAEA,EAAE,SAASge,GAAG,KAAK,KAAK1c,GAAEtB,CAAC,EAAQ,CAACK,EAAE,cAAcL,CAAC,CAAC,CAC5P,SAAS0d,GAAG1d,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAAf,EAAE,CAAC,IAAIA,EAAE,OAAOK,EAAE,QAAQW,EAAE,KAAKD,EAAE,KAAK,IAAI,EAAEV,EAAEiB,GAAE,YAAmBjB,IAAP,MAAUA,EAAE,CAAC,WAAW,KAAK,OAAO,IAAI,EAAEiB,GAAE,YAAYjB,EAAEA,EAAE,WAAWL,EAAE,KAAKA,IAAIgB,EAAEX,EAAE,WAAkBW,IAAP,KAASX,EAAE,WAAWL,EAAE,KAAKA,GAAGe,EAAEC,EAAE,KAAKA,EAAE,KAAKhB,EAAEA,EAAE,KAAKe,EAAEV,EAAE,WAAWL,IAAWA,CAAC,CAAC,SAASie,IAAI,CAAC,OAAOf,GAAI,EAAC,aAAa,CAAC,SAASgB,GAAGle,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAE2c,GAAI,EAAC3b,GAAE,OAAOtB,EAAEM,EAAE,cAAcod,GAAG,EAAErd,EAAEW,EAAE,OAAgBD,IAAT,OAAW,KAAKA,CAAC,CAAC,CAC9Y,SAASod,GAAGne,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAE4c,GAAE,EAAGnc,EAAWA,IAAT,OAAW,KAAKA,EAAE,IAAIK,EAAE,OAAO,GAAUG,KAAP,KAAS,CAAC,IAAIJ,EAAEI,GAAE,cAA0B,GAAZH,EAAED,EAAE,QAAkBJ,IAAP,MAAU2b,GAAG3b,EAAEI,EAAE,IAAI,EAAE,CAACb,EAAE,cAAcod,GAAGrd,EAAEW,EAAEI,EAAEL,CAAC,EAAE,MAAM,CAAC,CAACO,GAAE,OAAOtB,EAAEM,EAAE,cAAcod,GAAG,EAAErd,EAAEW,EAAEI,EAAEL,CAAC,CAAC,CAAC,SAASqd,GAAGpe,EAAEK,EAAE,CAAC,OAAO6d,GAAG,QAAQ,EAAEle,EAAEK,CAAC,CAAC,CAAC,SAASmd,GAAGxd,EAAEK,EAAE,CAAC,OAAO8d,GAAG,KAAK,EAAEne,EAAEK,CAAC,CAAC,CAAC,SAASge,GAAGre,EAAEK,EAAE,CAAC,OAAO8d,GAAG,EAAE,EAAEne,EAAEK,CAAC,CAAC,CAAC,SAASie,GAAGte,EAAEK,EAAE,CAAC,OAAO8d,GAAG,EAAE,EAAEne,EAAEK,CAAC,CAAC,CAChX,SAASke,GAAGve,EAAEK,EAAE,CAAC,GAAgB,OAAOA,GAApB,WAAsB,OAAOL,EAAEA,EAAG,EAACK,EAAEL,CAAC,EAAE,UAAU,CAACK,EAAE,IAAI,CAAC,EAAE,GAAUA,GAAP,KAAqB,OAAOL,EAAEA,IAAIK,EAAE,QAAQL,EAAE,UAAU,CAACK,EAAE,QAAQ,IAAI,CAAC,CAAC,SAASme,GAAGxe,EAAEK,EAAEW,EAAE,CAAC,OAAAA,EAASA,GAAP,KAAqBA,EAAE,OAAO,CAAChB,CAAC,CAAC,EAAE,KAAYme,GAAG,EAAE,EAAEI,GAAG,KAAK,KAAKle,EAAEL,CAAC,EAAEgB,CAAC,CAAC,CAAC,SAASyd,IAAI,CAAE,UAASC,GAAG1e,EAAEK,EAAE,CAAC,IAAIW,EAAEkc,GAAE,EAAG7c,EAAWA,IAAT,OAAW,KAAKA,EAAE,IAAIU,EAAEC,EAAE,cAAc,OAAUD,IAAP,MAAiBV,IAAP,MAAUqc,GAAGrc,EAAEU,EAAE,CAAC,CAAC,EAASA,EAAE,CAAC,GAAEC,EAAE,cAAc,CAAChB,EAAEK,CAAC,EAASL,EAAC,CAC7Z,SAAS2e,GAAG3e,EAAEK,EAAE,CAAC,IAAIW,EAAEkc,GAAE,EAAG7c,EAAWA,IAAT,OAAW,KAAKA,EAAE,IAAIU,EAAEC,EAAE,cAAc,OAAUD,IAAP,MAAiBV,IAAP,MAAUqc,GAAGrc,EAAEU,EAAE,CAAC,CAAC,EAASA,EAAE,CAAC,GAAEf,EAAEA,EAAG,EAACgB,EAAE,cAAc,CAAChB,EAAEK,CAAC,EAASL,EAAC,CAAC,SAAS4e,GAAG5e,EAAEK,EAAEW,EAAE,CAAC,OAAQqb,GAAG,IAAiE5K,GAAGzQ,EAAEX,CAAC,IAAIW,EAAEsJ,GAAI,EAAChJ,GAAE,OAAON,EAAEiZ,IAAIjZ,EAAEhB,EAAE,UAAU,IAAWK,IAA/GL,EAAE,YAAYA,EAAE,UAAU,GAAGmZ,GAAG,IAAInZ,EAAE,cAAcgB,EAA4D,CAAC,SAAS6d,GAAG7e,EAAEK,EAAE,CAAC,IAAIW,EAAEd,GAAEA,GAAMc,IAAJ,GAAO,EAAEA,EAAEA,EAAE,EAAEhB,EAAE,EAAE,EAAE,IAAIe,EAAEqb,GAAG,WAAWA,GAAG,WAAW,CAAE,EAAC,GAAG,CAACpc,EAAE,EAAE,EAAEK,EAAG,SAAC,CAAQH,GAAEc,EAAEob,GAAG,WAAWrb,CAAC,CAAC,CAAC,SAAS+d,IAAI,CAAC,OAAO5B,GAAE,EAAG,aAAa,CAC1d,SAAS6B,GAAG/e,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEuZ,GAAGta,CAAC,EAAiE,GAA/DgB,EAAE,CAAC,KAAKD,EAAE,OAAOC,EAAE,cAAc,GAAG,WAAW,KAAK,KAAK,IAAI,EAAKge,GAAGhf,CAAC,EAAEif,GAAG5e,EAAEW,CAAC,UAAUA,EAAEuY,GAAGvZ,EAAEK,EAAEW,EAAED,CAAC,EAASC,IAAP,KAAS,CAAC,IAAIV,EAAEO,KAAI0Z,GAAGvZ,EAAEhB,EAAEe,EAAET,CAAC,EAAE4e,GAAGle,EAAEX,EAAEU,CAAC,CAAC,CAAC,CAC/K,SAASid,GAAGhe,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEuZ,GAAGta,CAAC,EAAEM,EAAE,CAAC,KAAKS,EAAE,OAAOC,EAAE,cAAc,GAAG,WAAW,KAAK,KAAK,IAAI,EAAE,GAAGge,GAAGhf,CAAC,EAAEif,GAAG5e,EAAEC,CAAC,MAAM,CAAC,IAAIc,EAAEpB,EAAE,UAAU,GAAOA,EAAE,QAAN,IAAqBoB,IAAP,MAAcA,EAAE,QAAN,KAAeA,EAAEf,EAAE,oBAA2Be,IAAP,MAAU,GAAG,CAAC,IAAID,EAAEd,EAAE,kBAAkBa,EAAEE,EAAED,EAAEH,CAAC,EAAoC,GAAlCV,EAAE,cAAc,GAAGA,EAAE,WAAWY,EAAKuQ,GAAGvQ,EAAEC,CAAC,EAAE,CAAC,IAAIF,EAAEZ,EAAE,YAAmBY,IAAP,MAAUX,EAAE,KAAKA,EAAEgZ,GAAGjZ,CAAC,IAAIC,EAAE,KAAKW,EAAE,KAAKA,EAAE,KAAKX,GAAGD,EAAE,YAAYC,EAAE,MAAM,CAAC,MAAS,CAAE,SAAS,CAAAU,EAAEuY,GAAGvZ,EAAEK,EAAEC,EAAES,CAAC,EAASC,IAAP,OAAWV,EAAEO,GAAC,EAAG0Z,GAAGvZ,EAAEhB,EAAEe,EAAET,CAAC,EAAE4e,GAAGle,EAAEX,EAAEU,CAAC,EAAE,CAAC,CAC/c,SAASie,GAAGhf,EAAE,CAAC,IAAIK,EAAEL,EAAE,UAAU,OAAOA,IAAIsB,IAAUjB,IAAP,MAAUA,IAAIiB,EAAC,CAAC,SAAS2d,GAAGjf,EAAEK,EAAE,CAACkc,GAAGD,GAAG,GAAG,IAAItb,EAAEhB,EAAE,QAAegB,IAAP,KAASX,EAAE,KAAKA,GAAGA,EAAE,KAAKW,EAAE,KAAKA,EAAE,KAAKX,GAAGL,EAAE,QAAQK,CAAC,CAAC,SAAS6e,GAAGlf,EAAEK,EAAEW,EAAE,CAAC,GAAQA,EAAE,QAAS,CAAC,IAAID,EAAEV,EAAE,MAAMU,GAAGf,EAAE,aAAagB,GAAGD,EAAEV,EAAE,MAAMW,EAAE0J,GAAG1K,EAAEgB,CAAC,CAAC,CAAC,CAC9P,IAAI+b,GAAG,CAAC,YAAY3D,GAAG,YAAY1X,GAAE,WAAWA,GAAE,UAAUA,GAAE,oBAAoBA,GAAE,mBAAmBA,GAAE,gBAAgBA,GAAE,QAAQA,GAAE,WAAWA,GAAE,OAAOA,GAAE,SAASA,GAAE,cAAcA,GAAE,iBAAiBA,GAAE,cAAcA,GAAE,iBAAiBA,GAAE,qBAAqBA,GAAE,MAAMA,GAAE,yBAAyB,EAAE,EAAEkb,GAAG,CAAC,YAAYxD,GAAG,YAAY,SAASpZ,EAAEK,EAAE,CAAC,OAAA4c,GAAI,EAAC,cAAc,CAACjd,EAAWK,IAAT,OAAW,KAAKA,CAAC,EAASL,CAAC,EAAE,WAAWoZ,GAAG,UAAUgF,GAAG,oBAAoB,SAASpe,EAAEK,EAAEW,EAAE,CAAC,OAAAA,EAASA,GAAP,KAAqBA,EAAE,OAAO,CAAChB,CAAC,CAAC,EAAE,KAAYke,GAAG,QAC3f,EAAEK,GAAG,KAAK,KAAKle,EAAEL,CAAC,EAAEgB,CAAC,CAAC,EAAE,gBAAgB,SAAShB,EAAEK,EAAE,CAAC,OAAO6d,GAAG,QAAQ,EAAEle,EAAEK,CAAC,CAAC,EAAE,mBAAmB,SAASL,EAAEK,EAAE,CAAC,OAAO6d,GAAG,EAAE,EAAEle,EAAEK,CAAC,CAAC,EAAE,QAAQ,SAASL,EAAEK,EAAE,CAAC,IAAIW,EAAEic,GAAE,EAAG,OAAA5c,EAAWA,IAAT,OAAW,KAAKA,EAAEL,EAAEA,EAAC,EAAGgB,EAAE,cAAc,CAAChB,EAAEK,CAAC,EAASL,CAAC,EAAE,WAAW,SAASA,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEkc,GAAI,EAAC,OAAA5c,EAAWW,IAAT,OAAWA,EAAEX,CAAC,EAAEA,EAAEU,EAAE,cAAcA,EAAE,UAAUV,EAAEL,EAAE,CAAC,QAAQ,KAAK,YAAY,KAAK,MAAM,EAAE,SAAS,KAAK,oBAAoBA,EAAE,kBAAkBK,CAAC,EAAEU,EAAE,MAAMf,EAAEA,EAAEA,EAAE,SAAS+e,GAAG,KAAK,KAAKzd,GAAEtB,CAAC,EAAQ,CAACe,EAAE,cAAcf,CAAC,CAAC,EAAE,OAAO,SAASA,EAAE,CAAC,IAAIK,EACrf4c,GAAE,EAAG,OAAAjd,EAAE,CAAC,QAAQA,CAAC,EAASK,EAAE,cAAcL,CAAC,EAAE,SAAS+d,GAAG,cAAcU,GAAG,iBAAiB,SAASze,EAAE,CAAC,OAAOid,GAAE,EAAG,cAAcjd,CAAC,EAAE,cAAc,UAAU,CAAC,IAAIA,EAAE+d,GAAG,EAAE,EAAE1d,EAAEL,EAAE,CAAC,EAAE,OAAAA,EAAE6e,GAAG,KAAK,KAAK7e,EAAE,CAAC,CAAC,EAAEid,GAAE,EAAG,cAAcjd,EAAQ,CAACK,EAAEL,CAAC,CAAC,EAAE,iBAAiB,UAAU,CAAE,EAAC,qBAAqB,SAASA,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEO,GAAEhB,EAAE2c,GAAI,EAAC,GAAGvc,GAAE,CAAC,GAAYM,IAAT,OAAW,MAAM,MAAM3B,EAAE,GAAG,CAAC,EAAE2B,EAAEA,EAAG,MAAK,CAAO,GAANA,EAAEX,EAAG,EAAWsB,KAAP,KAAS,MAAM,MAAMtC,EAAE,GAAG,CAAC,EAAOgd,GAAG,IAAKuB,GAAG7c,EAAEV,EAAEW,CAAC,CAAC,CAACV,EAAE,cAAcU,EAAE,IAAII,EAAE,CAAC,MAAMJ,EAAE,YAAYX,CAAC,EAAE,OAAAC,EAAE,MAAMc,EAAEgd,GAAGX,GAAG,KAAK,KAAK1c,EACpfK,EAAEpB,CAAC,EAAE,CAACA,CAAC,CAAC,EAAEe,EAAE,OAAO,KAAK2c,GAAG,EAAEC,GAAG,KAAK,KAAK5c,EAAEK,EAAEJ,EAAEX,CAAC,EAAE,OAAO,IAAI,EAASW,CAAC,EAAE,MAAM,UAAU,CAAC,IAAIhB,EAAEid,GAAI,EAAC5c,EAAEsB,GAAE,iBAAiB,GAAGjB,GAAE,CAAC,IAAIM,EAAEuW,GAAOxW,EAAEuW,GAAGtW,GAAGD,EAAE,EAAE,GAAG,GAAG4I,GAAG5I,CAAC,EAAE,IAAI,SAAS,EAAE,EAAEC,EAAEX,EAAE,IAAIA,EAAE,IAAIW,EAAEA,EAAEwb,KAAK,EAAExb,IAAIX,GAAG,IAAIW,EAAE,SAAS,EAAE,GAAGX,GAAG,GAAG,MAAMW,EAAEyb,KAAKpc,EAAE,IAAIA,EAAE,IAAIW,EAAE,SAAS,EAAE,EAAE,IAAI,OAAOhB,EAAE,cAAcK,CAAC,EAAE,yBAAyB,EAAE,EAAEwc,GAAG,CAAC,YAAYzD,GAAG,YAAYsF,GAAG,WAAWtF,GAAG,UAAUoE,GAAG,oBAAoBgB,GAAG,mBAAmBH,GAAG,gBAAgBC,GAAG,QAAQK,GAAG,WAAWvB,GAAG,OAAOa,GAAG,SAAS,UAAU,CAAC,OAAOb,GAAGD,EAAE,CAAC,EACrhB,cAAcsB,GAAG,iBAAiB,SAASze,EAAE,CAAC,IAAIK,EAAE6c,KAAK,OAAO0B,GAAGve,EAAEkB,GAAE,cAAcvB,CAAC,CAAC,EAAE,cAAc,UAAU,CAAC,IAAIA,EAAEod,GAAGD,EAAE,EAAE,CAAC,EAAE9c,EAAE6c,KAAK,cAAc,MAAM,CAACld,EAAEK,CAAC,CAAC,EAAE,iBAAiBid,GAAG,qBAAqBC,GAAG,MAAMuB,GAAG,yBAAyB,EAAE,EAAEhC,GAAG,CAAC,YAAY1D,GAAG,YAAYsF,GAAG,WAAWtF,GAAG,UAAUoE,GAAG,oBAAoBgB,GAAG,mBAAmBH,GAAG,gBAAgBC,GAAG,QAAQK,GAAG,WAAWtB,GAAG,OAAOY,GAAG,SAAS,UAAU,CAAC,OAAOZ,GAAGF,EAAE,CAAC,EAAE,cAAcsB,GAAG,iBAAiB,SAASze,EAAE,CAAC,IAAIK,EAAE6c,GAAI,EAAC,OAClf3b,KADyf,KACvflB,EAAE,cAAcL,EAAE4e,GAAGve,EAAEkB,GAAE,cAAcvB,CAAC,CAAC,EAAE,cAAc,UAAU,CAAC,IAAIA,EAAEqd,GAAGF,EAAE,EAAE,CAAC,EAAE9c,EAAE6c,GAAI,EAAC,cAAc,MAAM,CAACld,EAAEK,CAAC,CAAC,EAAE,iBAAiBid,GAAG,qBAAqBC,GAAG,MAAMuB,GAAG,yBAAyB,EAAE,EAAE,SAASK,GAAGnf,EAAEK,EAAE,CAAC,GAAG,CAAC,IAAIW,EAAE,GAAGD,EAAEV,EAAE,GAAGW,GAAG8D,GAAG/D,CAAC,EAAEA,EAAEA,EAAE,aAAaA,GAAG,IAAIT,EAAEU,CAAC,OAAOI,EAAE,CAACd,EAAE;AAAA,0BAA6Bc,EAAE,QAAQ;AAAA,EAAKA,EAAE,KAAK,CAAC,MAAM,CAAC,MAAMpB,EAAE,OAAOK,EAAE,MAAMC,EAAE,OAAO,IAAI,CAAC,CAAC,SAAS8e,GAAGpf,EAAEK,EAAEW,EAAE,CAAC,MAAM,CAAC,MAAMhB,EAAE,OAAO,KAAK,MAAYgB,GAAI,KAAK,OAAaX,GAAI,IAAI,CAAC,CACzd,SAASgf,GAAGrf,EAAEK,EAAE,CAAC,GAAG,CAAC,QAAQ,MAAMA,EAAE,KAAK,CAAC,OAAOW,EAAE,CAAC,WAAW,UAAU,CAAC,MAAMA,CAAE,CAAC,CAAC,CAAC,CAAC,IAAIse,GAAgB,OAAO,SAApB,WAA4B,QAAQ,IAAI,SAASC,GAAGvf,EAAEK,EAAEW,EAAE,CAACA,EAAE4Y,GAAG,GAAG5Y,CAAC,EAAEA,EAAE,IAAI,EAAEA,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,IAAID,EAAEV,EAAE,MAAM,OAAAW,EAAE,SAAS,UAAU,CAACwe,KAAKA,GAAG,GAAGC,GAAG1e,GAAGse,GAAGrf,EAAEK,CAAC,CAAC,EAASW,CAAC,CAC3Q,SAAS0e,GAAG1f,EAAEK,EAAEW,EAAE,CAACA,EAAE4Y,GAAG,GAAG5Y,CAAC,EAAEA,EAAE,IAAI,EAAE,IAAID,EAAEf,EAAE,KAAK,yBAAyB,GAAgB,OAAOe,GAApB,WAAsB,CAAC,IAAIT,EAAED,EAAE,MAAMW,EAAE,QAAQ,UAAU,CAAC,OAAOD,EAAET,CAAC,CAAC,EAAEU,EAAE,SAAS,UAAU,CAACqe,GAAGrf,EAAEK,CAAC,CAAC,CAAC,CAAC,IAAIe,EAAEpB,EAAE,UAAU,OAAOoB,IAAP,MAAuB,OAAOA,EAAE,mBAAtB,aAA0CJ,EAAE,SAAS,UAAU,CAACqe,GAAGrf,EAAEK,CAAC,EAAe,OAAOU,GAApB,aAA+B4e,KAAP,KAAUA,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAEA,GAAG,IAAI,IAAI,GAAG,IAAI3e,EAAEX,EAAE,MAAM,KAAK,kBAAkBA,EAAE,MAAM,CAAC,eAAsBW,IAAP,KAASA,EAAE,EAAE,CAAC,CAAC,GAAUA,CAAC,CACnb,SAAS4e,GAAG5f,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,UAAU,GAAUe,IAAP,KAAS,CAACA,EAAEf,EAAE,UAAU,IAAIsf,GAAG,IAAIhf,EAAE,IAAI,IAAIS,EAAE,IAAIV,EAAEC,CAAC,CAAC,MAAMA,EAAES,EAAE,IAAIV,CAAC,EAAWC,IAAT,SAAaA,EAAE,IAAI,IAAIS,EAAE,IAAIV,EAAEC,CAAC,GAAGA,EAAE,IAAIU,CAAC,IAAIV,EAAE,IAAIU,CAAC,EAAEhB,EAAE6f,GAAG,KAAK,KAAK7f,EAAEK,EAAEW,CAAC,EAAEX,EAAE,KAAKL,EAAEA,CAAC,EAAE,CAAC,SAAS8f,GAAG9f,EAAE,CAAC,EAAE,CAAC,IAAIK,EAA4E,IAAvEA,EAAOL,EAAE,MAAP,MAAWK,EAAEL,EAAE,cAAcK,EAASA,IAAP,KAAgBA,EAAE,aAAT,KAA0B,IAAMA,EAAE,OAAOL,EAAEA,EAAEA,EAAE,MAAM,OAAcA,IAAP,MAAU,OAAO,IAAI,CAChW,SAAS+f,GAAG/f,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,OAAQN,EAAE,KAAK,GAAmKA,EAAE,OAAO,MAAMA,EAAE,MAAMM,EAASN,IAAzLA,IAAIK,EAAEL,EAAE,OAAO,OAAOA,EAAE,OAAO,IAAIgB,EAAE,OAAO,OAAOA,EAAE,OAAO,OAAWA,EAAE,MAAN,IAAmBA,EAAE,YAAT,KAAmBA,EAAE,IAAI,IAAIX,EAAEuZ,GAAG,GAAG,CAAC,EAAEvZ,EAAE,IAAI,EAAEwZ,GAAG7Y,EAAEX,EAAE,CAAC,IAAIW,EAAE,OAAO,GAAGhB,EAAmC,CAAC,IAAIggB,GAAGtc,GAAG,kBAAkByV,GAAG,GAAG,SAAS8G,GAAGjgB,EAAEK,EAAEW,EAAED,EAAE,CAACV,EAAE,MAAaL,IAAP,KAASsb,GAAGjb,EAAE,KAAKW,EAAED,CAAC,EAAEsa,GAAGhb,EAAEL,EAAE,MAAMgB,EAAED,CAAC,CAAC,CACnV,SAASmf,GAAGlgB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAACU,EAAEA,EAAE,OAAO,IAAII,EAAEf,EAAE,IAAqC,OAAjC6Y,GAAG7Y,EAAEC,CAAC,EAAES,EAAE4b,GAAG3c,EAAEK,EAAEW,EAAED,EAAEK,EAAEd,CAAC,EAAEU,EAAEgc,GAAE,EAAahd,IAAP,MAAU,CAACmZ,IAAU9Y,EAAE,YAAYL,EAAE,YAAYK,EAAE,OAAO,MAAML,EAAE,OAAO,CAACM,EAAE6f,GAAGngB,EAAEK,EAAEC,CAAC,IAAEI,IAAGM,GAAG0W,GAAGrX,CAAC,EAAEA,EAAE,OAAO,EAAE4f,GAAGjgB,EAAEK,EAAEU,EAAET,CAAC,EAASD,EAAE,MAAK,CACzN,SAAS+f,GAAGpgB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,GAAUN,IAAP,KAAS,CAAC,IAAIoB,EAAEJ,EAAE,KAAK,OAAgB,OAAOI,GAApB,YAAuB,CAACif,GAAGjf,CAAC,GAAYA,EAAE,eAAX,QAAgCJ,EAAE,UAAT,MAA2BA,EAAE,eAAX,QAA+BX,EAAE,IAAI,GAAGA,EAAE,KAAKe,EAAEkf,GAAGtgB,EAAEK,EAAEe,EAAEL,EAAET,CAAC,IAAEN,EAAEkb,GAAGla,EAAE,KAAK,KAAKD,EAAEV,EAAEA,EAAE,KAAKC,CAAC,EAAEN,EAAE,IAAIK,EAAE,IAAIL,EAAE,OAAOK,EAASA,EAAE,MAAML,EAAC,CAAW,GAAVoB,EAAEpB,EAAE,MAAc,EAAAA,EAAE,MAAMM,GAAG,CAAC,IAAIa,EAAEC,EAAE,cAA0C,GAA5BJ,EAAEA,EAAE,QAAQA,EAASA,IAAP,KAASA,EAAE0Q,GAAM1Q,EAAEG,EAAEJ,CAAC,GAAGf,EAAE,MAAMK,EAAE,IAAI,OAAO8f,GAAGngB,EAAEK,EAAEC,CAAC,CAAC,CAAC,OAAAD,EAAE,OAAO,EAAEL,EAAEgb,GAAG5Z,EAAEL,CAAC,EAAEf,EAAE,IAAIK,EAAE,IAAIL,EAAE,OAAOK,EAASA,EAAE,MAAML,CAAC,CAC1b,SAASsgB,GAAGtgB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,GAAUN,IAAP,KAAS,CAAC,IAAIoB,EAAEpB,EAAE,cAAc,GAAG0R,GAAGtQ,EAAEL,CAAC,GAAGf,EAAE,MAAMK,EAAE,IAAI,GAAG8Y,GAAG,GAAG9Y,EAAE,aAAaU,EAAEK,GAAOpB,EAAE,MAAMM,KAAb,EAAqBN,EAAE,MAAM,SAAUmZ,GAAG,QAAS,QAAO9Y,EAAE,MAAML,EAAE,MAAMmgB,GAAGngB,EAAEK,EAAEC,CAAC,CAAC,CAAC,OAAOigB,GAAGvgB,EAAEK,EAAEW,EAAED,EAAET,CAAC,CAAC,CACxN,SAASkgB,GAAGxgB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEV,EAAE,aAAaC,EAAES,EAAE,SAASK,EAASpB,IAAP,KAASA,EAAE,cAAc,KAAK,GAAce,EAAE,OAAb,SAAkB,GAAQ,EAAAV,EAAE,KAAK,GAAGA,EAAE,cAAc,CAAC,UAAU,EAAE,UAAU,KAAK,YAAY,IAAI,EAAEG,GAAEigB,GAAGC,EAAE,EAAEA,IAAI1f,MAAM,CAAC,GAAQ,EAAAA,EAAE,YAAY,OAAOhB,EAASoB,IAAP,KAASA,EAAE,UAAUJ,EAAEA,EAAEX,EAAE,MAAMA,EAAE,WAAW,WAAWA,EAAE,cAAc,CAAC,UAAUL,EAAE,UAAU,KAAK,YAAY,IAAI,EAAEK,EAAE,YAAY,KAAKG,GAAEigB,GAAGC,EAAE,EAAEA,IAAI1gB,EAAE,KAAKK,EAAE,cAAc,CAAC,UAAU,EAAE,UAAU,KAAK,YAAY,IAAI,EAAEU,EAASK,IAAP,KAASA,EAAE,UAAUJ,EAAER,GAAEigB,GAAGC,EAAE,EAAEA,IAAI3f,CAAC,MAChfK,IADsf,MACnfL,EAAEK,EAAE,UAAUJ,EAAEX,EAAE,cAAc,MAAMU,EAAEC,EAAER,GAAEigB,GAAGC,EAAE,EAAEA,IAAI3f,EAAE,OAAAkf,GAAGjgB,EAAEK,EAAEC,EAAEU,CAAC,EAASX,EAAE,KAAK,CAAC,SAASsgB,GAAG3gB,EAAEK,EAAE,CAAC,IAAIW,EAAEX,EAAE,KAAcL,IAAP,MAAiBgB,IAAP,MAAiBhB,IAAP,MAAUA,EAAE,MAAMgB,KAAEX,EAAE,OAAO,IAAIA,EAAE,OAAO,QAAO,CAAC,SAASkgB,GAAGvgB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,IAAIc,EAAE+U,GAAGnV,CAAC,EAAEiV,GAAGxV,GAAE,QAAmD,OAA3CW,EAAE8U,GAAG7V,EAAEe,CAAC,EAAE8X,GAAG7Y,EAAEC,CAAC,EAAEU,EAAE2b,GAAG3c,EAAEK,EAAEW,EAAED,EAAEK,EAAEd,CAAC,EAAES,EAAEic,GAAE,EAAahd,IAAP,MAAU,CAACmZ,IAAU9Y,EAAE,YAAYL,EAAE,YAAYK,EAAE,OAAO,MAAML,EAAE,OAAO,CAACM,EAAE6f,GAAGngB,EAAEK,EAAEC,CAAC,IAAEI,IAAGK,GAAG2W,GAAGrX,CAAC,EAAEA,EAAE,OAAO,EAAE4f,GAAGjgB,EAAEK,EAAEW,EAAEV,CAAC,EAASD,EAAE,MAAK,CACla,SAASugB,GAAG5gB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,GAAG6V,GAAGnV,CAAC,EAAE,CAAC,IAAII,EAAE,GAAGmV,GAAGlW,CAAC,CAAC,MAAMe,EAAE,GAAW,GAAR8X,GAAG7Y,EAAEC,CAAC,EAAYD,EAAE,YAAT,KAAmBwgB,GAAG7gB,EAAEK,CAAC,EAAEoa,GAAGpa,EAAEW,EAAED,CAAC,EAAE4Z,GAAGta,EAAEW,EAAED,EAAET,CAAC,EAAES,EAAE,WAAkBf,IAAP,KAAS,CAAC,IAAImB,EAAEd,EAAE,UAAUa,EAAEb,EAAE,cAAcc,EAAE,MAAMD,EAAE,IAAID,EAAEE,EAAE,QAAQhC,EAAE6B,EAAE,YAAuB,OAAO7B,GAAlB,UAA4BA,IAAP,KAASA,EAAEia,GAAGja,CAAC,GAAGA,EAAEgX,GAAGnV,CAAC,EAAEiV,GAAGxV,GAAE,QAAQtB,EAAE+W,GAAG7V,EAAElB,CAAC,GAAG,IAAIkC,EAAEL,EAAE,yBAAyB1B,EAAe,OAAO+B,GAApB,YAAoC,OAAOF,EAAE,yBAAtB,WAA8C7B,GAAgB,OAAO6B,EAAE,kCAAtB,YAAqE,OAAOA,EAAE,2BAAtB,aACpcD,IAAIH,GAAGE,IAAI9B,IAAIub,GAAGra,EAAEc,EAAEJ,EAAE5B,CAAC,EAAEsa,GAAG,GAAG,IAAIla,EAAEc,EAAE,cAAcc,EAAE,MAAM5B,EAAEya,GAAG3Z,EAAEU,EAAEI,EAAEb,CAAC,EAAEW,EAAEZ,EAAE,cAAca,IAAIH,GAAGxB,IAAI0B,GAAG+U,GAAG,SAASyD,IAAiB,OAAOpY,GAApB,aAAwB+Y,GAAG/Z,EAAEW,EAAEK,EAAEN,CAAC,EAAEE,EAAEZ,EAAE,gBAAgBa,EAAEuY,IAAIe,GAAGna,EAAEW,EAAEE,EAAEH,EAAExB,EAAE0B,EAAE9B,CAAC,IAAIG,GAAgB,OAAO6B,EAAE,2BAAtB,YAA8D,OAAOA,EAAE,oBAAtB,aAAwD,OAAOA,EAAE,oBAAtB,YAA0CA,EAAE,mBAAkB,EAAgB,OAAOA,EAAE,2BAAtB,YAAiDA,EAAE,6BAA0C,OAAOA,EAAE,mBAAtB,aAA0Cd,EAAE,OAAO,WACre,OAAOc,EAAE,mBAAtB,aAA0Cd,EAAE,OAAO,SAASA,EAAE,cAAcU,EAAEV,EAAE,cAAcY,GAAGE,EAAE,MAAMJ,EAAEI,EAAE,MAAMF,EAAEE,EAAE,QAAQhC,EAAE4B,EAAEG,IAAiB,OAAOC,EAAE,mBAAtB,aAA0Cd,EAAE,OAAO,SAASU,EAAE,GAAG,KAAK,CAACI,EAAEd,EAAE,UAAUsZ,GAAG3Z,EAAEK,CAAC,EAAEa,EAAEb,EAAE,cAAclB,EAAEkB,EAAE,OAAOA,EAAE,YAAYa,EAAEwX,GAAGrY,EAAE,KAAKa,CAAC,EAAEC,EAAE,MAAMhC,EAAEG,EAAEe,EAAE,aAAad,EAAE4B,EAAE,QAAQF,EAAED,EAAE,YAAuB,OAAOC,GAAlB,UAA4BA,IAAP,KAASA,EAAEmY,GAAGnY,CAAC,GAAGA,EAAEkV,GAAGnV,CAAC,EAAEiV,GAAGxV,GAAE,QAAQQ,EAAEiV,GAAG7V,EAAEY,CAAC,GAAG,IAAIpB,EAAEmB,EAAE,0BAA0BK,EAAe,OAAOxB,GAApB,YAAoC,OAAOsB,EAAE,yBAAtB,aAC3c,OAAOA,EAAE,kCAAtB,YAAqE,OAAOA,EAAE,2BAAtB,aAAkDD,IAAI5B,GAAGC,IAAI0B,IAAIyZ,GAAGra,EAAEc,EAAEJ,EAAEE,CAAC,EAAEwY,GAAG,GAAGla,EAAEc,EAAE,cAAcc,EAAE,MAAM5B,EAAEya,GAAG3Z,EAAEU,EAAEI,EAAEb,CAAC,EAAE,IAAIlB,EAAEiB,EAAE,cAAca,IAAI5B,GAAGC,IAAIH,GAAG4W,GAAG,SAASyD,IAAiB,OAAO5Z,GAApB,aAAwBua,GAAG/Z,EAAEW,EAAEnB,EAAEkB,CAAC,EAAE3B,EAAEiB,EAAE,gBAAgBlB,EAAEsa,IAAIe,GAAGna,EAAEW,EAAE7B,EAAE4B,EAAExB,EAAEH,EAAE6B,CAAC,GAAG,KAAKI,GAAgB,OAAOF,EAAE,4BAAtB,YAA+D,OAAOA,EAAE,qBAAtB,aAAyD,OAAOA,EAAE,qBAAtB,YAA2CA,EAAE,oBAAoBJ,EAAE3B,EAAE6B,CAAC,EAAe,OAAOE,EAAE,4BAAtB,YACteA,EAAE,2BAA2BJ,EAAE3B,EAAE6B,CAAC,GAAgB,OAAOE,EAAE,oBAAtB,aAA2Cd,EAAE,OAAO,GAAgB,OAAOc,EAAE,yBAAtB,aAAgDd,EAAE,OAAO,QAAqB,OAAOc,EAAE,oBAAtB,YAA0CD,IAAIlB,EAAE,eAAeT,IAAIS,EAAE,gBAAgBK,EAAE,OAAO,GAAgB,OAAOc,EAAE,yBAAtB,YAA+CD,IAAIlB,EAAE,eAAeT,IAAIS,EAAE,gBAAgBK,EAAE,OAAO,MAAMA,EAAE,cAAcU,EAAEV,EAAE,cAAcjB,GAAG+B,EAAE,MAAMJ,EAAEI,EAAE,MAAM/B,EAAE+B,EAAE,QAAQF,EAAEF,EAAE5B,IAAiB,OAAOgC,EAAE,oBAAtB,YAA0CD,IAAIlB,EAAE,eAAeT,IACjfS,EAAE,gBAAgBK,EAAE,OAAO,GAAgB,OAAOc,EAAE,yBAAtB,YAA+CD,IAAIlB,EAAE,eAAeT,IAAIS,EAAE,gBAAgBK,EAAE,OAAO,MAAMU,EAAE,GAAG,CAAC,OAAO+f,GAAG9gB,EAAEK,EAAEW,EAAED,EAAEK,EAAEd,CAAC,CAAC,CACnK,SAASwgB,GAAG9gB,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAE,CAACuf,GAAG3gB,EAAEK,CAAC,EAAE,IAAIc,GAAOd,EAAE,MAAM,OAAb,EAAkB,GAAG,CAACU,GAAG,CAACI,EAAE,OAAOb,GAAGkW,GAAGnW,EAAEW,EAAE,EAAE,EAAEmf,GAAGngB,EAAEK,EAAEe,CAAC,EAAEL,EAAEV,EAAE,UAAU2f,GAAG,QAAQ3f,EAAE,IAAIa,EAAEC,GAAgB,OAAOH,EAAE,0BAAtB,WAA+C,KAAKD,EAAE,OAAM,EAAG,OAAAV,EAAE,OAAO,EAASL,IAAP,MAAUmB,GAAGd,EAAE,MAAMgb,GAAGhb,EAAEL,EAAE,MAAM,KAAKoB,CAAC,EAAEf,EAAE,MAAMgb,GAAGhb,EAAE,KAAKa,EAAEE,CAAC,GAAG6e,GAAGjgB,EAAEK,EAAEa,EAAEE,CAAC,EAAEf,EAAE,cAAcU,EAAE,MAAMT,GAAGkW,GAAGnW,EAAEW,EAAE,EAAE,EAASX,EAAE,KAAK,CAAC,SAAS0gB,GAAG/gB,EAAE,CAAC,IAAIK,EAAEL,EAAE,UAAUK,EAAE,eAAegW,GAAGrW,EAAEK,EAAE,eAAeA,EAAE,iBAAiBA,EAAE,OAAO,EAAEA,EAAE,SAASgW,GAAGrW,EAAEK,EAAE,QAAQ,EAAE,EAAEub,GAAG5b,EAAEK,EAAE,aAAa,CAAC,CAC5e,SAAS2gB,GAAGhhB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,OAAAiY,GAAI,EAACC,GAAGlY,CAAC,EAAED,EAAE,OAAO,IAAI4f,GAAGjgB,EAAEK,EAAEW,EAAED,CAAC,EAASV,EAAE,KAAK,CAAC,IAAI4gB,GAAG,CAAC,WAAW,KAAK,YAAY,KAAK,UAAU,CAAC,EAAE,SAASC,GAAGlhB,EAAE,CAAC,MAAM,CAAC,UAAUA,EAAE,UAAU,KAAK,YAAY,IAAI,CAAC,CAClM,SAASmhB,GAAGnhB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEV,EAAE,aAAaC,EAAEQ,GAAE,QAAQM,EAAE,GAAGD,GAAOd,EAAE,MAAM,OAAb,EAAkBa,EAA0I,IAAvIA,EAAEC,KAAKD,EAASlB,IAAP,MAAiBA,EAAE,gBAAT,KAAuB,IAAQM,EAAE,KAAP,GAAcY,GAAEE,EAAE,GAAGf,EAAE,OAAO,OAAoBL,IAAP,MAAiBA,EAAE,gBAAT,QAAuBM,GAAG,GAAEE,GAAEM,GAAER,EAAE,CAAC,EAAYN,IAAP,KAAkC,OAAxBmY,GAAG9X,CAAC,EAAEL,EAAEK,EAAE,cAAwBL,IAAP,OAAWA,EAAEA,EAAE,WAAkBA,IAAP,OAAsBK,EAAE,KAAK,EAAoBL,EAAE,OAAT,KAAcK,EAAE,MAAM,EAAEA,EAAE,MAAM,WAA1CA,EAAE,MAAM,EAA6C,OAAKc,EAAEJ,EAAE,SAASf,EAAEe,EAAE,SAAgBK,GAAGL,EAAEV,EAAE,KAAKe,EAAEf,EAAE,MAAMc,EAAE,CAAC,KAAK,SAAS,SAASA,CAAC,EAAO,EAAAJ,EAAE,IAAWK,IAAP,MAAUA,EAAE,WAAW,EAAEA,EAAE,aAC7eD,GAAGC,EAAEggB,GAAGjgB,EAAEJ,EAAE,EAAE,IAAI,EAAEf,EAAEob,GAAGpb,EAAEe,EAAEC,EAAE,IAAI,EAAEI,EAAE,OAAOf,EAAEL,EAAE,OAAOK,EAAEe,EAAE,QAAQpB,EAAEK,EAAE,MAAMe,EAAEf,EAAE,MAAM,cAAc6gB,GAAGlgB,CAAC,EAAEX,EAAE,cAAc4gB,GAAGjhB,GAAGqhB,GAAGhhB,EAAEc,CAAC,GAAoB,GAAlBb,EAAEN,EAAE,cAAwBM,IAAP,OAAWY,EAAEZ,EAAE,WAAkBY,IAAP,MAAU,OAAOogB,GAAGthB,EAAEK,EAAEc,EAAEJ,EAAEG,EAAEZ,EAAEU,CAAC,EAAE,GAAGI,EAAE,CAACA,EAAEL,EAAE,SAASI,EAAEd,EAAE,KAAKC,EAAEN,EAAE,MAAMkB,EAAEZ,EAAE,QAAQ,IAAIW,EAAE,CAAC,KAAK,SAAS,SAASF,EAAE,QAAQ,EAAE,MAAK,EAAAI,EAAE,IAAId,EAAE,QAAQC,GAAGS,EAAEV,EAAE,MAAMU,EAAE,WAAW,EAAEA,EAAE,aAAaE,EAAEZ,EAAE,UAAU,OAAOU,EAAEia,GAAG1a,EAAEW,CAAC,EAAEF,EAAE,aAAaT,EAAE,aAAa,UAAiBY,IAAP,KAASE,EAAE4Z,GAAG9Z,EAAEE,CAAC,GAAGA,EAAEga,GAAGha,EAAED,EAAEH,EAAE,IAAI,EAAEI,EAAE,OAAO,GAAGA,EAAE,OACnff,EAAEU,EAAE,OAAOV,EAAEU,EAAE,QAAQK,EAAEf,EAAE,MAAMU,EAAEA,EAAEK,EAAEA,EAAEf,EAAE,MAAMc,EAAEnB,EAAE,MAAM,cAAcmB,EAASA,IAAP,KAAS+f,GAAGlgB,CAAC,EAAE,CAAC,UAAUG,EAAE,UAAUH,EAAE,UAAU,KAAK,YAAYG,EAAE,WAAW,EAAEC,EAAE,cAAcD,EAAEC,EAAE,WAAWpB,EAAE,WAAW,CAACgB,EAAEX,EAAE,cAAc4gB,GAAUlgB,CAAC,CAAC,OAAAK,EAAEpB,EAAE,MAAMA,EAAEoB,EAAE,QAAQL,EAAEia,GAAG5Z,EAAE,CAAC,KAAK,UAAU,SAASL,EAAE,QAAQ,CAAC,EAAO,EAAAV,EAAE,KAAK,KAAKU,EAAE,MAAMC,GAAGD,EAAE,OAAOV,EAAEU,EAAE,QAAQ,KAAYf,IAAP,OAAWgB,EAAEX,EAAE,UAAiBW,IAAP,MAAUX,EAAE,UAAU,CAACL,CAAC,EAAEK,EAAE,OAAO,IAAIW,EAAE,KAAKhB,CAAC,GAAGK,EAAE,MAAMU,EAAEV,EAAE,cAAc,KAAYU,CAAC,CACnd,SAASsgB,GAAGrhB,EAAEK,EAAE,CAAC,OAAAA,EAAE+gB,GAAG,CAAC,KAAK,UAAU,SAAS/gB,CAAC,EAAEL,EAAE,KAAK,EAAE,IAAI,EAAEK,EAAE,OAAOL,EAASA,EAAE,MAAMK,CAAC,CAAC,SAASkhB,GAAGvhB,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAOA,IAAP,MAAUyX,GAAGzX,CAAC,EAAEsa,GAAGhb,EAAEL,EAAE,MAAM,KAAKgB,CAAC,EAAEhB,EAAEqhB,GAAGhhB,EAAEA,EAAE,aAAa,QAAQ,EAAEL,EAAE,OAAO,EAAEK,EAAE,cAAc,KAAYL,CAAC,CAC/N,SAASshB,GAAGthB,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAE,CAAC,GAAGH,EAAG,OAAGX,EAAE,MAAM,KAAWA,EAAE,OAAO,KAAKU,EAAEqe,GAAG,MAAM/f,EAAE,GAAG,CAAC,CAAC,EAAEkiB,GAAGvhB,EAAEK,EAAEc,EAAEJ,CAAC,GAAYV,EAAE,gBAAT,MAA8BA,EAAE,MAAML,EAAE,MAAMK,EAAE,OAAO,IAAI,OAAKe,EAAEL,EAAE,SAAST,EAAED,EAAE,KAAKU,EAAEqgB,GAAG,CAAC,KAAK,UAAU,SAASrgB,EAAE,QAAQ,EAAET,EAAE,EAAE,IAAI,EAAEc,EAAEga,GAAGha,EAAEd,EAAEa,EAAE,IAAI,EAAEC,EAAE,OAAO,EAAEL,EAAE,OAAOV,EAAEe,EAAE,OAAOf,EAAEU,EAAE,QAAQK,EAAEf,EAAE,MAAMU,EAAOV,EAAE,KAAK,GAAIgb,GAAGhb,EAAEL,EAAE,MAAM,KAAKmB,CAAC,EAAEd,EAAE,MAAM,cAAc6gB,GAAG/f,CAAC,EAAEd,EAAE,cAAc4gB,GAAU7f,GAAE,GAAQ,EAAAf,EAAE,KAAK,GAAG,OAAOkhB,GAAGvhB,EAAEK,EAAEc,EAAE,IAAI,EAAE,GAAUb,EAAE,OAAT,KAAc,CAChd,GADidS,EAAET,EAAE,aAAaA,EAAE,YAAY,QAC7eS,EAAE,IAAIG,EAAEH,EAAE,KAAK,OAAAA,EAAEG,EAAEE,EAAE,MAAM/B,EAAE,GAAG,CAAC,EAAE0B,EAAEqe,GAAGhe,EAAEL,EAAE,MAAM,EAASwgB,GAAGvhB,EAAEK,EAAEc,EAAEJ,CAAC,CAAC,CAAwB,GAAvBG,GAAOC,EAAEnB,EAAE,cAAT,EAAwBmZ,IAAIjY,EAAE,CAAK,GAAJH,EAAEY,GAAYZ,IAAP,KAAS,CAAC,OAAOI,EAAE,CAACA,EAAG,KAAK,GAAEb,EAAE,EAAE,MAAM,IAAK,IAAGA,EAAE,EAAE,MAAM,IAAK,IAAG,IAAK,KAAI,IAAK,KAAI,IAAK,KAAI,IAAK,MAAK,IAAK,MAAK,IAAK,MAAK,IAAK,MAAK,IAAK,OAAM,IAAK,OAAM,IAAK,OAAM,IAAK,QAAO,IAAK,QAAO,IAAK,QAAO,IAAK,SAAQ,IAAK,SAAQ,IAAK,SAAQ,IAAK,SAAQ,IAAK,UAAS,IAAK,UAAS,IAAK,UAASA,EAAE,GAAG,MAAM,IAAK,WAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,CAAC,CAACA,EAAOA,GAAGS,EAAE,eAAeI,GAAI,EAAEb,EAC/eA,IAAJ,GAAOA,IAAIc,EAAE,YAAYA,EAAE,UAAUd,EAAEkZ,GAAGxZ,EAAEM,CAAC,EAAEia,GAAGxZ,EAAEf,EAAEM,EAAE,EAAE,EAAE,CAAC,OAAAkhB,GAAE,EAAGzgB,EAAEqe,GAAG,MAAM/f,EAAE,GAAG,CAAC,CAAC,EAASkiB,GAAGvhB,EAAEK,EAAEc,EAAEJ,CAAC,CAAC,CAAC,OAAUT,EAAE,OAAT,MAAqBD,EAAE,OAAO,IAAIA,EAAE,MAAML,EAAE,MAAMK,EAAEohB,GAAG,KAAK,KAAKzhB,CAAC,EAAEM,EAAE,YAAYD,EAAE,OAAKL,EAAEoB,EAAE,YAAYyW,GAAGxC,GAAG/U,EAAE,WAAW,EAAEsX,GAAGvX,EAAEK,GAAE,GAAGoX,GAAG,KAAY9X,IAAP,OAAWmX,GAAGC,IAAI,EAAEE,GAAGH,GAAGC,IAAI,EAAEG,GAAGJ,GAAGC,IAAI,EAAEC,GAAGC,GAAGtX,EAAE,GAAGuX,GAAGvX,EAAE,SAASqX,GAAGhX,GAAGA,EAAEghB,GAAGhhB,EAAEU,EAAE,QAAQ,EAAEV,EAAE,OAAO,KAAYA,EAAC,CAAC,SAASqhB,GAAG1hB,EAAEK,EAAEW,EAAE,CAAChB,EAAE,OAAOK,EAAE,IAAIU,EAAEf,EAAE,UAAiBe,IAAP,OAAWA,EAAE,OAAOV,GAAG4Y,GAAGjZ,EAAE,OAAOK,EAAEW,CAAC,CAAC,CACxc,SAAS2gB,GAAG3hB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,IAAIc,EAAEpB,EAAE,cAAqBoB,IAAP,KAASpB,EAAE,cAAc,CAAC,YAAYK,EAAE,UAAU,KAAK,mBAAmB,EAAE,KAAKU,EAAE,KAAKC,EAAE,SAASV,CAAC,GAAGc,EAAE,YAAYf,EAAEe,EAAE,UAAU,KAAKA,EAAE,mBAAmB,EAAEA,EAAE,KAAKL,EAAEK,EAAE,KAAKJ,EAAEI,EAAE,SAASd,EAAE,CAC3O,SAASshB,GAAG5hB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEV,EAAE,aAAaC,EAAES,EAAE,YAAYK,EAAEL,EAAE,KAAsC,GAAjCkf,GAAGjgB,EAAEK,EAAEU,EAAE,SAASC,CAAC,EAAED,EAAED,GAAE,QAAgBC,EAAE,EAAGA,EAAEA,EAAE,EAAE,EAAEV,EAAE,OAAO,QAAQ,CAAC,GAAUL,IAAP,MAAeA,EAAE,MAAM,IAAKA,EAAE,IAAIA,EAAEK,EAAE,MAAaL,IAAP,MAAU,CAAC,GAAQA,EAAE,MAAP,GAAkBA,EAAE,gBAAT,MAAwB0hB,GAAG1hB,EAAEgB,EAAEX,CAAC,UAAeL,EAAE,MAAP,GAAW0hB,GAAG1hB,EAAEgB,EAAEX,CAAC,UAAiBL,EAAE,QAAT,KAAe,CAACA,EAAE,MAAM,OAAOA,EAAEA,EAAEA,EAAE,MAAM,QAAQ,CAAC,GAAGA,IAAIK,EAAE,MAAML,EAAE,KAAYA,EAAE,UAAT,MAAkB,CAAC,GAAUA,EAAE,SAAT,MAAiBA,EAAE,SAASK,EAAE,MAAML,EAAEA,EAAEA,EAAE,MAAM,CAACA,EAAE,QAAQ,OAAOA,EAAE,OAAOA,EAAEA,EAAE,OAAO,CAACe,GAAG,CAAC,CAAQ,GAAPP,GAAEM,GAAEC,CAAC,EAAU,EAAAV,EAAE,KAAK,GAAGA,EAAE,cAC/e,SAAU,QAAOC,GAAG,IAAK,WAAqB,IAAVU,EAAEX,EAAE,MAAUC,EAAE,KAAYU,IAAP,MAAUhB,EAAEgB,EAAE,UAAiBhB,IAAP,MAAiBgc,GAAGhc,CAAC,IAAX,OAAeM,EAAEU,GAAGA,EAAEA,EAAE,QAAQA,EAAEV,EAASU,IAAP,MAAUV,EAAED,EAAE,MAAMA,EAAE,MAAM,OAAOC,EAAEU,EAAE,QAAQA,EAAE,QAAQ,MAAM2gB,GAAGthB,EAAE,GAAGC,EAAEU,EAAEI,CAAC,EAAE,MAAM,IAAK,YAA6B,IAAjBJ,EAAE,KAAKV,EAAED,EAAE,MAAUA,EAAE,MAAM,KAAYC,IAAP,MAAU,CAAe,GAAdN,EAAEM,EAAE,UAAoBN,IAAP,MAAiBgc,GAAGhc,CAAC,IAAX,KAAa,CAACK,EAAE,MAAMC,EAAE,KAAK,CAACN,EAAEM,EAAE,QAAQA,EAAE,QAAQU,EAAEA,EAAEV,EAAEA,EAAEN,CAAC,CAAC2hB,GAAGthB,EAAE,GAAGW,EAAE,KAAKI,CAAC,EAAE,MAAM,IAAK,WAAWugB,GAAGthB,EAAE,GAAG,KAAK,KAAK,MAAM,EAAE,MAAM,QAAQA,EAAE,cAAc,IAAI,CAAC,OAAOA,EAAE,KAAK,CAC7d,SAASwgB,GAAG7gB,EAAEK,EAAE,CAAM,EAAAA,EAAE,KAAK,IAAWL,IAAP,OAAWA,EAAE,UAAU,KAAKK,EAAE,UAAU,KAAKA,EAAE,OAAO,EAAE,CAAC,SAAS8f,GAAGngB,EAAEK,EAAEW,EAAE,CAAuD,GAA/ChB,IAAP,OAAWK,EAAE,aAAaL,EAAE,cAAcia,IAAI5Z,EAAE,MAAc,EAAAW,EAAEX,EAAE,YAAY,OAAO,KAAK,GAAUL,IAAP,MAAUK,EAAE,QAAQL,EAAE,MAAM,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAE,GAAUgB,EAAE,QAAT,KAAe,CAA4C,IAA3CL,EAAEK,EAAE,MAAMW,EAAEga,GAAGhb,EAAEA,EAAE,YAAY,EAAEK,EAAE,MAAMW,EAAMA,EAAE,OAAOX,EAASL,EAAE,UAAT,MAAkBA,EAAEA,EAAE,QAAQgB,EAAEA,EAAE,QAAQga,GAAGhb,EAAEA,EAAE,YAAY,EAAEgB,EAAE,OAAOX,EAAEW,EAAE,QAAQ,IAAI,CAAC,OAAOX,EAAE,KAAK,CAC9a,SAASwhB,GAAG7hB,EAAEK,EAAEW,EAAE,CAAC,OAAOX,EAAE,IAAG,CAAE,IAAK,GAAE0gB,GAAG1gB,CAAC,EAAEkY,GAAI,EAAC,MAAM,IAAK,GAAEuD,GAAGzb,CAAC,EAAE,MAAM,IAAK,GAAE8V,GAAG9V,EAAE,IAAI,GAAGkW,GAAGlW,CAAC,EAAE,MAAM,IAAK,GAAEub,GAAGvb,EAAEA,EAAE,UAAU,aAAa,EAAE,MAAM,IAAK,IAAG,IAAIU,EAAEV,EAAE,KAAK,SAASC,EAAED,EAAE,cAAc,MAAMG,GAAEmY,GAAG5X,EAAE,aAAa,EAAEA,EAAE,cAAcT,EAAE,MAAM,IAAK,IAAqB,GAAlBS,EAAEV,EAAE,cAAwBU,IAAP,KAAU,OAAUA,EAAE,aAAT,MAA2BP,GAAEM,GAAEA,GAAE,QAAQ,CAAC,EAAET,EAAE,OAAO,IAAI,MAAaW,EAAEX,EAAE,MAAM,WAAmB8gB,GAAGnhB,EAAEK,EAAEW,CAAC,GAAER,GAAEM,GAAEA,GAAE,QAAQ,CAAC,EAAEd,EAAEmgB,GAAGngB,EAAEK,EAAEW,CAAC,EAAgBhB,IAAP,KAASA,EAAE,QAAQ,MAAKQ,GAAEM,GAAEA,GAAE,QAAQ,CAAC,EAAE,MAAM,IAAK,IAC7d,GADgeC,GAAOC,EACrfX,EAAE,cAD8e,EAC1dL,EAAE,MAAM,IAAK,CAAC,GAAGe,EAAE,OAAO6gB,GAAG5hB,EAAEK,EAAEW,CAAC,EAAEX,EAAE,OAAO,GAAG,CAA6F,GAA5FC,EAAED,EAAE,cAAqBC,IAAP,OAAWA,EAAE,UAAU,KAAKA,EAAE,KAAK,KAAKA,EAAE,WAAW,MAAME,GAAEM,GAAEA,GAAE,OAAO,EAAKC,EAAE,MAAW,OAAO,KAAK,IAAK,IAAG,IAAK,IAAG,OAAOV,EAAE,MAAM,EAAEmgB,GAAGxgB,EAAEK,EAAEW,CAAC,CAAC,CAAC,OAAOmf,GAAGngB,EAAEK,EAAEW,CAAC,CAAC,CAAC,IAAI8gB,GAAGC,GAAGC,GAAGC,GACxQH,GAAG,SAAS9hB,EAAEK,EAAE,CAAC,QAAQW,EAAEX,EAAE,MAAaW,IAAP,MAAU,CAAC,GAAOA,EAAE,MAAN,GAAeA,EAAE,MAAN,EAAUhB,EAAE,YAAYgB,EAAE,SAAS,UAAcA,EAAE,MAAN,GAAkBA,EAAE,QAAT,KAAe,CAACA,EAAE,MAAM,OAAOA,EAAEA,EAAEA,EAAE,MAAM,QAAQ,CAAC,GAAGA,IAAIX,EAAE,MAAM,KAAYW,EAAE,UAAT,MAAkB,CAAC,GAAUA,EAAE,SAAT,MAAiBA,EAAE,SAASX,EAAE,OAAOW,EAAEA,EAAE,MAAM,CAACA,EAAE,QAAQ,OAAOA,EAAE,OAAOA,EAAEA,EAAE,OAAO,CAAC,EAAE+gB,GAAG,UAAU,GACvTC,GAAG,SAAShiB,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAEN,EAAE,cAAc,GAAGM,IAAIS,EAAE,CAACf,EAAEK,EAAE,UAAUsb,GAAGH,GAAG,OAAO,EAAE,IAAIpa,EAAE,KAAK,OAAOJ,EAAC,CAAE,IAAK,QAAQV,EAAEiF,GAAGvF,EAAEM,CAAC,EAAES,EAAEwE,GAAGvF,EAAEe,CAAC,EAAEK,EAAE,GAAG,MAAM,IAAK,SAASd,EAAEP,GAAE,GAAGO,EAAE,CAAC,MAAM,MAAM,CAAC,EAAES,EAAEhB,GAAE,GAAGgB,EAAE,CAAC,MAAM,MAAM,CAAC,EAAEK,EAAE,CAAE,EAAC,MAAM,IAAK,WAAWd,EAAEyF,GAAG/F,EAAEM,CAAC,EAAES,EAAEgF,GAAG/F,EAAEe,CAAC,EAAEK,EAAE,CAAE,EAAC,MAAM,QAAqB,OAAOd,EAAE,SAAtB,YAA4C,OAAOS,EAAE,SAAtB,aAAgCf,EAAE,QAAQ2U,GAAG,CAAC9N,GAAG7F,EAAED,CAAC,EAAE,IAAII,EAAEH,EAAE,KAAK,IAAI7B,KAAKmB,EAAE,GAAG,CAACS,EAAE,eAAe5B,CAAC,GAAGmB,EAAE,eAAenB,CAAC,GAASmB,EAAEnB,CAAC,GAAT,KAAW,GAAaA,IAAV,QAAY,CAAC,IAAI+B,EAAEZ,EAAEnB,CAAC,EAAE,IAAIgC,KAAKD,EAAEA,EAAE,eAAeC,CAAC,IAClfH,IAAIA,EAAE,IAAIA,EAAEG,CAAC,EAAE,GAAG,MAAiChC,IAA5B,2BAA4CA,IAAb,YAAmDA,IAAnC,kCAAmEA,IAA7B,4BAA8CA,IAAd,cAAkByD,GAAG,eAAezD,CAAC,EAAEiC,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI,KAAKjC,EAAE,IAAI,GAAG,IAAIA,KAAK4B,EAAE,CAAC,IAAIE,EAAEF,EAAE5B,CAAC,EAAwB,GAAtB+B,EAAQZ,GAAN,KAAQA,EAAEnB,CAAC,EAAE,OAAU4B,EAAE,eAAe5B,CAAC,GAAG8B,IAAIC,IAAUD,GAAN,MAAeC,GAAN,MAAS,GAAa/B,IAAV,QAAY,GAAG+B,EAAE,CAAC,IAAIC,KAAKD,EAAE,CAACA,EAAE,eAAeC,CAAC,GAAGF,GAAGA,EAAE,eAAeE,CAAC,IAAIH,IAAIA,EAAE,IAAIA,EAAEG,CAAC,EAAE,IAAI,IAAIA,KAAKF,EAAEA,EAAE,eAAeE,CAAC,GAAGD,EAAEC,CAAC,IAAIF,EAAEE,CAAC,IAAIH,IAAIA,EAAE,CAAE,GAAEA,EAAEG,CAAC,EAAEF,EAAEE,CAAC,EAAE,MAAMH,IAAII,IAAIA,EAAE,CAAE,GAAEA,EAAE,KAAKjC,EACpf6B,CAAC,GAAGA,EAAEC,OAAkC9B,IAA5B,2BAA+B8B,EAAEA,EAAEA,EAAE,OAAO,OAAOC,EAAEA,EAAEA,EAAE,OAAO,OAAaD,GAAN,MAASC,IAAID,IAAIG,EAAEA,GAAG,CAAE,GAAE,KAAKjC,EAAE8B,CAAC,GAAgB9B,IAAb,WAA0B,OAAO8B,GAAlB,UAAgC,OAAOA,GAAlB,WAAsBG,EAAEA,GAAG,CAAE,GAAE,KAAKjC,EAAE,GAAG8B,CAAC,EAAqC9B,IAAnC,kCAAmEA,IAA7B,6BAAiCyD,GAAG,eAAezD,CAAC,GAAS8B,GAAN,MAAsB9B,IAAb,YAAgBgB,GAAE,SAASH,CAAC,EAAEoB,GAAGF,IAAID,IAAIG,EAAE,MAAMA,EAAEA,GAAG,CAAE,GAAE,KAAKjC,EAAE8B,CAAC,EAAE,CAACD,IAAII,EAAEA,GAAG,CAAE,GAAE,KAAK,QAAQJ,CAAC,EAAE,IAAI7B,EAAEiC,GAAKf,EAAE,YAAYlB,KAAEkB,EAAE,OAAO,EAAC,CAAC,EAAE4hB,GAAG,SAASjiB,EAAEK,EAAEW,EAAED,EAAE,CAACC,IAAID,IAAIV,EAAE,OAAO,EAAE,EAChe,SAAS6hB,GAAGliB,EAAEK,EAAE,CAAC,GAAG,CAACK,GAAE,OAAOV,EAAE,SAAU,KAAK,SAASK,EAAEL,EAAE,KAAK,QAAQgB,EAAE,KAAYX,IAAP,MAAiBA,EAAE,YAAT,OAAqBW,EAAEX,GAAGA,EAAEA,EAAE,QAAeW,IAAP,KAAShB,EAAE,KAAK,KAAKgB,EAAE,QAAQ,KAAK,MAAM,IAAK,YAAYA,EAAEhB,EAAE,KAAK,QAAQe,EAAE,KAAYC,IAAP,MAAiBA,EAAE,YAAT,OAAqBD,EAAEC,GAAGA,EAAEA,EAAE,QAAeD,IAAP,KAASV,GAAUL,EAAE,OAAT,KAAcA,EAAE,KAAK,KAAKA,EAAE,KAAK,QAAQ,KAAKe,EAAE,QAAQ,IAAI,CAAC,CAC5U,SAASa,GAAE5B,EAAE,CAAC,IAAIK,EAASL,EAAE,YAAT,MAAoBA,EAAE,UAAU,QAAQA,EAAE,MAAMgB,EAAE,EAAED,EAAE,EAAE,GAAGV,EAAE,QAAQC,EAAEN,EAAE,MAAaM,IAAP,MAAUU,GAAGV,EAAE,MAAMA,EAAE,WAAWS,GAAGT,EAAE,aAAa,SAASS,GAAGT,EAAE,MAAM,SAASA,EAAE,OAAON,EAAEM,EAAEA,EAAE,YAAa,KAAIA,EAAEN,EAAE,MAAaM,IAAP,MAAUU,GAAGV,EAAE,MAAMA,EAAE,WAAWS,GAAGT,EAAE,aAAaS,GAAGT,EAAE,MAAMA,EAAE,OAAON,EAAEM,EAAEA,EAAE,QAAQ,OAAAN,EAAE,cAAce,EAAEf,EAAE,WAAWgB,EAASX,CAAC,CAC7V,SAAS8hB,GAAGniB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEV,EAAE,aAAmB,OAANsX,GAAGtX,CAAC,EAASA,EAAE,IAAG,CAAE,IAAK,GAAE,IAAK,IAAG,IAAK,IAAG,IAAK,GAAE,IAAK,IAAG,IAAK,GAAE,IAAK,GAAE,IAAK,IAAG,IAAK,GAAE,IAAK,IAAG,OAAOuB,GAAEvB,CAAC,EAAE,KAAK,IAAK,GAAE,OAAO8V,GAAG9V,EAAE,IAAI,GAAG+V,GAAI,EAACxU,GAAEvB,CAAC,EAAE,KAAK,IAAK,GAAE,OAAAU,EAAEV,EAAE,UAAUwb,GAAE,EAAGzb,GAAE4V,EAAE,EAAE5V,GAAEK,EAAC,EAAEyb,GAAE,EAAGnb,EAAE,iBAAiBA,EAAE,QAAQA,EAAE,eAAeA,EAAE,eAAe,OAAgBf,IAAP,MAAiBA,EAAE,QAAT,QAAeqY,GAAGhY,CAAC,EAAEA,EAAE,OAAO,EAASL,IAAP,MAAUA,EAAE,cAAc,cAAmB,EAAAK,EAAE,MAAM,OAAOA,EAAE,OAAO,KAAYyX,KAAP,OAAYsK,GAAGtK,EAAE,EAAEA,GAAG,QAAOiK,GAAG/hB,EAAEK,CAAC,EAAEuB,GAAEvB,CAAC,EAAS,KAAK,IAAK,GAAE0b,GAAG1b,CAAC,EAAE,IAAIC,EAAEqb,GAAGD,GAAG,OAAO,EACpf,GAAT1a,EAAEX,EAAE,KAAeL,IAAP,MAAgBK,EAAE,WAAR,KAAkB2hB,GAAGhiB,EAAEK,EAAEW,EAAED,EAAET,CAAC,EAAEN,EAAE,MAAMK,EAAE,MAAMA,EAAE,OAAO,IAAIA,EAAE,OAAO,aAAa,CAAC,GAAG,CAACU,EAAE,CAAC,GAAUV,EAAE,YAAT,KAAmB,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAEuC,UAAEvB,CAAC,EAAS,IAAI,CAAkB,GAAjBL,EAAE2b,GAAGH,GAAG,OAAO,EAAKnD,GAAGhY,CAAC,EAAE,CAACU,EAAEV,EAAE,UAAUW,EAAEX,EAAE,KAAK,IAAIe,EAAEf,EAAE,cAA+C,OAAjCU,EAAEyU,EAAE,EAAEnV,EAAEU,EAAE0U,EAAE,EAAErU,EAAEpB,GAAOK,EAAE,KAAK,KAAZ,EAAsBW,EAAG,KAAK,SAASb,GAAE,SAASY,CAAC,EAAEZ,GAAE,QAAQY,CAAC,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQZ,GAAE,OAAOY,CAAC,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIT,EAAE,EAAEA,EAAEiT,GAAG,OAAOjT,IAAIH,GAAEoT,GAAGjT,CAAC,EAAES,CAAC,EAAE,MAAM,IAAK,SAASZ,GAAE,QAAQY,CAAC,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOZ,GAAE,QACnhBY,CAAC,EAAEZ,GAAE,OAAOY,CAAC,EAAE,MAAM,IAAK,UAAUZ,GAAE,SAASY,CAAC,EAAE,MAAM,IAAK,QAAQyE,GAAGzE,EAAEK,CAAC,EAAEjB,GAAE,UAAUY,CAAC,EAAE,MAAM,IAAK,SAASA,EAAE,cAAc,CAAC,YAAY,CAAC,CAACK,EAAE,QAAQ,EAAEjB,GAAE,UAAUY,CAAC,EAAE,MAAM,IAAK,WAAWiF,GAAGjF,EAAEK,CAAC,EAAEjB,GAAE,UAAUY,CAAC,CAAC,CAAC8F,GAAG7F,EAAEI,CAAC,EAAEd,EAAE,KAAK,QAAQa,KAAKC,EAAE,GAAGA,EAAE,eAAeD,CAAC,EAAE,CAAC,IAAID,EAAEE,EAAED,CAAC,EAAeA,IAAb,WAA0B,OAAOD,GAAlB,SAAoBH,EAAE,cAAcG,IAASE,EAAE,2BAAP,IAAiCsT,GAAG3T,EAAE,YAAYG,EAAElB,CAAC,EAAEM,EAAE,CAAC,WAAWY,CAAC,GAAc,OAAOA,GAAlB,UAAqBH,EAAE,cAAc,GAAGG,IAASE,EAAE,2BAAP,IAAiCsT,GAAG3T,EAAE,YAC1eG,EAAElB,CAAC,EAAEM,EAAE,CAAC,WAAW,GAAGY,CAAC,GAAG0B,GAAG,eAAezB,CAAC,GAASD,GAAN,MAAsBC,IAAb,YAAgBhB,GAAE,SAASY,CAAC,CAAC,CAAC,OAAOC,EAAC,CAAE,IAAK,QAAQoE,GAAGrE,CAAC,EAAE6E,GAAG7E,EAAEK,EAAE,EAAE,EAAE,MAAM,IAAK,WAAWgE,GAAGrE,CAAC,EAAEmF,GAAGnF,CAAC,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAqB,OAAOK,EAAE,SAAtB,aAAgCL,EAAE,QAAQ4T,GAAG,CAAC5T,EAAET,EAAED,EAAE,YAAYU,EAASA,IAAP,OAAWV,EAAE,OAAO,EAAE,KAAK,CAACc,EAAMb,EAAE,WAAN,EAAeA,EAAEA,EAAE,cAA+CN,IAAjC,iCAAqCA,EAAEmG,GAAGnF,CAAC,GAAoChB,IAAjC,+BAA8CgB,IAAX,UAAchB,EAAEmB,EAAE,cAAc,KAAK,EAAEnB,EAAE,UAAU,qBAAuBA,EAAEA,EAAE,YAAYA,EAAE,UAAU,GAC9f,OAAOe,EAAE,IAApB,SAAuBf,EAAEmB,EAAE,cAAcH,EAAE,CAAC,GAAGD,EAAE,EAAE,CAAC,GAAGf,EAAEmB,EAAE,cAAcH,CAAC,EAAaA,IAAX,WAAeG,EAAEnB,EAAEe,EAAE,SAASI,EAAE,SAAS,GAAGJ,EAAE,OAAOI,EAAE,KAAKJ,EAAE,QAAQf,EAAEmB,EAAE,gBAAgBnB,EAAEgB,CAAC,EAAEhB,EAAEwV,EAAE,EAAEnV,EAAEL,EAAEyV,EAAE,EAAE1U,EAAE+gB,GAAG9hB,EAAEK,EAAE,GAAG,EAAE,EAAEA,EAAE,UAAUL,EAAEA,EAAE,CAAW,OAAVmB,EAAE2F,GAAG9F,EAAED,CAAC,EAASC,EAAG,KAAK,SAASb,GAAE,SAASH,CAAC,EAAEG,GAAE,QAAQH,CAAC,EAAEM,EAAES,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQZ,GAAE,OAAOH,CAAC,EAAEM,EAAES,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIT,EAAE,EAAEA,EAAEiT,GAAG,OAAOjT,IAAIH,GAAEoT,GAAGjT,CAAC,EAAEN,CAAC,EAAEM,EAAES,EAAE,MAAM,IAAK,SAASZ,GAAE,QAAQH,CAAC,EAAEM,EAAES,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOZ,GAAE,QAClfH,CAAC,EAAEG,GAAE,OAAOH,CAAC,EAAEM,EAAES,EAAE,MAAM,IAAK,UAAUZ,GAAE,SAASH,CAAC,EAAEM,EAAES,EAAE,MAAM,IAAK,QAAQyE,GAAGxF,EAAEe,CAAC,EAAET,EAAEiF,GAAGvF,EAAEe,CAAC,EAAEZ,GAAE,UAAUH,CAAC,EAAE,MAAM,IAAK,SAASM,EAAES,EAAE,MAAM,IAAK,SAASf,EAAE,cAAc,CAAC,YAAY,CAAC,CAACe,EAAE,QAAQ,EAAET,EAAEP,GAAE,CAAE,EAACgB,EAAE,CAAC,MAAM,MAAM,CAAC,EAAEZ,GAAE,UAAUH,CAAC,EAAE,MAAM,IAAK,WAAWgG,GAAGhG,EAAEe,CAAC,EAAET,EAAEyF,GAAG/F,EAAEe,CAAC,EAAEZ,GAAE,UAAUH,CAAC,EAAE,MAAM,QAAQM,EAAES,CAAC,CAAC8F,GAAG7F,EAAEV,CAAC,EAAEY,EAAEZ,EAAE,IAAIc,KAAKF,EAAE,GAAGA,EAAE,eAAeE,CAAC,EAAE,CAAC,IAAIH,EAAEC,EAAEE,CAAC,EAAYA,IAAV,QAAYuF,GAAG3G,EAAEiB,CAAC,EAA8BG,IAA5B,2BAA+BH,EAAEA,EAAEA,EAAE,OAAO,OAAaA,GAAN,MAASqF,GAAGtG,EAAEiB,CAAC,GAAgBG,IAAb,WAA0B,OAAOH,GAAlB,UACxdD,IAD6e,YACreC,IAAL,KAASsF,GAAGvG,EAAEiB,CAAC,EAAa,OAAOA,GAAlB,UAAqBsF,GAAGvG,EAAE,GAAGiB,CAAC,EAAqCG,IAAnC,kCAAmEA,IAA7B,4BAA8CA,IAAd,cAAkBwB,GAAG,eAAexB,CAAC,EAAQH,GAAN,MAAsBG,IAAb,YAAgBjB,GAAE,SAASH,CAAC,EAAQiB,GAAN,MAASwC,GAAGzD,EAAEoB,EAAEH,EAAEE,CAAC,EAAE,CAAC,OAAOH,GAAG,IAAK,QAAQoE,GAAGpF,CAAC,EAAE4F,GAAG5F,EAAEe,EAAE,EAAE,EAAE,MAAM,IAAK,WAAWqE,GAAGpF,CAAC,EAAEkG,GAAGlG,CAAC,EAAE,MAAM,IAAK,SAAee,EAAE,OAAR,MAAef,EAAE,aAAa,QAAQ,GAAGiF,GAAGlE,EAAE,KAAK,CAAC,EAAE,MAAM,IAAK,SAASf,EAAE,SAAS,CAAC,CAACe,EAAE,SAASK,EAAEL,EAAE,MAAYK,GAAN,KAAQ0E,GAAG9F,EAAE,CAAC,CAACe,EAAE,SAASK,EAAE,EAAE,EAAQL,EAAE,cAAR,MAAsB+E,GAAG9F,EAAE,CAAC,CAACe,EAAE,SAASA,EAAE,aAClf,EAAE,EAAE,MAAM,QAAqB,OAAOT,EAAE,SAAtB,aAAgCN,EAAE,QAAQ2U,GAAG,CAAC,OAAO3T,EAAG,KAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWD,EAAE,CAAC,CAACA,EAAE,UAAU,MAAMf,EAAE,IAAK,MAAMe,EAAE,GAAG,MAAMf,EAAE,QAAQe,EAAE,EAAE,CAAC,CAACA,IAAIV,EAAE,OAAO,EAAE,CAAQA,EAAE,MAAT,OAAeA,EAAE,OAAO,IAAIA,EAAE,OAAO,QAAQ,CAACuB,UAAEvB,CAAC,EAAS,KAAK,IAAK,GAAE,GAAGL,GAASK,EAAE,WAAR,KAAkB4hB,GAAGjiB,EAAEK,EAAEL,EAAE,cAAce,CAAC,MAAM,CAAC,GAAc,OAAOA,GAAlB,UAA4BV,EAAE,YAAT,KAAmB,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAkC,GAAhC2B,EAAE2a,GAAGD,GAAG,OAAO,EAAEC,GAAGH,GAAG,OAAO,EAAKnD,GAAGhY,CAAC,EAAE,CAAyC,GAAxCU,EAAEV,EAAE,UAAUW,EAAEX,EAAE,cAAcU,EAAEyU,EAAE,EAAEnV,GAAKe,EAAEL,EAAE,YAAYC,KAAKhB,EACvf4X,GAAU5X,IAAP,MAAS,OAAOA,EAAE,IAAK,KAAK,GAAE0U,GAAG3T,EAAE,UAAUC,GAAOhB,EAAE,KAAK,KAAZ,CAAc,EAAE,MAAM,IAAK,GAAOA,EAAE,cAAc,2BAArB,IAA+C0U,GAAG3T,EAAE,UAAUC,GAAOhB,EAAE,KAAK,KAAZ,CAAc,CAAC,CAACoB,IAAIf,EAAE,OAAO,EAAE,MAAMU,GAAOC,EAAE,WAAN,EAAeA,EAAEA,EAAE,eAAe,eAAeD,CAAC,EAAEA,EAAEyU,EAAE,EAAEnV,EAAEA,EAAE,UAAUU,CAAC,CAACa,UAAEvB,CAAC,EAAS,KAAK,IAAK,IAA0B,GAAvBD,GAAEU,EAAC,EAAEC,EAAEV,EAAE,cAAwBL,IAAP,MAAiBA,EAAE,gBAAT,MAA+BA,EAAE,cAAc,aAAvB,KAAkC,CAAC,GAAGU,IAAUmX,KAAP,MAAgBxX,EAAE,KAAK,GAAS,EAAAA,EAAE,MAAM,KAAKiY,GAAE,EAAGC,GAAI,EAAClY,EAAE,OAAO,MAAMe,EAAE,WAAWA,EAAEiX,GAAGhY,CAAC,EAASU,IAAP,MAAiBA,EAAE,aAAT,KAAoB,CAAC,GACzff,IAD4f,KAC1f,CAAC,GAAG,CAACoB,EAAE,MAAM,MAAM/B,EAAE,GAAG,CAAC,EAAiD,GAA/C+B,EAAEf,EAAE,cAAce,EAASA,IAAP,KAASA,EAAE,WAAW,KAAQ,CAACA,EAAE,MAAM,MAAM/B,EAAE,GAAG,CAAC,EAAE+B,EAAEoU,EAAE,EAAEnV,CAAC,MAAMkY,GAAI,EAAM,EAAAlY,EAAE,MAAM,OAAOA,EAAE,cAAc,MAAMA,EAAE,OAAO,EAAEuB,GAAEvB,CAAC,EAAEe,EAAE,EAAE,MAAa0W,KAAP,OAAYsK,GAAGtK,EAAE,EAAEA,GAAG,MAAM1W,EAAE,GAAG,GAAG,CAACA,EAAE,OAAOf,EAAE,MAAM,MAAMA,EAAE,IAAI,CAAC,OAAQA,EAAE,MAAM,KAAYA,EAAE,MAAMW,EAAEX,IAAEU,EAASA,IAAP,KAASA,KAAYf,IAAP,MAAiBA,EAAE,gBAAT,OAAyBe,IAAIV,EAAE,MAAM,OAAO,KAAUA,EAAE,KAAK,IAAYL,IAAP,MAAec,GAAE,QAAQ,EAAOe,KAAJ,IAAQA,GAAE,GAAG2f,GAAI,IAAUnhB,EAAE,cAAT,OAAuBA,EAAE,OAAO,GAAGuB,GAAEvB,CAAC,EAAS,MAAK,IAAK,GAAE,OAAOwb,GAAI,EACzfkG,GAAG/hB,EAAEK,CAAC,EAASL,IAAP,MAAU8T,GAAGzT,EAAE,UAAU,aAAa,EAAEuB,GAAEvB,CAAC,EAAE,KAAK,IAAK,IAAG,OAAO2Y,GAAG3Y,EAAE,KAAK,QAAQ,EAAEuB,GAAEvB,CAAC,EAAE,KAAK,IAAK,IAAG,OAAO8V,GAAG9V,EAAE,IAAI,GAAG+V,GAAE,EAAGxU,GAAEvB,CAAC,EAAE,KAAK,IAAK,IAA0B,GAAvBD,GAAEU,EAAC,EAAEM,EAAEf,EAAE,cAAwBe,IAAP,KAAS,OAAOQ,GAAEvB,CAAC,EAAE,KAAuC,GAAlCU,GAAOV,EAAE,MAAM,OAAb,EAAkBc,EAAEC,EAAE,UAAoBD,IAAP,KAAS,GAAGJ,EAAEmhB,GAAG9gB,EAAE,EAAE,MAAM,CAAC,GAAOS,KAAJ,GAAc7B,IAAP,MAAeA,EAAE,MAAM,IAAK,IAAIA,EAAEK,EAAE,MAAaL,IAAP,MAAU,CAAS,GAARmB,EAAE6a,GAAGhc,CAAC,EAAYmB,IAAP,KAAS,CAAmG,IAAlGd,EAAE,OAAO,IAAI6hB,GAAG9gB,EAAE,EAAE,EAAEL,EAAEI,EAAE,YAAmBJ,IAAP,OAAWV,EAAE,YAAYU,EAAEV,EAAE,OAAO,GAAGA,EAAE,aAAa,EAAEU,EAAEC,EAAMA,EAAEX,EAAE,MAAaW,IAAP,MAAUI,EAAEJ,EAAEhB,EAAEe,EAAEK,EAAE,OAAO,SAC7eD,EAAEC,EAAE,UAAiBD,IAAP,MAAUC,EAAE,WAAW,EAAEA,EAAE,MAAMpB,EAAEoB,EAAE,MAAM,KAAKA,EAAE,aAAa,EAAEA,EAAE,cAAc,KAAKA,EAAE,cAAc,KAAKA,EAAE,YAAY,KAAKA,EAAE,aAAa,KAAKA,EAAE,UAAU,OAAOA,EAAE,WAAWD,EAAE,WAAWC,EAAE,MAAMD,EAAE,MAAMC,EAAE,MAAMD,EAAE,MAAMC,EAAE,aAAa,EAAEA,EAAE,UAAU,KAAKA,EAAE,cAAcD,EAAE,cAAcC,EAAE,cAAcD,EAAE,cAAcC,EAAE,YAAYD,EAAE,YAAYC,EAAE,KAAKD,EAAE,KAAKnB,EAAEmB,EAAE,aAAaC,EAAE,aAAoBpB,IAAP,KAAS,KAAK,CAAC,MAAMA,EAAE,MAAM,aAAaA,EAAE,YAAY,GAAGgB,EAAEA,EAAE,QAAQ,OAAAR,GAAEM,GAAEA,GAAE,QAAQ,EAAE,CAAC,EAAST,EAAE,KAAK,CAACL,EAClgBA,EAAE,OAAO,CAAQoB,EAAE,OAAT,MAAenB,GAAG,EAACoiB,KAAKhiB,EAAE,OAAO,IAAIU,EAAE,GAAGmhB,GAAG9gB,EAAE,EAAE,EAAEf,EAAE,MAAM,QAAQ,KAAK,CAAC,GAAG,CAACU,EAAE,GAAGf,EAAEgc,GAAG7a,CAAC,EAASnB,IAAP,MAAU,GAAGK,EAAE,OAAO,IAAIU,EAAE,GAAGC,EAAEhB,EAAE,YAAmBgB,IAAP,OAAWX,EAAE,YAAYW,EAAEX,EAAE,OAAO,GAAG6hB,GAAG9gB,EAAE,EAAE,EAASA,EAAE,OAAT,MAA0BA,EAAE,WAAb,UAAuB,CAACD,EAAE,WAAW,CAACT,GAAE,OAAOkB,GAAEvB,CAAC,EAAE,SAAU,GAAEJ,GAAC,EAAGmB,EAAE,mBAAmBihB,IAAiBrhB,IAAb,aAAiBX,EAAE,OAAO,IAAIU,EAAE,GAAGmhB,GAAG9gB,EAAE,EAAE,EAAEf,EAAE,MAAM,SAASe,EAAE,aAAaD,EAAE,QAAQd,EAAE,MAAMA,EAAE,MAAMc,IAAIH,EAAEI,EAAE,KAAYJ,IAAP,KAASA,EAAE,QAAQG,EAAEd,EAAE,MAAMc,EAAEC,EAAE,KAAKD,EAAE,CAAC,OAAUC,EAAE,OAAT,MAAqBf,EAAEe,EAAE,KAAKA,EAAE,UAC9ef,EAAEe,EAAE,KAAKf,EAAE,QAAQe,EAAE,mBAAmBnB,GAAC,EAAGI,EAAE,QAAQ,KAAKW,EAAEF,GAAE,QAAQN,GAAEM,GAAEC,EAAEC,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAEX,IAAEuB,GAAEvB,CAAC,EAAS,MAAK,IAAK,IAAG,IAAK,IAAG,OAAOiiB,GAAE,EAAGvhB,EAASV,EAAE,gBAAT,KAA8BL,IAAP,MAAiBA,EAAE,gBAAT,OAAyBe,IAAIV,EAAE,OAAO,MAAMU,GAAQV,EAAE,KAAK,EAAQqgB,GAAG,aAAc9e,GAAEvB,CAAC,EAAEA,EAAE,aAAa,IAAIA,EAAE,OAAO,OAAOuB,GAAEvB,CAAC,EAAE,KAAK,IAAK,IAAG,OAAO,KAAK,IAAK,IAAG,OAAO,IAAI,CAAC,MAAM,MAAMhB,EAAE,IAAIgB,EAAE,GAAG,CAAC,CAAE,CAClX,SAASkiB,GAAGviB,EAAEK,EAAE,CAAO,OAANsX,GAAGtX,CAAC,EAASA,EAAE,IAAK,KAAK,GAAE,OAAO8V,GAAG9V,EAAE,IAAI,GAAG+V,GAAI,EAACpW,EAAEK,EAAE,MAAML,EAAE,OAAOK,EAAE,MAAML,EAAE,OAAO,IAAIK,GAAG,KAAK,IAAK,GAAE,OAAOwb,GAAI,EAACzb,GAAE4V,EAAE,EAAE5V,GAAEK,EAAC,EAAEyb,GAAI,EAAClc,EAAEK,EAAE,MAAWL,EAAE,OAAa,EAAAA,EAAE,MAAMK,EAAE,MAAML,EAAE,OAAO,IAAIK,GAAG,KAAK,IAAK,GAAE,OAAO0b,GAAG1b,CAAC,EAAE,KAAK,IAAK,IAA0B,GAAvBD,GAAEU,EAAC,EAAEd,EAAEK,EAAE,cAAwBL,IAAP,MAAiBA,EAAE,aAAT,KAAoB,CAAC,GAAUK,EAAE,YAAT,KAAmB,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAEkZ,GAAE,CAAE,CAAC,OAAAvY,EAAEK,EAAE,MAAaL,EAAE,OAAOK,EAAE,MAAML,EAAE,OAAO,IAAIK,GAAG,KAAK,IAAK,IAAG,OAAOD,GAAEU,EAAC,EAAE,KAAK,IAAK,GAAE,OAAO+a,GAAI,EAAC,KAAK,IAAK,IAAG,OAAO7C,GAAG3Y,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAK,IAAG,IAAK,IAAG,OAAOiiB,GAAI,EAC9gB,KAAK,IAAK,IAAG,OAAO,KAAK,QAAQ,OAAO,IAAI,CAAC,CAAC,IAAIE,GAAG,GAAG1gB,GAAE,GAAG2gB,GAAgB,OAAO,SAApB,WAA4B,QAAQ,IAAI1gB,GAAE,KAAK,SAAS2gB,GAAG1iB,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,IAAI,GAAUgB,IAAP,KAAS,GAAgB,OAAOA,GAApB,WAAsB,GAAG,CAACA,EAAE,IAAI,CAAC,OAAOD,EAAE,CAACiB,GAAEhC,EAAEK,EAAEU,CAAC,CAAC,MAAMC,EAAE,QAAQ,IAAI,CAAC,SAAS2hB,GAAG3iB,EAAEK,EAAEW,EAAE,CAAC,GAAG,CAACA,EAAG,QAAOD,EAAE,CAACiB,GAAEhC,EAAEK,EAAEU,CAAC,CAAC,CAAC,CAAC,IAAI6hB,GAAG,GACxR,SAASC,GAAG7iB,EAAEK,EAAE,CAAc,GAAbuU,GAAGtI,GAAGtM,EAAE8R,GAAE,EAAMC,GAAG/R,CAAC,EAAE,CAAC,GAAG,mBAAmBA,EAAE,IAAIgB,EAAE,CAAC,MAAMhB,EAAE,eAAe,IAAIA,EAAE,YAAY,OAAOA,EAAE,CAACgB,GAAGA,EAAEhB,EAAE,gBAAgBgB,EAAE,aAAa,OAAO,IAAID,EAAEC,EAAE,cAAcA,EAAE,aAAY,EAAG,GAAGD,GAAOA,EAAE,aAAN,EAAiB,CAACC,EAAED,EAAE,WAAW,IAAIT,EAAES,EAAE,aAAaK,EAAEL,EAAE,UAAUA,EAAEA,EAAE,YAAY,GAAG,CAACC,EAAE,SAASI,EAAE,QAAQ,MAAS,CAACJ,EAAE,KAAK,MAAMhB,CAAC,CAAC,IAAImB,EAAE,EAAED,EAAE,GAAGD,EAAE,GAAG9B,EAAE,EAAEkC,EAAE,EAAE/B,EAAEU,EAAET,EAAE,KAAKc,EAAE,OAAO,CAAC,QAAQR,EAAKP,IAAI0B,GAAOV,IAAJ,GAAWhB,EAAE,WAAN,IAAiB4B,EAAEC,EAAEb,GAAGhB,IAAI8B,GAAOL,IAAJ,GAAWzB,EAAE,WAAN,IAAiB2B,EAAEE,EAAEJ,GAAOzB,EAAE,WAAN,IAAiB6B,GACnf7B,EAAE,UAAU,SAAmBO,EAAEP,EAAE,cAAZ,MAA8BC,EAAED,EAAEA,EAAEO,EAAE,OAAO,CAAC,GAAGP,IAAIU,EAAE,MAAMK,EAA8C,GAA5Cd,IAAIyB,GAAG,EAAE7B,IAAImB,IAAIY,EAAEC,GAAG5B,IAAI6B,GAAG,EAAEC,IAAIN,IAAIE,EAAEE,IAActB,EAAEP,EAAE,eAAZ,KAAyB,MAAMA,EAAEC,EAAEA,EAAED,EAAE,UAAU,CAACA,EAAEO,CAAC,CAACmB,EAAOE,IAAL,IAAaD,IAAL,GAAO,KAAK,CAAC,MAAMC,EAAE,IAAID,CAAC,CAAC,MAAMD,EAAE,IAAI,CAACA,EAAEA,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAMA,EAAE,KAA+C,IAA1C6T,GAAG,CAAC,YAAY7U,EAAE,eAAegB,CAAC,EAAEsL,GAAG,GAAOvK,GAAE1B,EAAS0B,KAAP,MAAU,GAAG1B,EAAE0B,GAAE/B,EAAEK,EAAE,OAAWA,EAAE,aAAa,QAApB,GAAkCL,IAAP,KAASA,EAAE,OAAOK,EAAE0B,GAAE/B,MAAO,MAAY+B,KAAP,MAAU,CAAC1B,EAAE0B,GAAE,GAAG,CAAC,IAAI3C,EAAEiB,EAAE,UAAU,GAAQA,EAAE,MAAM,KAAM,OAAOA,EAAE,IAAK,KAAK,GAAE,IAAK,IAAG,IAAK,IAAG,MACxf,IAAK,GAAE,GAAUjB,IAAP,KAAS,CAAC,IAAII,EAAEJ,EAAE,cAAcuB,EAAEvB,EAAE,cAAcQ,EAAES,EAAE,UAAUV,EAAEC,EAAE,wBAAwBS,EAAE,cAAcA,EAAE,KAAKb,EAAEkZ,GAAGrY,EAAE,KAAKb,CAAC,EAAEmB,CAAC,EAAEf,EAAE,oCAAoCD,CAAC,CAAC,MAAM,IAAK,GAAE,IAAIF,EAAEY,EAAE,UAAU,cAAkBZ,EAAE,WAAN,EAAeA,EAAE,YAAY,GAAOA,EAAE,WAAN,GAAgBA,EAAE,iBAAiBA,EAAE,YAAYA,EAAE,eAAe,EAAE,MAAM,IAAK,GAAE,IAAK,GAAE,IAAK,GAAE,IAAK,IAAG,MAAM,QAAQ,MAAM,MAAMJ,EAAE,GAAG,CAAC,CAAE,CAAC,OAAOkB,EAAE,CAACyB,GAAE3B,EAAEA,EAAE,OAAOE,CAAC,CAAC,CAAa,GAAZP,EAAEK,EAAE,QAAkBL,IAAP,KAAS,CAACA,EAAE,OAAOK,EAAE,OAAO0B,GAAE/B,EAAE,KAAK,CAAC+B,GAAE1B,EAAE,MAAM,CAAC,OAAAjB,EAAEwjB,GAAGA,GAAG,GAAUxjB,CAAC,CAC3f,SAAS0jB,GAAG9iB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEV,EAAE,YAAyC,GAA7BU,EAASA,IAAP,KAASA,EAAE,WAAW,KAAeA,IAAP,KAAS,CAAC,IAAIT,EAAES,EAAEA,EAAE,KAAK,EAAE,CAAC,IAAIT,EAAE,IAAIN,KAAKA,EAAE,CAAC,IAAIoB,EAAEd,EAAE,QAAQA,EAAE,QAAQ,OAAgBc,IAAT,QAAYuhB,GAAGtiB,EAAEW,EAAEI,CAAC,CAAC,CAACd,EAAEA,EAAE,IAAI,OAAOA,IAAIS,EAAE,CAAC,CAAC,SAASgiB,GAAG/iB,EAAEK,EAAE,CAA8C,GAA7CA,EAAEA,EAAE,YAAYA,EAASA,IAAP,KAASA,EAAE,WAAW,KAAeA,IAAP,KAAS,CAAC,IAAIW,EAAEX,EAAEA,EAAE,KAAK,EAAE,CAAC,IAAIW,EAAE,IAAIhB,KAAKA,EAAE,CAAC,IAAIe,EAAEC,EAAE,OAAOA,EAAE,QAAQD,EAAC,CAAE,CAACC,EAAEA,EAAE,IAAI,OAAOA,IAAIX,EAAE,CAAC,CAAC,SAAS2iB,GAAGhjB,EAAE,CAAC,IAAIK,EAAEL,EAAE,IAAI,GAAUK,IAAP,KAAS,CAAC,IAAIW,EAAEhB,EAAE,UAAU,OAAOA,EAAE,IAAG,CAAE,IAAK,GAAEA,EAAEgB,EAAE,MAAM,QAAQhB,EAAEgB,CAAC,CAAc,OAAOX,GAApB,WAAsBA,EAAEL,CAAC,EAAEK,EAAE,QAAQL,CAAC,CAAC,CAClf,SAASijB,GAAGjjB,EAAE,CAAC,IAAIK,EAAEL,EAAE,UAAiBK,IAAP,OAAWL,EAAE,UAAU,KAAKijB,GAAG5iB,CAAC,GAAGL,EAAE,MAAM,KAAKA,EAAE,UAAU,KAAKA,EAAE,QAAQ,KAASA,EAAE,MAAN,IAAYK,EAAEL,EAAE,UAAiBK,IAAP,OAAW,OAAOA,EAAEmV,EAAE,EAAE,OAAOnV,EAAEoV,EAAE,EAAE,OAAOpV,EAAEqT,EAAE,EAAE,OAAOrT,EAAEqV,EAAE,EAAE,OAAOrV,EAAEsV,EAAE,IAAI3V,EAAE,UAAU,KAAKA,EAAE,OAAO,KAAKA,EAAE,aAAa,KAAKA,EAAE,cAAc,KAAKA,EAAE,cAAc,KAAKA,EAAE,aAAa,KAAKA,EAAE,UAAU,KAAKA,EAAE,YAAY,IAAI,CAAC,SAASkjB,GAAGljB,EAAE,CAAC,OAAWA,EAAE,MAAN,GAAeA,EAAE,MAAN,GAAeA,EAAE,MAAN,CAAS,CACna,SAASmjB,GAAGnjB,EAAE,CAACA,EAAE,OAAO,CAAC,KAAYA,EAAE,UAAT,MAAkB,CAAC,GAAUA,EAAE,SAAT,MAAiBkjB,GAAGljB,EAAE,MAAM,EAAE,OAAO,KAAKA,EAAEA,EAAE,MAAM,CAA2B,IAA1BA,EAAE,QAAQ,OAAOA,EAAE,OAAWA,EAAEA,EAAE,QAAYA,EAAE,MAAN,GAAeA,EAAE,MAAN,GAAgBA,EAAE,MAAP,IAAY,CAAyB,GAArBA,EAAE,MAAM,GAAuBA,EAAE,QAAT,MAAoBA,EAAE,MAAN,EAAU,SAASA,EAAOA,EAAE,MAAM,OAAOA,EAAEA,EAAEA,EAAE,KAAK,CAAC,GAAG,EAAEA,EAAE,MAAM,GAAG,OAAOA,EAAE,SAAS,CAAC,CACzT,SAASojB,GAAGpjB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,IAAI,GAAOe,IAAJ,GAAWA,IAAJ,EAAMf,EAAEA,EAAE,UAAUK,EAAMW,EAAE,WAAN,EAAeA,EAAE,WAAW,aAAahB,EAAEK,CAAC,EAAEW,EAAE,aAAahB,EAAEK,CAAC,GAAOW,EAAE,WAAN,GAAgBX,EAAEW,EAAE,WAAWX,EAAE,aAAaL,EAAEgB,CAAC,IAAIX,EAAEW,EAAEX,EAAE,YAAYL,CAAC,GAAGgB,EAAEA,EAAE,oBAA2BA,GAAP,MAA6BX,EAAE,UAAT,OAAmBA,EAAE,QAAQsU,aAAiB5T,IAAJ,IAAQf,EAAEA,EAAE,MAAaA,IAAP,MAAU,IAAIojB,GAAGpjB,EAAEK,EAAEW,CAAC,EAAEhB,EAAEA,EAAE,QAAeA,IAAP,MAAUojB,GAAGpjB,EAAEK,EAAEW,CAAC,EAAEhB,EAAEA,EAAE,OAAO,CAC1X,SAASqjB,GAAGrjB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,IAAI,GAAOe,IAAJ,GAAWA,IAAJ,EAAMf,EAAEA,EAAE,UAAUK,EAAEW,EAAE,aAAahB,EAAEK,CAAC,EAAEW,EAAE,YAAYhB,CAAC,UAAce,IAAJ,IAAQf,EAAEA,EAAE,MAAaA,IAAP,MAAU,IAAIqjB,GAAGrjB,EAAEK,EAAEW,CAAC,EAAEhB,EAAEA,EAAE,QAAeA,IAAP,MAAUqjB,GAAGrjB,EAAEK,EAAEW,CAAC,EAAEhB,EAAEA,EAAE,OAAO,CAAC,IAAIsjB,GAAE,KAAKC,GAAG,GAAG,SAASC,GAAGxjB,EAAEK,EAAEW,EAAE,CAAC,IAAIA,EAAEA,EAAE,MAAaA,IAAP,MAAUyiB,GAAGzjB,EAAEK,EAAEW,CAAC,EAAEA,EAAEA,EAAE,OAAO,CACnR,SAASyiB,GAAGzjB,EAAEK,EAAEW,EAAE,CAAC,GAAGyI,IAAiB,OAAOA,GAAG,sBAAvB,WAA4C,GAAG,CAACA,GAAG,qBAAqBD,GAAGxI,CAAC,CAAC,MAAS,CAAE,QAAOA,EAAE,IAAG,CAAE,IAAK,GAAEc,IAAG4gB,GAAG1hB,EAAEX,CAAC,EAAE,IAAK,GAAE,IAAIU,EAAEuiB,GAAEhjB,EAAEijB,GAAGD,GAAE,KAAKE,GAAGxjB,EAAEK,EAAEW,CAAC,EAAEsiB,GAAEviB,EAAEwiB,GAAGjjB,EAASgjB,KAAP,OAAWC,IAAIvjB,EAAEsjB,GAAEtiB,EAAEA,EAAE,UAAchB,EAAE,WAAN,EAAeA,EAAE,WAAW,YAAYgB,CAAC,EAAEhB,EAAE,YAAYgB,CAAC,GAAGsiB,GAAE,YAAYtiB,EAAE,SAAS,GAAG,MAAM,IAAK,IAAUsiB,KAAP,OAAWC,IAAIvjB,EAAEsjB,GAAEtiB,EAAEA,EAAE,UAAchB,EAAE,WAAN,EAAeoV,GAAGpV,EAAE,WAAWgB,CAAC,EAAMhB,EAAE,WAAN,GAAgBoV,GAAGpV,EAAEgB,CAAC,EAAEoL,GAAGpM,CAAC,GAAGoV,GAAGkO,GAAEtiB,EAAE,SAAS,GAAG,MAAM,IAAK,GAAED,EAAEuiB,GAAEhjB,EAAEijB,GAAGD,GAAEtiB,EAAE,UAAU,cAAcuiB,GAAG,GAClfC,GAAGxjB,EAAEK,EAAEW,CAAC,EAAEsiB,GAAEviB,EAAEwiB,GAAGjjB,EAAE,MAAM,IAAK,GAAE,IAAK,IAAG,IAAK,IAAG,IAAK,IAAG,GAAG,CAACwB,KAAIf,EAAEC,EAAE,YAAmBD,IAAP,OAAWA,EAAEA,EAAE,WAAkBA,IAAP,OAAW,CAACT,EAAES,EAAEA,EAAE,KAAK,EAAE,CAAC,IAAIK,EAAEd,EAAEa,EAAEC,EAAE,QAAQA,EAAEA,EAAE,IAAaD,IAAT,SAAkBC,EAAE,GAAkBA,EAAE,IAAIuhB,GAAG3hB,EAAEX,EAAEc,CAAC,EAAGb,EAAEA,EAAE,IAAI,OAAOA,IAAIS,EAAE,CAACyiB,GAAGxjB,EAAEK,EAAEW,CAAC,EAAE,MAAM,IAAK,GAAE,GAAG,CAACc,KAAI4gB,GAAG1hB,EAAEX,CAAC,EAAEU,EAAEC,EAAE,UAAuB,OAAOD,EAAE,sBAAtB,YAA4C,GAAG,CAACA,EAAE,MAAMC,EAAE,cAAcD,EAAE,MAAMC,EAAE,cAAcD,EAAE,qBAAsB,QAAOG,EAAE,CAACc,GAAEhB,EAAEX,EAAEa,CAAC,CAAC,CAACsiB,GAAGxjB,EAAEK,EAAEW,CAAC,EAAE,MAAM,IAAK,IAAGwiB,GAAGxjB,EAAEK,EAAEW,CAAC,EAAE,MAAM,IAAK,IAAGA,EAAE,KAAK,GAAGc,IAAGf,EAAEe,KAC5ed,EAAE,gBAD8e,KAChewiB,GAAGxjB,EAAEK,EAAEW,CAAC,EAAEc,GAAEf,GAAGyiB,GAAGxjB,EAAEK,EAAEW,CAAC,EAAE,MAAM,QAAQwiB,GAAGxjB,EAAEK,EAAEW,CAAC,CAAC,CAAC,CAAC,SAAS0iB,GAAG1jB,EAAE,CAAC,IAAIK,EAAEL,EAAE,YAAY,GAAUK,IAAP,KAAS,CAACL,EAAE,YAAY,KAAK,IAAIgB,EAAEhB,EAAE,UAAiBgB,IAAP,OAAWA,EAAEhB,EAAE,UAAU,IAAIyiB,IAAIpiB,EAAE,QAAQ,SAASA,EAAE,CAAC,IAAIU,EAAE4iB,GAAG,KAAK,KAAK3jB,EAAEK,CAAC,EAAEW,EAAE,IAAIX,CAAC,IAAIW,EAAE,IAAIX,CAAC,EAAEA,EAAE,KAAKU,EAAEA,CAAC,EAAE,CAAC,CAAC,CAAC,CACzQ,SAAS6iB,GAAG5jB,EAAEK,EAAE,CAAC,IAAIW,EAAEX,EAAE,UAAU,GAAUW,IAAP,KAAS,QAAQD,EAAE,EAAEA,EAAEC,EAAE,OAAOD,IAAI,CAAC,IAAIT,EAAEU,EAAED,CAAC,EAAE,GAAG,CAAC,IAAIK,EAAEpB,EAAEmB,EAAEd,EAAEa,EAAEC,EAAEnB,EAAE,KAAYkB,IAAP,MAAU,CAAC,OAAOA,EAAE,IAAG,CAAE,IAAK,GAAEoiB,GAAEpiB,EAAE,UAAUqiB,GAAG,GAAG,MAAMvjB,EAAE,IAAK,GAAEsjB,GAAEpiB,EAAE,UAAU,cAAcqiB,GAAG,GAAG,MAAMvjB,EAAE,IAAK,GAAEsjB,GAAEpiB,EAAE,UAAU,cAAcqiB,GAAG,GAAG,MAAMvjB,CAAC,CAACkB,EAAEA,EAAE,MAAM,CAAC,GAAUoiB,KAAP,KAAS,MAAM,MAAMjkB,EAAE,GAAG,CAAC,EAAEokB,GAAGriB,EAAED,EAAEb,CAAC,EAAEgjB,GAAE,KAAKC,GAAG,GAAG,IAAItiB,EAAEX,EAAE,UAAiBW,IAAP,OAAWA,EAAE,OAAO,MAAMX,EAAE,OAAO,IAAI,OAAOnB,EAAE,CAAC6C,GAAE1B,EAAED,EAAElB,CAAC,CAAC,CAAC,CAAC,GAAGkB,EAAE,aAAa,MAAM,IAAIA,EAAEA,EAAE,MAAaA,IAAP,MAAUwjB,GAAGxjB,EAAEL,CAAC,EAAEK,EAAEA,EAAE,OAAO,CACje,SAASwjB,GAAG7jB,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,UAAUe,EAAEf,EAAE,MAAM,OAAOA,EAAE,IAAG,CAAE,IAAK,GAAE,IAAK,IAAG,IAAK,IAAG,IAAK,IAAiB,GAAd4jB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAKe,EAAE,EAAE,CAAC,GAAG,CAAC+hB,GAAG,EAAE9iB,EAAEA,EAAE,MAAM,EAAE+iB,GAAG,EAAE/iB,CAAC,CAAC,OAAOR,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,CAAC,GAAG,CAACsjB,GAAG,EAAE9iB,EAAEA,EAAE,MAAM,CAAC,OAAOR,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,CAAC,CAAC,MAAM,IAAK,GAAEokB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAEe,EAAE,KAAYC,IAAP,MAAU0hB,GAAG1hB,EAAEA,EAAE,MAAM,EAAE,MAAM,IAAK,GAAgD,GAA9C4iB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAEe,EAAE,KAAYC,IAAP,MAAU0hB,GAAG1hB,EAAEA,EAAE,MAAM,EAAKhB,EAAE,MAAM,GAAG,CAAC,IAAIM,EAAEN,EAAE,UAAU,GAAG,CAACuG,GAAGjG,EAAE,EAAE,CAAC,OAAOd,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,CAAC,CAAC,GAAGuB,EAAE,IAAIT,EAAEN,EAAE,UAAgBM,GAAN,MAAS,CAAC,IAAIc,EAAEpB,EAAE,cAAcmB,EAASH,IAAP,KAASA,EAAE,cAAcI,EAAEF,EAAElB,EAAE,KAAKiB,EAAEjB,EAAE,YACje,GAAnBA,EAAE,YAAY,KAAeiB,IAAP,KAAS,GAAG,CAAWC,IAAV,SAAuBE,EAAE,OAAZ,SAAwBA,EAAE,MAAR,MAAcqE,GAAGnF,EAAEc,CAAC,EAAE0F,GAAG5F,EAAEC,CAAC,EAAE,IAAIhC,EAAE2H,GAAG5F,EAAEE,CAAC,EAAE,IAAID,EAAE,EAAEA,EAAEF,EAAE,OAAOE,GAAG,EAAE,CAAC,IAAIE,EAAEJ,EAAEE,CAAC,EAAE7B,EAAE2B,EAAEE,EAAE,CAAC,EAAYE,IAAV,QAAYsF,GAAGrG,EAAEhB,CAAC,EAA8B+B,IAA5B,0BAA8BiF,GAAGhG,EAAEhB,CAAC,EAAe+B,IAAb,WAAekF,GAAGjG,EAAEhB,CAAC,EAAEmE,GAAGnD,EAAEe,EAAE/B,EAAEH,CAAC,CAAC,CAAC,OAAO+B,EAAC,CAAE,IAAK,QAAQwE,GAAGpF,EAAEc,CAAC,EAAE,MAAM,IAAK,WAAW6E,GAAG3F,EAAEc,CAAC,EAAE,MAAM,IAAK,SAAS,IAAI7B,EAAEe,EAAE,cAAc,YAAYA,EAAE,cAAc,YAAY,CAAC,CAACc,EAAE,SAAS,IAAIvB,EAAEuB,EAAE,MAAYvB,GAAN,KAAQiG,GAAGxF,EAAE,CAAC,CAACc,EAAE,SAASvB,EAAE,EAAE,EAAEN,IAAI,CAAC,CAAC6B,EAAE,WAAiBA,EAAE,cAAR,KAAqB0E,GAAGxF,EAAE,CAAC,CAACc,EAAE,SACnfA,EAAE,aAAa,EAAE,EAAE0E,GAAGxF,EAAE,CAAC,CAACc,EAAE,SAASA,EAAE,SAAS,GAAG,GAAG,EAAE,EAAE,CAACd,EAAEmV,EAAE,EAAErU,CAAC,OAAO5B,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,CAAC,CAAC,MAAM,IAAK,GAAgB,GAAdokB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAKe,EAAE,EAAE,CAAC,GAAUf,EAAE,YAAT,KAAmB,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAEiB,EAAEN,EAAE,UAAUoB,EAAEpB,EAAE,cAAc,GAAG,CAACM,EAAE,UAAUc,CAAC,OAAO5B,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,CAAC,CAAC,MAAM,IAAK,GAAgB,GAAdokB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAKe,EAAE,GAAUC,IAAP,MAAUA,EAAE,cAAc,aAAa,GAAG,CAACoL,GAAG/L,EAAE,aAAa,CAAC,OAAOb,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,CAAC,MAAM,IAAK,GAAEokB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAE,MAAM,IAAK,IAAG4jB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAEM,EAAEN,EAAE,MAAMM,EAAE,MAAM,OAAOc,EAASd,EAAE,gBAAT,KAAuBA,EAAE,UAAU,SAASc,EAAE,CAACA,GAC3ed,EAAE,YAAT,MAA2BA,EAAE,UAAU,gBAAnB,OAAmCyjB,GAAG9jB,GAAC,IAAKc,EAAE,GAAG2iB,GAAG1jB,CAAC,EAAE,MAAM,IAAK,IAAsF,GAAnFqB,EAASL,IAAP,MAAiBA,EAAE,gBAAT,KAAuBhB,EAAE,KAAK,GAAG8B,IAAG3C,EAAE2C,KAAIT,EAAEuiB,GAAGvjB,EAAEL,CAAC,EAAE8B,GAAE3C,GAAGykB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAKe,EAAE,KAAK,CAA0B,GAAzB5B,EAASa,EAAE,gBAAT,MAA2BA,EAAE,UAAU,SAASb,IAAI,CAACkC,GAAQrB,EAAE,KAAK,EAAG,IAAI+B,GAAE/B,EAAEqB,EAAErB,EAAE,MAAaqB,IAAP,MAAU,CAAC,IAAI/B,EAAEyC,GAAEV,EAASU,KAAP,MAAU,CAAe,OAAdxC,EAAEwC,GAAElC,EAAEN,EAAE,MAAaA,EAAE,IAAK,KAAK,GAAE,IAAK,IAAG,IAAK,IAAG,IAAK,IAAGujB,GAAG,EAAEvjB,EAAEA,EAAE,MAAM,EAAE,MAAM,IAAK,GAAEmjB,GAAGnjB,EAAEA,EAAE,MAAM,EAAE,IAAIH,EAAEG,EAAE,UAAU,GAAgB,OAAOH,EAAE,sBAAtB,WAA2C,CAAC2B,EAAExB,EAAEyB,EAAEzB,EAAE,OAAO,GAAG,CAACc,EAAEU,EAAE3B,EAAE,MACpfiB,EAAE,cAAcjB,EAAE,MAAMiB,EAAE,cAAcjB,EAAE,qBAAsB,QAAOI,EAAE,CAACwC,GAAEjB,EAAEC,EAAExB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAK,GAAEkjB,GAAGnjB,EAAEA,EAAE,MAAM,EAAE,MAAM,IAAK,IAAG,GAAUA,EAAE,gBAAT,KAAuB,CAACykB,GAAG1kB,CAAC,EAAE,QAAQ,CAAC,CAAQO,IAAP,MAAUA,EAAE,OAAON,EAAEwC,GAAElC,GAAGmkB,GAAG1kB,CAAC,CAAC,CAAC+B,EAAEA,EAAE,OAAO,CAACrB,EAAE,IAAIqB,EAAE,KAAK/B,EAAEU,IAAI,CAAC,GAAOV,EAAE,MAAN,GAAW,GAAU+B,IAAP,KAAS,CAACA,EAAE/B,EAAE,GAAG,CAACgB,EAAEhB,EAAE,UAAUH,GAAGiC,EAAEd,EAAE,MAAmB,OAAOc,EAAE,aAAtB,WAAkCA,EAAE,YAAY,UAAU,OAAO,WAAW,EAAEA,EAAE,QAAQ,SAASF,EAAE5B,EAAE,UAAU2B,EAAE3B,EAAE,cAAc,MAAM6B,EAAqBF,GAAP,MAAUA,EAAE,eAAe,SAAS,EAAEA,EAAE,QAAQ,KAAKC,EAAE,MAAM,QACzfwF,GAAG,UAAUvF,CAAC,EAAE,OAAO3B,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,CAAC,UAAcF,EAAE,MAAN,GAAW,GAAU+B,IAAP,KAAS,GAAG,CAAC/B,EAAE,UAAU,UAAUH,EAAE,GAAGG,EAAE,aAAa,OAAOE,EAAE,CAACwC,GAAEhC,EAAEA,EAAE,OAAOR,CAAC,CAAC,WAAgBF,EAAE,MAAP,IAAiBA,EAAE,MAAP,IAAmBA,EAAE,gBAAT,MAAwBA,IAAIU,IAAWV,EAAE,QAAT,KAAe,CAACA,EAAE,MAAM,OAAOA,EAAEA,EAAEA,EAAE,MAAM,QAAQ,CAAC,GAAGA,IAAIU,EAAE,MAAMA,EAAE,KAAYV,EAAE,UAAT,MAAkB,CAAC,GAAUA,EAAE,SAAT,MAAiBA,EAAE,SAASU,EAAE,MAAMA,EAAEqB,IAAI/B,IAAI+B,EAAE,MAAM/B,EAAEA,EAAE,MAAM,CAAC+B,IAAI/B,IAAI+B,EAAE,MAAM/B,EAAE,QAAQ,OAAOA,EAAE,OAAOA,EAAEA,EAAE,OAAO,CAAC,CAAC,MAAM,IAAK,IAAGskB,GAAGvjB,EAAEL,CAAC,EAAE8jB,GAAG9jB,CAAC,EAAEe,EAAE,GAAG2iB,GAAG1jB,CAAC,EAAE,MAAM,IAAK,IAAG,MAAM,QAAQ4jB,GAAGvjB,EACnfL,CAAC,EAAE8jB,GAAG9jB,CAAC,CAAC,CAAC,CAAC,SAAS8jB,GAAG9jB,EAAE,CAAC,IAAIK,EAAEL,EAAE,MAAM,GAAGK,EAAE,EAAE,CAAC,GAAG,CAACL,EAAE,CAAC,QAAQgB,EAAEhB,EAAE,OAAcgB,IAAP,MAAU,CAAC,GAAGkiB,GAAGliB,CAAC,EAAE,CAAC,IAAID,EAAEC,EAAE,MAAMhB,CAAC,CAACgB,EAAEA,EAAE,MAAM,CAAC,MAAM,MAAM3B,EAAE,GAAG,CAAC,CAAE,CAAC,OAAO0B,EAAE,IAAK,KAAK,GAAE,IAAIT,EAAES,EAAE,UAAUA,EAAE,MAAM,KAAKwF,GAAGjG,EAAE,EAAE,EAAES,EAAE,OAAO,KAAK,IAAIK,EAAE+hB,GAAGnjB,CAAC,EAAEqjB,GAAGrjB,EAAEoB,EAAEd,CAAC,EAAE,MAAM,IAAK,GAAE,IAAK,GAAE,IAAIa,EAAEJ,EAAE,UAAU,cAAcG,EAAEiiB,GAAGnjB,CAAC,EAAEojB,GAAGpjB,EAAEkB,EAAEC,CAAC,EAAE,MAAM,QAAQ,MAAM,MAAM9B,EAAE,GAAG,CAAC,CAAE,CAAC,OAAO4B,EAAE,CAACe,GAAEhC,EAAEA,EAAE,OAAOiB,CAAC,CAAC,CAACjB,EAAE,OAAO,EAAE,CAACK,EAAE,OAAOL,EAAE,OAAO,MAAM,CAAC,SAASikB,GAAGjkB,EAAEK,EAAEW,EAAE,CAACe,GAAE/B,EAAEkkB,GAAGlkB,CAAK,CAAC,CACvb,SAASkkB,GAAGlkB,EAAEK,EAAEW,EAAE,CAAC,QAAQD,GAAOf,EAAE,KAAK,KAAZ,EAAsB+B,KAAP,MAAU,CAAC,IAAIzB,EAAEyB,GAAEX,EAAEd,EAAE,MAAM,GAAQA,EAAE,MAAP,IAAYS,EAAE,CAAC,IAAII,EAASb,EAAE,gBAAT,MAAwBkiB,GAAG,GAAG,CAACrhB,EAAE,CAAC,IAAID,EAAEZ,EAAE,UAAUW,EAASC,IAAP,MAAiBA,EAAE,gBAAT,MAAwBY,GAAEZ,EAAEshB,GAAG,IAAIrjB,EAAE2C,GAAO,GAAL0gB,GAAGrhB,GAAMW,GAAEb,IAAI,CAAC9B,EAAE,IAAI4C,GAAEzB,EAASyB,KAAP,MAAUZ,EAAEY,GAAEd,EAAEE,EAAE,MAAWA,EAAE,MAAP,IAAmBA,EAAE,gBAAT,KAAuBgjB,GAAG7jB,CAAC,EAASW,IAAP,MAAUA,EAAE,OAAOE,EAAEY,GAAEd,GAAGkjB,GAAG7jB,CAAC,EAAE,KAAYc,IAAP,MAAUW,GAAEX,EAAE8iB,GAAG9iB,CAAK,EAAEA,EAAEA,EAAE,QAAQW,GAAEzB,EAAEkiB,GAAGthB,EAAEY,GAAE3C,CAAC,CAACilB,GAAGpkB,CAAK,CAAC,MAAWM,EAAE,aAAa,MAAcc,IAAP,MAAUA,EAAE,OAAOd,EAAEyB,GAAEX,GAAGgjB,GAAGpkB,CAAK,CAAC,CAAC,CACvc,SAASokB,GAAGpkB,EAAE,CAAC,KAAY+B,KAAP,MAAU,CAAC,IAAI1B,EAAE0B,GAAE,GAAQ1B,EAAE,MAAM,KAAM,CAAC,IAAIW,EAAEX,EAAE,UAAU,GAAG,CAAC,GAAQA,EAAE,MAAM,KAAM,OAAOA,EAAE,IAAK,KAAK,GAAE,IAAK,IAAG,IAAK,IAAGyB,IAAGihB,GAAG,EAAE1iB,CAAC,EAAE,MAAM,IAAK,GAAE,IAAIU,EAAEV,EAAE,UAAU,GAAGA,EAAE,MAAM,GAAG,CAACyB,GAAE,GAAUd,IAAP,KAASD,EAAE,kBAAmB,MAAK,CAAC,IAAIT,EAAED,EAAE,cAAcA,EAAE,KAAKW,EAAE,cAAc0X,GAAGrY,EAAE,KAAKW,EAAE,aAAa,EAAED,EAAE,mBAAmBT,EAAEU,EAAE,cAAcD,EAAE,mCAAmC,CAAC,CAAC,IAAIK,EAAEf,EAAE,YAAmBe,IAAP,MAAU8Y,GAAG7Z,EAAEe,EAAEL,CAAC,EAAE,MAAM,IAAK,GAAE,IAAII,EAAEd,EAAE,YAAY,GAAUc,IAAP,KAAS,CAAQ,GAAPH,EAAE,KAAeX,EAAE,QAAT,KAAe,OAAOA,EAAE,MAAM,IAAK,KAAK,GAAEW,EACjhBX,EAAE,MAAM,UAAU,MAAM,IAAK,GAAEW,EAAEX,EAAE,MAAM,SAAS,CAAC6Z,GAAG7Z,EAAEc,EAAEH,CAAC,CAAC,CAAC,MAAM,IAAK,GAAE,IAAIE,EAAEb,EAAE,UAAU,GAAUW,IAAP,MAAUX,EAAE,MAAM,EAAE,CAACW,EAAEE,EAAE,IAAID,EAAEZ,EAAE,cAAc,OAAOA,EAAE,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWY,EAAE,WAAWD,EAAE,MAAK,EAAG,MAAM,IAAK,MAAMC,EAAE,MAAMD,EAAE,IAAIC,EAAE,IAAI,CAAC,CAAC,MAAM,IAAK,GAAE,MAAM,IAAK,GAAE,MAAM,IAAK,IAAG,MAAM,IAAK,IAAG,GAAUZ,EAAE,gBAAT,KAAuB,CAAC,IAAIlB,EAAEkB,EAAE,UAAU,GAAUlB,IAAP,KAAS,CAAC,IAAIkC,EAAElC,EAAE,cAAc,GAAUkC,IAAP,KAAS,CAAC,IAAI/B,EAAE+B,EAAE,WAAkB/B,IAAP,MAAU8M,GAAG9M,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAK,IAAG,IAAK,IAAG,IAAK,IAAG,IAAK,IAAG,IAAK,IAAG,IAAK,IAAG,MAClgB,QAAQ,MAAM,MAAMD,EAAE,GAAG,CAAC,CAAE,CAACyC,IAAGzB,EAAE,MAAM,KAAK2iB,GAAG3iB,CAAC,CAAC,OAAOd,EAAE,CAACyC,GAAE3B,EAAEA,EAAE,OAAOd,CAAC,CAAC,CAAC,CAAC,GAAGc,IAAIL,EAAE,CAAC+B,GAAE,KAAK,KAAK,CAAa,GAAZf,EAAEX,EAAE,QAAkBW,IAAP,KAAS,CAACA,EAAE,OAAOX,EAAE,OAAO0B,GAAEf,EAAE,KAAK,CAACe,GAAE1B,EAAE,MAAM,CAAC,CAAC,SAAS2jB,GAAGhkB,EAAE,CAAC,KAAY+B,KAAP,MAAU,CAAC,IAAI1B,EAAE0B,GAAE,GAAG1B,IAAIL,EAAE,CAAC+B,GAAE,KAAK,KAAK,CAAC,IAAIf,EAAEX,EAAE,QAAQ,GAAUW,IAAP,KAAS,CAACA,EAAE,OAAOX,EAAE,OAAO0B,GAAEf,EAAE,KAAK,CAACe,GAAE1B,EAAE,MAAM,CAAC,CACvS,SAAS8jB,GAAGnkB,EAAE,CAAC,KAAY+B,KAAP,MAAU,CAAC,IAAI1B,EAAE0B,GAAE,GAAG,CAAC,OAAO1B,EAAE,IAAG,CAAE,IAAK,GAAE,IAAK,IAAG,IAAK,IAAG,IAAIW,EAAEX,EAAE,OAAO,GAAG,CAAC0iB,GAAG,EAAE1iB,CAAC,CAAC,OAAOY,EAAE,CAACe,GAAE3B,EAAEW,EAAEC,CAAC,CAAC,CAAC,MAAM,IAAK,GAAE,IAAIF,EAAEV,EAAE,UAAU,GAAgB,OAAOU,EAAE,mBAAtB,WAAwC,CAAC,IAAIT,EAAED,EAAE,OAAO,GAAG,CAACU,EAAE,kBAAmB,QAAOE,EAAE,CAACe,GAAE3B,EAAEC,EAAEW,CAAC,CAAC,CAAC,CAAC,IAAIG,EAAEf,EAAE,OAAO,GAAG,CAAC2iB,GAAG3iB,CAAC,CAAC,OAAOY,EAAE,CAACe,GAAE3B,EAAEe,EAAEH,CAAC,CAAC,CAAC,MAAM,IAAK,GAAE,IAAIE,EAAEd,EAAE,OAAO,GAAG,CAAC2iB,GAAG3iB,CAAC,CAAC,OAAOY,EAAE,CAACe,GAAE3B,EAAEc,EAAEF,CAAC,CAAC,CAAC,CAAC,OAAOA,EAAE,CAACe,GAAE3B,EAAEA,EAAE,OAAOY,CAAC,CAAC,CAAC,GAAGZ,IAAIL,EAAE,CAAC+B,GAAE,KAAK,KAAK,CAAC,IAAIb,EAAEb,EAAE,QAAQ,GAAUa,IAAP,KAAS,CAACA,EAAE,OAAOb,EAAE,OAAO0B,GAAEb,EAAE,KAAK,CAACa,GAAE1B,EAAE,MAAM,CAAC,CAC7d,IAAIgkB,GAAG,KAAK,KAAKC,GAAG5gB,GAAG,uBAAuB6gB,GAAG7gB,GAAG,kBAAkB8gB,GAAG9gB,GAAG,wBAAwB9C,GAAE,EAAEe,GAAE,KAAK8iB,GAAE,KAAKC,GAAE,EAAEhE,GAAG,EAAED,GAAG3K,GAAG,CAAC,EAAEjU,GAAE,EAAE8iB,GAAG,KAAK1K,GAAG,EAAE2K,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKhB,GAAG,EAAE1B,GAAG,IAAS2C,GAAG,KAAKxF,GAAG,GAAGC,GAAG,KAAKE,GAAG,KAAKsF,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,GAAGC,GAAG,EAAE,SAAS1kB,IAAG,CAAC,OAAYD,GAAE,EAAGX,GAAC,EAAQqlB,KAAL,GAAQA,GAAGA,GAAGrlB,IAAG,CAChU,SAASqa,GAAGta,EAAE,CAAC,OAAQA,EAAE,KAAK,EAAoBY,GAAE,GAAQ8jB,KAAJ,EAAaA,GAAE,CAACA,GAAYjM,GAAG,aAAV,MAAgC8M,KAAJ,IAASA,GAAGjb,GAAE,GAAIib,KAAGvlB,EAAEE,GAASF,IAAJ,IAAeA,EAAE,OAAO,MAAMA,EAAWA,IAAT,OAAW,GAAG4M,GAAG5M,EAAE,IAAI,GAASA,GAA7J,CAA8J,CAAC,SAASua,GAAGva,EAAEK,EAAEW,EAAED,EAAE,CAAC,GAAG,GAAGqkB,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK,MAAMhmB,EAAE,GAAG,CAAC,EAAEmL,GAAGxK,EAAEgB,EAAED,CAAC,GAAU,EAAAH,GAAE,IAAIZ,IAAI2B,MAAE3B,IAAI2B,KAAS,EAAAf,GAAE,KAAKgkB,IAAI5jB,GAAOa,KAAJ,GAAO2jB,GAAGxlB,EAAE0kB,EAAC,GAAGe,GAAGzlB,EAAEe,CAAC,EAAMC,IAAJ,GAAWJ,KAAJ,GAAY,EAAAP,EAAE,KAAK,KAAKgiB,GAAGpiB,GAAG,EAAC,IAAIyW,IAAII,GAAI,GAAC,CAC1Y,SAAS2O,GAAGzlB,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,aAAaoK,GAAGpK,EAAEK,CAAC,EAAE,IAAIU,EAAEmJ,GAAGlK,EAAEA,IAAI2B,GAAE+iB,GAAE,CAAC,EAAE,GAAO3jB,IAAJ,EAAaC,IAAP,MAAU+H,GAAG/H,CAAC,EAAEhB,EAAE,aAAa,KAAKA,EAAE,iBAAiB,UAAUK,EAAEU,EAAE,CAACA,EAAEf,EAAE,mBAAmBK,EAAE,CAAgB,GAATW,GAAN,MAAS+H,GAAG/H,CAAC,EAASX,IAAJ,EAAUL,EAAE,MAAN,EAAU6W,GAAG6O,GAAG,KAAK,KAAK1lB,CAAC,CAAC,EAAE4W,GAAG8O,GAAG,KAAK,KAAK1lB,CAAC,CAAC,EAAEkV,GAAG,UAAU,CAAM,EAAAtU,GAAE,IAAIkW,IAAI,CAAC,EAAE9V,EAAE,SAAS,CAAC,OAAO2J,GAAG5J,CAAC,EAAG,KAAK,GAAEC,EAAEmI,GAAG,MAAM,IAAK,GAAEnI,EAAEoI,GAAG,MAAM,IAAK,IAAGpI,EAAEqI,GAAG,MAAM,IAAK,WAAUrI,EAAEuI,GAAG,MAAM,QAAQvI,EAAEqI,EAAE,CAACrI,EAAE2kB,GAAG3kB,EAAE4kB,GAAG,KAAK,KAAK5lB,CAAC,CAAC,CAAC,CAACA,EAAE,iBAAiBK,EAAEL,EAAE,aAAagB,CAAC,CAAC,CAC7c,SAAS4kB,GAAG5lB,EAAEK,EAAE,CAAY,GAAXilB,GAAG,GAAGC,GAAG,EAAU3kB,GAAE,EAAG,MAAM,MAAMvB,EAAE,GAAG,CAAC,EAAE,IAAI2B,EAAEhB,EAAE,aAAa,GAAG6lB,GAAE,GAAI7lB,EAAE,eAAegB,EAAE,OAAO,KAAK,IAAID,EAAEmJ,GAAGlK,EAAEA,IAAI2B,GAAE+iB,GAAE,CAAC,EAAE,GAAO3jB,IAAJ,EAAM,OAAO,KAAK,GAAQA,EAAE,IAAUA,EAAEf,EAAE,cAAeK,EAAEA,EAAEylB,GAAG9lB,EAAEe,CAAC,MAAM,CAACV,EAAEU,EAAE,IAAIT,EAAEM,GAAEA,IAAG,EAAE,IAAIQ,EAAE2kB,GAAI,GAAIpkB,KAAI3B,GAAG0kB,KAAIrkB,KAAE2kB,GAAG,KAAK3C,GAAGpiB,KAAI,IAAI+lB,GAAGhmB,EAAEK,CAAC,GAAE,EAAG,IAAG,CAAC4lB,GAAE,EAAG,KAAK,OAAO/kB,EAAE,CAACglB,GAAGlmB,EAAEkB,CAAC,CAAC,OAAO,IAAG6X,GAAI,EAACuL,GAAG,QAAQljB,EAAER,GAAEN,EAASmkB,KAAP,KAASpkB,EAAE,GAAGsB,GAAE,KAAK+iB,GAAE,EAAErkB,EAAEwB,GAAE,CAAC,GAAOxB,IAAJ,EAAM,CAAyC,GAApCA,IAAJ,IAAQC,EAAE+J,GAAGrK,CAAC,EAAMM,IAAJ,IAAQS,EAAET,EAAED,EAAE8lB,GAAGnmB,EAAEM,CAAC,IAAWD,IAAJ,EAAM,MAAMW,EAAE2jB,GAAGqB,GAAGhmB,EAAE,CAAC,EAAEwlB,GAAGxlB,EAAEe,CAAC,EAAE0kB,GAAGzlB,EAAEC,GAAC,CAAE,EAAEe,EAAE,GAAOX,IAAJ,EAAMmlB,GAAGxlB,EAAEe,CAAC,MACjf,CAAuB,GAAtBT,EAAEN,EAAE,QAAQ,UAAkB,EAAAe,EAAE,KAAK,CAACqlB,GAAG9lB,CAAC,IAAID,EAAEylB,GAAG9lB,EAAEe,CAAC,EAAMV,IAAJ,IAAQe,EAAEiJ,GAAGrK,CAAC,EAAMoB,IAAJ,IAAQL,EAAEK,EAAEf,EAAE8lB,GAAGnmB,EAAEoB,CAAC,IAAQf,IAAJ,GAAO,MAAMW,EAAE2jB,GAAGqB,GAAGhmB,EAAE,CAAC,EAAEwlB,GAAGxlB,EAAEe,CAAC,EAAE0kB,GAAGzlB,EAAEC,GAAC,CAAE,EAAEe,EAAqC,OAAnChB,EAAE,aAAaM,EAAEN,EAAE,cAAce,EAASV,EAAC,CAAE,IAAK,GAAE,IAAK,GAAE,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAE,IAAK,GAAEgnB,GAAGrmB,EAAE+kB,GAAGC,EAAE,EAAE,MAAM,IAAK,GAAU,GAARQ,GAAGxlB,EAAEe,CAAC,GAAMA,EAAE,aAAaA,IAAIV,EAAE0jB,GAAG,IAAI9jB,GAAC,EAAG,GAAGI,GAAG,CAAC,GAAO6J,GAAGlK,EAAE,CAAC,IAAV,EAAY,MAAyB,GAAnBM,EAAEN,EAAE,gBAAmBM,EAAES,KAAKA,EAAE,CAACF,GAAC,EAAGb,EAAE,aAAaA,EAAE,eAAeM,EAAE,KAAK,CAACN,EAAE,cAAc+U,GAAGsR,GAAG,KAAK,KAAKrmB,EAAE+kB,GAAGC,EAAE,EAAE3kB,CAAC,EAAE,KAAK,CAACgmB,GAAGrmB,EAAE+kB,GAAGC,EAAE,EAAE,MAAM,IAAK,GAAU,GAARQ,GAAGxlB,EAAEe,CAAC,GAAMA,EAAE,WAChfA,EAAE,MAAqB,IAAfV,EAAEL,EAAE,WAAeM,EAAE,GAAG,EAAES,GAAG,CAAC,IAAII,EAAE,GAAGwI,GAAG5I,CAAC,EAAEK,EAAE,GAAGD,EAAEA,EAAEd,EAAEc,CAAC,EAAEA,EAAEb,IAAIA,EAAEa,GAAGJ,GAAG,CAACK,CAAC,CAAqG,GAApGL,EAAET,EAAES,EAAEd,GAAC,EAAGc,EAAEA,GAAG,IAAIA,EAAE,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKsjB,GAAGtjB,EAAE,IAAI,GAAGA,EAAK,GAAGA,EAAE,CAACf,EAAE,cAAc+U,GAAGsR,GAAG,KAAK,KAAKrmB,EAAE+kB,GAAGC,EAAE,EAAEjkB,CAAC,EAAE,KAAK,CAACslB,GAAGrmB,EAAE+kB,GAAGC,EAAE,EAAE,MAAM,IAAK,GAAEqB,GAAGrmB,EAAE+kB,GAAGC,EAAE,EAAE,MAAM,QAAQ,MAAM,MAAM3lB,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,OAAAomB,GAAGzlB,EAAEC,GAAC,CAAE,EAASD,EAAE,eAAegB,EAAE4kB,GAAG,KAAK,KAAK5lB,CAAC,EAAE,IAAI,CACrX,SAASmmB,GAAGnmB,EAAEK,EAAE,CAAC,IAAIW,EAAE8jB,GAAG,OAAA9kB,EAAE,QAAQ,cAAc,eAAegmB,GAAGhmB,EAAEK,CAAC,EAAE,OAAO,KAAKL,EAAE8lB,GAAG9lB,EAAEK,CAAC,EAAML,IAAJ,IAAQK,EAAE0kB,GAAGA,GAAG/jB,EAASX,IAAP,MAAU+hB,GAAG/hB,CAAC,GAAUL,CAAC,CAAC,SAASoiB,GAAGpiB,EAAE,CAAQ+kB,KAAP,KAAUA,GAAG/kB,EAAE+kB,GAAG,KAAK,MAAMA,GAAG/kB,CAAC,CAAC,CAC5L,SAASomB,GAAGpmB,EAAE,CAAC,QAAQK,EAAEL,IAAI,CAAC,GAAGK,EAAE,MAAM,MAAM,CAAC,IAAIW,EAAEX,EAAE,YAAY,GAAUW,IAAP,OAAWA,EAAEA,EAAE,OAAcA,IAAP,MAAU,QAAQD,EAAE,EAAEA,EAAEC,EAAE,OAAOD,IAAI,CAAC,IAAIT,EAAEU,EAAED,CAAC,EAAEK,EAAEd,EAAE,YAAYA,EAAEA,EAAE,MAAM,GAAG,CAAC,GAAG,CAACmR,GAAGrQ,EAAG,EAACd,CAAC,EAAE,MAAM,EAAE,MAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAW,GAAVU,EAAEX,EAAE,MAASA,EAAE,aAAa,OAAcW,IAAP,KAASA,EAAE,OAAOX,EAAEA,EAAEW,MAAM,CAAC,GAAGX,IAAIL,EAAE,MAAM,KAAYK,EAAE,UAAT,MAAkB,CAAC,GAAUA,EAAE,SAAT,MAAiBA,EAAE,SAASL,EAAE,MAAM,GAAGK,EAAEA,EAAE,MAAM,CAACA,EAAE,QAAQ,OAAOA,EAAE,OAAOA,EAAEA,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CACla,SAASmlB,GAAGxlB,EAAEK,EAAE,CAAqD,IAApDA,GAAG,CAACwkB,GAAGxkB,GAAG,CAACukB,GAAG5kB,EAAE,gBAAgBK,EAAEL,EAAE,aAAa,CAACK,EAAML,EAAEA,EAAE,gBAAgB,EAAEK,GAAG,CAAC,IAAIW,EAAE,GAAG2I,GAAGtJ,CAAC,EAAEU,EAAE,GAAGC,EAAEhB,EAAEgB,CAAC,EAAE,GAAGX,GAAG,CAACU,CAAC,CAAC,CAAC,SAAS2kB,GAAG1lB,EAAE,CAAC,GAAQY,GAAE,EAAG,MAAM,MAAMvB,EAAE,GAAG,CAAC,EAAEwmB,GAAI,EAAC,IAAIxlB,EAAE6J,GAAGlK,EAAE,CAAC,EAAE,GAAQ,EAAAK,EAAE,GAAG,OAAOolB,GAAGzlB,EAAEC,GAAG,GAAE,KAAK,IAAIe,EAAE8kB,GAAG9lB,EAAEK,CAAC,EAAE,GAAOL,EAAE,MAAN,GAAegB,IAAJ,EAAM,CAAC,IAAID,EAAEsJ,GAAGrK,CAAC,EAAMe,IAAJ,IAAQV,EAAEU,EAAEC,EAAEmlB,GAAGnmB,EAAEe,CAAC,EAAE,CAAC,GAAOC,IAAJ,EAAM,MAAMA,EAAE2jB,GAAGqB,GAAGhmB,EAAE,CAAC,EAAEwlB,GAAGxlB,EAAEK,CAAC,EAAEolB,GAAGzlB,EAAEC,GAAG,GAAEe,EAAE,GAAOA,IAAJ,EAAM,MAAM,MAAM3B,EAAE,GAAG,CAAC,EAAE,OAAAW,EAAE,aAAaA,EAAE,QAAQ,UAAUA,EAAE,cAAcK,EAAEgmB,GAAGrmB,EAAE+kB,GAAGC,EAAE,EAAES,GAAGzlB,EAAEC,GAAG,GAAS,IAAI,CACvd,SAASqmB,GAAGtmB,EAAEK,EAAE,CAAC,IAAIW,EAAEJ,GAAEA,IAAG,EAAE,GAAG,CAAC,OAAOZ,EAAEK,CAAC,CAAC,QAAC,CAAQO,GAAEI,EAAMJ,KAAJ,IAAQyhB,GAAGpiB,GAAG,EAAC,IAAIyW,IAAII,KAAK,CAAC,CAAC,SAASyP,GAAGvmB,EAAE,CAAQklB,KAAP,MAAeA,GAAG,MAAP,GAAiB,EAAAtkB,GAAE,IAAIilB,GAAI,EAAC,IAAIxlB,EAAEO,GAAEA,IAAG,EAAE,IAAII,EAAEwjB,GAAG,WAAWzjB,EAAEb,GAAE,GAAG,CAAC,GAAGskB,GAAG,WAAW,KAAKtkB,GAAE,EAAEF,EAAE,OAAOA,EAAG,SAAC,CAAQE,GAAEa,EAAEyjB,GAAG,WAAWxjB,EAAEJ,GAAEP,EAAO,EAAAO,GAAE,IAAIkW,GAAE,CAAE,CAAC,CAAC,SAASwL,IAAI,CAAC5B,GAAGD,GAAG,QAAQrgB,GAAEqgB,EAAE,CAAC,CAChT,SAASuF,GAAGhmB,EAAEK,EAAE,CAACL,EAAE,aAAa,KAAKA,EAAE,cAAc,EAAE,IAAIgB,EAAEhB,EAAE,cAAiD,GAA9BgB,IAAL,KAAShB,EAAE,cAAc,GAAGgV,GAAGhU,CAAC,GAAayjB,KAAP,KAAS,IAAIzjB,EAAEyjB,GAAE,OAAczjB,IAAP,MAAU,CAAC,IAAID,EAAEC,EAAQ,OAAN2W,GAAG5W,CAAC,EAASA,EAAE,IAAK,KAAK,GAAEA,EAAEA,EAAE,KAAK,kBAAyBA,GAAP,MAAsBqV,GAAE,EAAG,MAAM,IAAK,GAAEyF,GAAE,EAAGzb,GAAE4V,EAAE,EAAE5V,GAAEK,EAAC,EAAEyb,KAAK,MAAM,IAAK,GAAEH,GAAGhb,CAAC,EAAE,MAAM,IAAK,GAAE8a,GAAE,EAAG,MAAM,IAAK,IAAGzb,GAAEU,EAAC,EAAE,MAAM,IAAK,IAAGV,GAAEU,EAAC,EAAE,MAAM,IAAK,IAAGkY,GAAGjY,EAAE,KAAK,QAAQ,EAAE,MAAM,IAAK,IAAG,IAAK,IAAGuhB,GAAI,EAACthB,EAAEA,EAAE,MAAM,CAAqE,GAApEW,GAAE3B,EAAEykB,GAAEzkB,EAAEgb,GAAGhb,EAAE,QAAQ,IAAI,EAAE0kB,GAAEhE,GAAGrgB,EAAEwB,GAAE,EAAE8iB,GAAG,KAAKE,GAAGD,GAAG3K,GAAG,EAAE8K,GAAGD,GAAG,KAAezL,KAAP,KAAU,CAAC,IAAIhZ,EAC1f,EAAEA,EAAEgZ,GAAG,OAAOhZ,IAAI,GAAGW,EAAEqY,GAAGhZ,CAAC,EAAEU,EAAEC,EAAE,YAAmBD,IAAP,KAAS,CAACC,EAAE,YAAY,KAAK,IAAIV,EAAES,EAAE,KAAKK,EAAEJ,EAAE,QAAQ,GAAUI,IAAP,KAAS,CAAC,IAAID,EAAEC,EAAE,KAAKA,EAAE,KAAKd,EAAES,EAAE,KAAKI,CAAC,CAACH,EAAE,QAAQD,CAAC,CAACsY,GAAG,IAAI,CAAC,OAAOrZ,CAAC,CAC3K,SAASkmB,GAAGlmB,EAAEK,EAAE,CAAC,EAAE,CAAC,IAAIW,EAAEyjB,GAAE,GAAG,CAAoB,GAAnB1L,GAAE,EAAGoD,GAAG,QAAQY,GAAMT,GAAG,CAAC,QAAQvb,EAAEO,GAAE,cAAqBP,IAAP,MAAU,CAAC,IAAIT,EAAES,EAAE,MAAaT,IAAP,OAAWA,EAAE,QAAQ,MAAMS,EAAEA,EAAE,IAAI,CAACub,GAAG,EAAE,CAA4C,GAA3CD,GAAG,EAAE5a,GAAEF,GAAED,GAAE,KAAKib,GAAG,GAAGC,GAAG,EAAE+H,GAAG,QAAQ,KAAevjB,IAAP,MAAiBA,EAAE,SAAT,KAAgB,CAACa,GAAE,EAAE8iB,GAAGtkB,EAAEokB,GAAE,KAAK,KAAK,CAACzkB,EAAE,CAAC,IAAIoB,EAAEpB,EAAEmB,EAAEH,EAAE,OAAOE,EAAEF,EAAEC,EAAEZ,EAAqB,GAAnBA,EAAEqkB,GAAExjB,EAAE,OAAO,MAAgBD,IAAP,MAAqB,OAAOA,GAAlB,UAAkC,OAAOA,EAAE,MAAtB,WAA2B,CAAC,IAAI9B,EAAE8B,EAAEI,EAAEH,EAAE5B,EAAE+B,EAAE,IAAI,GAAQ,EAAAA,EAAE,KAAK,KAAS/B,IAAJ,GAAYA,IAAL,IAAaA,IAAL,IAAQ,CAAC,IAAIC,EAAE8B,EAAE,UAAU9B,GAAG8B,EAAE,YAAY9B,EAAE,YAAY8B,EAAE,cAAc9B,EAAE,cACxe8B,EAAE,MAAM9B,EAAE,QAAQ8B,EAAE,YAAY,KAAKA,EAAE,cAAc,KAAK,CAAC,IAAIxB,EAAEigB,GAAG3e,CAAC,EAAE,GAAUtB,IAAP,KAAS,CAACA,EAAE,OAAO,KAAKkgB,GAAGlgB,EAAEsB,EAAED,EAAEE,EAAEf,CAAC,EAAER,EAAE,KAAK,GAAG+f,GAAGxe,EAAEjC,EAAEkB,CAAC,EAAEA,EAAER,EAAEoB,EAAE9B,EAAE,IAAIC,EAAEiB,EAAE,YAAY,GAAUjB,IAAP,KAAS,CAAC,IAAII,EAAE,IAAI,IAAIA,EAAE,IAAIyB,CAAC,EAAEZ,EAAE,YAAYb,CAAC,MAAMJ,EAAE,IAAI6B,CAAC,EAAE,MAAMjB,CAAC,KAAK,CAAC,GAAQ,EAAAK,EAAE,GAAG,CAACuf,GAAGxe,EAAEjC,EAAEkB,CAAC,EAAEmhB,GAAE,EAAG,MAAMxhB,CAAC,CAACiB,EAAE,MAAM5B,EAAE,GAAG,CAAC,CAAC,CAAC,SAASqB,IAAGQ,EAAE,KAAK,EAAE,CAAC,IAAIP,EAAEmf,GAAG3e,CAAC,EAAE,GAAUR,IAAP,KAAS,CAAM,EAAAA,EAAE,MAAM,SAASA,EAAE,OAAO,KAAKof,GAAGpf,EAAEQ,EAAED,EAAEE,EAAEf,CAAC,EAAEmY,GAAG2G,GAAGle,EAAEC,CAAC,CAAC,EAAE,MAAMlB,CAAC,CAAC,CAACoB,EAAEH,EAAEke,GAAGle,EAAEC,CAAC,EAAMW,KAAJ,IAAQA,GAAE,GAAUijB,KAAP,KAAUA,GAAG,CAAC1jB,CAAC,EAAE0jB,GAAG,KAAK1jB,CAAC,EAAEA,EAAED,EAAE,EAAE,CAAC,OAAOC,EAAE,IAAK,KAAK,GAAEA,EAAE,OAAO,MACpff,GAAG,CAACA,EAAEe,EAAE,OAAOf,EAAE,IAAIT,EAAE2f,GAAGne,EAAEH,EAAEZ,CAAC,EAAE0Z,GAAG3Y,EAAExB,CAAC,EAAE,MAAMI,EAAE,IAAK,GAAEkB,EAAED,EAAE,IAAItB,EAAEyB,EAAE,KAAK3B,EAAE2B,EAAE,UAAU,GAAQ,EAAAA,EAAE,MAAM,OAAoB,OAAOzB,EAAE,0BAAtB,YAAuDF,IAAP,MAAuB,OAAOA,EAAE,mBAAtB,aAAiDkgB,KAAP,MAAW,CAACA,GAAG,IAAIlgB,CAAC,IAAI,CAAC2B,EAAE,OAAO,MAAMf,GAAG,CAACA,EAAEe,EAAE,OAAOf,EAAE,IAAIE,EAAEmf,GAAGte,EAAEF,EAAEb,CAAC,EAAE0Z,GAAG3Y,EAAEb,CAAC,EAAE,MAAMP,CAAC,CAAC,CAACoB,EAAEA,EAAE,MAAM,OAAcA,IAAP,KAAS,CAAColB,GAAGxlB,CAAC,CAAC,OAAOmT,EAAG,CAAC9T,EAAE8T,EAAGsQ,KAAIzjB,GAAUA,IAAP,OAAWyjB,GAAEzjB,EAAEA,EAAE,QAAQ,QAAQ,CAAC,KAAK,OAAO,GAAE,CAAC,SAAS+kB,IAAI,CAAC,IAAI/lB,EAAEskB,GAAG,QAAQ,OAAAA,GAAG,QAAQvH,GAAiB/c,IAAP,KAAS+c,GAAG/c,CAAC,CACrd,SAASwhB,IAAI,EAAQ3f,KAAJ,GAAWA,KAAJ,GAAWA,KAAJ,KAAMA,GAAE,GAASF,KAAP,MAAe,EAAAsY,GAAG,YAAiB,EAAA2K,GAAG,YAAYY,GAAG7jB,GAAE+iB,EAAC,CAAC,CAAC,SAASoB,GAAG9lB,EAAEK,EAAE,CAAC,IAAIW,EAAEJ,GAAEA,IAAG,EAAE,IAAIG,EAAEglB,GAAE,GAAMpkB,KAAI3B,GAAG0kB,KAAIrkB,KAAE2kB,GAAG,KAAKgB,GAAGhmB,EAAEK,CAAC,GAAE,EAAG,IAAG,CAAComB,GAAI,EAAC,KAAK,OAAOnmB,EAAE,CAAC4lB,GAAGlmB,EAAEM,CAAC,CAAC,OAAO,IAAyB,GAAtByY,GAAI,EAACnY,GAAEI,EAAEsjB,GAAG,QAAQvjB,EAAY0jB,KAAP,KAAS,MAAM,MAAMplB,EAAE,GAAG,CAAC,EAAE,OAAAsC,GAAE,KAAK+iB,GAAE,EAAS7iB,EAAC,CAAC,SAAS4kB,IAAI,CAAC,KAAYhC,KAAP,MAAUiC,GAAGjC,EAAC,CAAC,CAAC,SAASwB,IAAI,CAAC,KAAYxB,KAAP,MAAU,CAACzb,GAAI,GAAE0d,GAAGjC,EAAC,CAAC,CAAC,SAASiC,GAAG1mB,EAAE,CAAC,IAAIK,EAAEsmB,GAAG3mB,EAAE,UAAUA,EAAE0gB,EAAE,EAAE1gB,EAAE,cAAcA,EAAE,aAAoBK,IAAP,KAASmmB,GAAGxmB,CAAC,EAAEykB,GAAEpkB,EAAEkkB,GAAG,QAAQ,IAAI,CAC1d,SAASiC,GAAGxmB,EAAE,CAAC,IAAIK,EAAEL,EAAE,EAAE,CAAC,IAAIgB,EAAEX,EAAE,UAAqB,GAAXL,EAAEK,EAAE,OAAeA,EAAE,MAAM,MAAkD,CAAW,GAAVW,EAAEuhB,GAAGvhB,EAAEX,CAAC,EAAYW,IAAP,KAAS,CAACA,EAAE,OAAO,MAAMyjB,GAAEzjB,EAAE,MAAM,CAAC,GAAUhB,IAAP,KAASA,EAAE,OAAO,MAAMA,EAAE,aAAa,EAAEA,EAAE,UAAU,SAAS,CAAC6B,GAAE,EAAE4iB,GAAE,KAAK,MAAM,CAAC,SAA7KzjB,EAAEmhB,GAAGnhB,EAAEX,EAAEqgB,EAAE,EAAS1f,IAAP,KAAS,CAACyjB,GAAEzjB,EAAE,MAAM,CAAyJ,GAAZX,EAAEA,EAAE,QAAkBA,IAAP,KAAS,CAACokB,GAAEpkB,EAAE,MAAM,CAACokB,GAAEpkB,EAAEL,CAAC,OAAcK,IAAP,MAAcwB,KAAJ,IAAQA,GAAE,EAAE,CAAC,SAASwkB,GAAGrmB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEb,GAAEI,EAAEkkB,GAAG,WAAW,GAAG,CAACA,GAAG,WAAW,KAAKtkB,GAAE,EAAE0mB,GAAG5mB,EAAEK,EAAEW,EAAED,CAAC,CAAC,QAAC,CAAQyjB,GAAG,WAAWlkB,EAAEJ,GAAEa,CAAC,CAAC,OAAO,IAAI,CAChc,SAAS6lB,GAAG5mB,EAAEK,EAAEW,EAAED,EAAE,CAAC,GAAG8kB,GAAE,QAAgBX,KAAP,MAAW,GAAQtkB,GAAE,EAAG,MAAM,MAAMvB,EAAE,GAAG,CAAC,EAAE2B,EAAEhB,EAAE,aAAa,IAAIM,EAAEN,EAAE,cAAc,GAAUgB,IAAP,KAAS,OAAO,KAA2C,GAAtChB,EAAE,aAAa,KAAKA,EAAE,cAAc,EAAKgB,IAAIhB,EAAE,QAAQ,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAEW,EAAE,aAAa,KAAKA,EAAE,iBAAiB,EAAE,IAAIoB,EAAEJ,EAAE,MAAMA,EAAE,WAA8J,GAAnJyJ,GAAGzK,EAAEoB,CAAC,EAAEpB,IAAI2B,KAAI8iB,GAAE9iB,GAAE,KAAK+iB,GAAE,GAAQ,EAAA1jB,EAAE,aAAa,OAAY,EAAAA,EAAE,MAAM,OAAOikB,KAAKA,GAAG,GAAGU,GAAGtc,GAAG,UAAU,CAAC,OAAAwc,GAAE,EAAU,IAAI,CAAC,GAAGzkB,GAAOJ,EAAE,MAAM,SAAb,EAA4BA,EAAE,aAAa,OAAQI,EAAE,CAACA,EAAEojB,GAAG,WAAWA,GAAG,WAAW,KAChf,IAAIrjB,EAAEjB,GAAEA,GAAE,EAAE,IAAIgB,EAAEN,GAAEA,IAAG,EAAE2jB,GAAG,QAAQ,KAAK1B,GAAG7iB,EAAEgB,CAAC,EAAE6iB,GAAG7iB,EAAEhB,CAAC,EAAEgS,GAAG6C,EAAE,EAAEvI,GAAG,CAAC,CAACsI,GAAGC,GAAGD,GAAG,KAAK5U,EAAE,QAAQgB,EAAEijB,GAAGjjB,CAAK,EAAEiI,GAAI,EAACrI,GAAEM,EAAEhB,GAAEiB,EAAEqjB,GAAG,WAAWpjB,CAAC,MAAMpB,EAAE,QAAQgB,EAAsF,GAApFikB,KAAKA,GAAG,GAAGC,GAAGllB,EAAEmlB,GAAG7kB,GAAGc,EAAEpB,EAAE,aAAiBoB,IAAJ,IAAQue,GAAG,MAAMjW,GAAG1I,EAAE,SAAW,EAAEykB,GAAGzlB,EAAEC,GAAG,GAAYI,IAAP,KAAS,IAAIU,EAAEf,EAAE,mBAAmBgB,EAAE,EAAEA,EAAEX,EAAE,OAAOW,IAAIV,EAAED,EAAEW,CAAC,EAAED,EAAET,EAAE,MAAM,CAAC,eAAeA,EAAE,MAAM,OAAOA,EAAE,MAAM,CAAC,EAAE,GAAGkf,GAAG,MAAMA,GAAG,GAAGxf,EAAEyf,GAAGA,GAAG,KAAKzf,EAAE,OAAKmlB,GAAG,GAAQnlB,EAAE,MAAN,GAAW6lB,GAAE,EAAGzkB,EAAEpB,EAAE,aAAkBoB,EAAE,EAAGpB,IAAIqlB,GAAGD,MAAMA,GAAG,EAAEC,GAAGrlB,GAAGolB,GAAG,EAAEtO,GAAE,EAAU,IAAI,CACre,SAAS+O,IAAI,CAAC,GAAUX,KAAP,KAAU,CAAC,IAAIllB,EAAE2K,GAAGwa,EAAE,EAAE9kB,EAAEmkB,GAAG,WAAWxjB,EAAEd,GAAE,GAAG,CAAgC,GAA/BskB,GAAG,WAAW,KAAKtkB,GAAE,GAAGF,EAAE,GAAGA,EAAYklB,KAAP,KAAU,IAAInkB,EAAE,OAAO,CAAmB,GAAlBf,EAAEklB,GAAGA,GAAG,KAAKC,GAAG,EAAUvkB,GAAE,EAAG,MAAM,MAAMvB,EAAE,GAAG,CAAC,EAAE,IAAIiB,EAAEM,GAAO,IAALA,IAAG,EAAMmB,GAAE/B,EAAE,QAAe+B,KAAP,MAAU,CAAC,IAAIX,EAAEW,GAAEZ,EAAEC,EAAE,MAAM,GAAQW,GAAE,MAAM,GAAI,CAAC,IAAIb,EAAEE,EAAE,UAAU,GAAUF,IAAP,KAAS,CAAC,QAAQD,EAAE,EAAEA,EAAEC,EAAE,OAAOD,IAAI,CAAC,IAAI9B,EAAE+B,EAAED,CAAC,EAAE,IAAIc,GAAE5C,EAAS4C,KAAP,MAAU,CAAC,IAAIV,EAAEU,GAAE,OAAOV,EAAE,IAAK,KAAK,GAAE,IAAK,IAAG,IAAK,IAAGyhB,GAAG,EAAEzhB,EAAED,CAAC,CAAC,CAAC,IAAI9B,EAAE+B,EAAE,MAAM,GAAU/B,IAAP,KAASA,EAAE,OAAO+B,EAAEU,GAAEzC,MAAO,MAAYyC,KAAP,MAAU,CAACV,EAAEU,GAAE,IAAIxC,EAAE8B,EAAE,QAAQxB,EAAEwB,EAAE,OAAa,GAAN4hB,GAAG5hB,CAAC,EAAKA,IACnflC,EAAE,CAAC4C,GAAE,KAAK,KAAK,CAAC,GAAUxC,IAAP,KAAS,CAACA,EAAE,OAAOM,EAAEkC,GAAExC,EAAE,KAAK,CAACwC,GAAElC,CAAC,CAAC,CAAC,CAAC,IAAIT,EAAEgC,EAAE,UAAU,GAAUhC,IAAP,KAAS,CAAC,IAAII,EAAEJ,EAAE,MAAM,GAAUI,IAAP,KAAS,CAACJ,EAAE,MAAM,KAAK,EAAE,CAAC,IAAIuB,EAAEnB,EAAE,QAAQA,EAAE,QAAQ,KAAKA,EAAEmB,CAAC,OAAcnB,IAAP,KAAS,CAAC,CAACuC,GAAEX,CAAC,CAAC,CAAC,GAAQA,EAAE,aAAa,MAAcD,IAAP,KAASA,EAAE,OAAOC,EAAEW,GAAEZ,OAAOd,EAAE,KAAY0B,KAAP,MAAU,CAAK,GAAJX,EAAEW,GAAUX,EAAE,MAAM,KAAM,OAAOA,EAAE,IAAK,KAAK,GAAE,IAAK,IAAG,IAAK,IAAG0hB,GAAG,EAAE1hB,EAAEA,EAAE,MAAM,CAAC,CAAC,IAAIxB,EAAEwB,EAAE,QAAQ,GAAUxB,IAAP,KAAS,CAACA,EAAE,OAAOwB,EAAE,OAAOW,GAAEnC,EAAE,MAAMS,CAAC,CAAC0B,GAAEX,EAAE,MAAM,CAAC,CAAC,IAAIzB,EAAEK,EAAE,QAAQ,IAAI+B,GAAEpC,EAASoC,KAAP,MAAU,CAACZ,EAAEY,GAAE,IAAItC,EAAE0B,EAAE,MAAM,GAAQA,EAAE,aAAa,MAC3e1B,IADkf,KAChfA,EAAE,OAAO0B,EAAEY,GAAEtC,OAAOY,EAAE,IAAIc,EAAExB,EAASoC,KAAP,MAAU,CAAK,GAAJb,EAAEa,GAAUb,EAAE,MAAM,KAAM,GAAG,CAAC,OAAOA,EAAE,IAAG,CAAE,IAAK,GAAE,IAAK,IAAG,IAAK,IAAG6hB,GAAG,EAAE7hB,CAAC,CAAC,CAAC,OAAOiT,EAAG,CAACnS,GAAEd,EAAEA,EAAE,OAAOiT,CAAE,CAAC,CAAC,GAAGjT,IAAIC,EAAE,CAACY,GAAE,KAAK,MAAM1B,CAAC,CAAC,IAAIE,EAAEW,EAAE,QAAQ,GAAUX,IAAP,KAAS,CAACA,EAAE,OAAOW,EAAE,OAAOa,GAAExB,EAAE,MAAMF,CAAC,CAAC0B,GAAEb,EAAE,MAAM,CAAC,CAAU,GAATN,GAAEN,EAAEwW,GAAE,EAAMrN,IAAiB,OAAOA,GAAG,uBAAvB,WAA6C,GAAG,CAACA,GAAG,sBAAsBD,GAAGxJ,CAAC,CAAC,MAAU,EAAEe,EAAE,EAAE,CAAC,OAAOA,CAAC,QAAC,CAAQb,GAAEc,EAAEwjB,GAAG,WAAWnkB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,SAASwmB,GAAG7mB,EAAEK,EAAEW,EAAE,CAACX,EAAE8e,GAAGne,EAAEX,CAAC,EAAEA,EAAEkf,GAAGvf,EAAEK,EAAE,CAAC,EAAEL,EAAE6Z,GAAG7Z,EAAEK,EAAE,CAAC,EAAEA,EAAEQ,GAAG,EAAQb,IAAP,OAAWwK,GAAGxK,EAAE,EAAEK,CAAC,EAAEolB,GAAGzlB,EAAEK,CAAC,EAAE,CACze,SAAS2B,GAAEhC,EAAEK,EAAEW,EAAE,CAAC,GAAOhB,EAAE,MAAN,EAAU6mB,GAAG7mB,EAAEA,EAAEgB,CAAC,MAAO,MAAYX,IAAP,MAAU,CAAC,GAAOA,EAAE,MAAN,EAAU,CAACwmB,GAAGxmB,EAAEL,EAAEgB,CAAC,EAAE,KAAK,SAAaX,EAAE,MAAN,EAAU,CAAC,IAAIU,EAAEV,EAAE,UAAU,GAAgB,OAAOA,EAAE,KAAK,0BAA3B,YAAkE,OAAOU,EAAE,mBAAtB,aAAiD4e,KAAP,MAAW,CAACA,GAAG,IAAI5e,CAAC,GAAG,CAACf,EAAEmf,GAAGne,EAAEhB,CAAC,EAAEA,EAAE0f,GAAGrf,EAAEL,EAAE,CAAC,EAAEK,EAAEwZ,GAAGxZ,EAAEL,EAAE,CAAC,EAAEA,EAAEa,GAAG,EAAQR,IAAP,OAAWmK,GAAGnK,EAAE,EAAEL,CAAC,EAAEylB,GAAGplB,EAAEL,CAAC,GAAG,KAAK,CAAC,CAACK,EAAEA,EAAE,MAAM,CAAC,CACnV,SAASwf,GAAG7f,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAEf,EAAE,UAAiBe,IAAP,MAAUA,EAAE,OAAOV,CAAC,EAAEA,EAAEQ,KAAIb,EAAE,aAAaA,EAAE,eAAegB,EAAEW,KAAI3B,IAAI0kB,GAAE1jB,KAAKA,IAAQa,KAAJ,GAAWA,KAAJ,IAAQ6iB,GAAE,aAAaA,IAAG,IAAIzkB,KAAI8jB,GAAGiC,GAAGhmB,EAAE,CAAC,EAAE6kB,IAAI7jB,GAAGykB,GAAGzlB,EAAEK,CAAC,CAAC,CAAC,SAASymB,GAAG9mB,EAAEK,EAAE,CAAKA,IAAJ,IAAaL,EAAE,KAAK,GAAQK,EAAE2J,GAAGA,KAAK,EAAO,EAAAA,GAAG,aAAaA,GAAG,UAAzC3J,EAAE,GAAkD,IAAIW,EAAEH,KAAIb,EAAEwZ,GAAGxZ,EAAEK,CAAC,EAASL,IAAP,OAAWwK,GAAGxK,EAAEK,EAAEW,CAAC,EAAEykB,GAAGzlB,EAAEgB,CAAC,EAAE,CAAC,SAASygB,GAAGzhB,EAAE,CAAC,IAAIK,EAAEL,EAAE,cAAcgB,EAAE,EAASX,IAAP,OAAWW,EAAEX,EAAE,WAAWymB,GAAG9mB,EAAEgB,CAAC,CAAC,CACjZ,SAAS2iB,GAAG3jB,EAAEK,EAAE,CAAC,IAAIW,EAAE,EAAE,OAAOhB,EAAE,IAAG,CAAE,IAAK,IAAG,IAAIe,EAAEf,EAAE,UAAcM,EAAEN,EAAE,cAAqBM,IAAP,OAAWU,EAAEV,EAAE,WAAW,MAAM,IAAK,IAAGS,EAAEf,EAAE,UAAU,MAAM,QAAQ,MAAM,MAAMX,EAAE,GAAG,CAAC,CAAE,CAAQ0B,IAAP,MAAUA,EAAE,OAAOV,CAAC,EAAEymB,GAAG9mB,EAAEgB,CAAC,CAAC,CAAC,IAAI2lB,GAClNA,GAAG,SAAS3mB,EAAEK,EAAEW,EAAE,CAAC,GAAUhB,IAAP,KAAS,GAAGA,EAAE,gBAAgBK,EAAE,cAAc2V,GAAG,QAAQmD,GAAG,OAAO,CAAC,GAAQ,EAAAnZ,EAAE,MAAMgB,IAAS,EAAAX,EAAE,MAAM,KAAK,OAAO8Y,GAAG,GAAG0I,GAAG7hB,EAAEK,EAAEW,CAAC,EAAEmY,GAAQ,GAAAnZ,EAAE,MAAM,OAAa,MAAMmZ,GAAG,GAAGzY,IAAQL,EAAE,MAAM,SAAUoX,GAAGpX,EAAE6W,GAAG7W,EAAE,KAAK,EAAY,OAAVA,EAAE,MAAM,EAASA,EAAE,KAAK,IAAK,GAAE,IAAIU,EAAEV,EAAE,KAAKwgB,GAAG7gB,EAAEK,CAAC,EAAEL,EAAEK,EAAE,aAAa,IAAIC,EAAE4V,GAAG7V,EAAEI,GAAE,OAAO,EAAEyY,GAAG7Y,EAAEW,CAAC,EAAEV,EAAEqc,GAAG,KAAKtc,EAAEU,EAAEf,EAAEM,EAAEU,CAAC,EAAE,IAAII,EAAE4b,GAAI,EAAC,OAAA3c,EAAE,OAAO,EAAa,OAAOC,GAAlB,UAA4BA,IAAP,MAAuB,OAAOA,EAAE,QAAtB,YAAuCA,EAAE,WAAX,QAAqBD,EAAE,IAAI,EAAEA,EAAE,cAAc,KAAKA,EAAE,YAC1e,KAAK8V,GAAGpV,CAAC,GAAGK,EAAE,GAAGmV,GAAGlW,CAAC,GAAGe,EAAE,GAAGf,EAAE,cAAqBC,EAAE,QAAT,MAAyBA,EAAE,QAAX,OAAiBA,EAAE,MAAM,KAAKoZ,GAAGrZ,CAAC,EAAEC,EAAE,QAAQ+Z,GAAGha,EAAE,UAAUC,EAAEA,EAAE,gBAAgBD,EAAEsa,GAAGta,EAAEU,EAAEf,EAAEgB,CAAC,EAAEX,EAAEygB,GAAG,KAAKzgB,EAAEU,EAAE,GAAGK,EAAEJ,CAAC,IAAIX,EAAE,IAAI,EAAEK,IAAGU,GAAGsW,GAAGrX,CAAC,EAAE4f,GAAG,KAAK5f,EAAEC,EAAEU,CAAC,EAAEX,EAAEA,EAAE,OAAcA,EAAE,IAAK,IAAGU,EAAEV,EAAE,YAAYL,EAAE,CAAqF,OAApF6gB,GAAG7gB,EAAEK,CAAC,EAAEL,EAAEK,EAAE,aAAaC,EAAES,EAAE,MAAMA,EAAET,EAAES,EAAE,QAAQ,EAAEV,EAAE,KAAKU,EAAET,EAAED,EAAE,IAAI0mB,GAAGhmB,CAAC,EAAEf,EAAE0Y,GAAG3X,EAAEf,CAAC,EAASM,EAAC,CAAE,IAAK,GAAED,EAAEkgB,GAAG,KAAKlgB,EAAEU,EAAEf,EAAEgB,CAAC,EAAE,MAAMhB,EAAE,IAAK,GAAEK,EAAEugB,GAAG,KAAKvgB,EAAEU,EAAEf,EAAEgB,CAAC,EAAE,MAAMhB,EAAE,IAAK,IAAGK,EAAE6f,GAAG,KAAK7f,EAAEU,EAAEf,EAAEgB,CAAC,EAAE,MAAMhB,EAAE,IAAK,IAAGK,EAAE+f,GAAG,KAAK/f,EAAEU,EAAE2X,GAAG3X,EAAE,KAAKf,CAAC,EAAEgB,CAAC,EAAE,MAAMhB,CAAC,CAAC,MAAM,MAAMX,EAAE,IACvgB0B,EAAE,EAAE,CAAC,CAAE,CAAC,OAAOV,EAAE,IAAK,GAAE,OAAOU,EAAEV,EAAE,KAAKC,EAAED,EAAE,aAAaC,EAAED,EAAE,cAAcU,EAAET,EAAEoY,GAAG3X,EAAET,CAAC,EAAEigB,GAAGvgB,EAAEK,EAAEU,EAAET,EAAEU,CAAC,EAAE,IAAK,GAAE,OAAOD,EAAEV,EAAE,KAAKC,EAAED,EAAE,aAAaC,EAAED,EAAE,cAAcU,EAAET,EAAEoY,GAAG3X,EAAET,CAAC,EAAEsgB,GAAG5gB,EAAEK,EAAEU,EAAET,EAAEU,CAAC,EAAE,IAAK,GAAEhB,EAAE,CAAO,GAAN+gB,GAAG1gB,CAAC,EAAYL,IAAP,KAAS,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAE0B,EAAEV,EAAE,aAAae,EAAEf,EAAE,cAAcC,EAAEc,EAAE,QAAQuY,GAAG3Z,EAAEK,CAAC,EAAE2Z,GAAG3Z,EAAEU,EAAE,KAAKC,CAAC,EAAE,IAAIG,EAAEd,EAAE,cAA0B,GAAZU,EAAEI,EAAE,QAAWC,EAAE,aAAa,GAAGA,EAAE,CAAC,QAAQL,EAAE,aAAa,GAAG,MAAMI,EAAE,MAAM,0BAA0BA,EAAE,0BAA0B,YAAYA,EAAE,WAAW,EAAEd,EAAE,YAAY,UAChfe,EAAEf,EAAE,cAAce,EAAEf,EAAE,MAAM,IAAI,CAACC,EAAE6e,GAAG,MAAM9f,EAAE,GAAG,CAAC,EAAEgB,CAAC,EAAEA,EAAE2gB,GAAGhhB,EAAEK,EAAEU,EAAEC,EAAEV,CAAC,EAAE,MAAMN,CAAC,SAASe,IAAIT,EAAE,CAACA,EAAE6e,GAAG,MAAM9f,EAAE,GAAG,CAAC,EAAEgB,CAAC,EAAEA,EAAE2gB,GAAGhhB,EAAEK,EAAEU,EAAEC,EAAEV,CAAC,EAAE,MAAMN,CAAC,KAAM,KAAI6X,GAAGxC,GAAGhV,EAAE,UAAU,cAAc,UAAU,EAAEuX,GAAGvX,EAAEK,GAAE,GAAGoX,GAAG,KAAK9W,EAAEsa,GAAGjb,EAAE,KAAKU,EAAEC,CAAC,EAAEX,EAAE,MAAMW,EAAEA,GAAGA,EAAE,MAAMA,EAAE,MAAM,GAAG,KAAKA,EAAEA,EAAE,YAAY,CAAM,GAALuX,GAAI,EAAIxX,IAAIT,EAAE,CAACD,EAAE8f,GAAGngB,EAAEK,EAAEW,CAAC,EAAE,MAAMhB,CAAC,CAACigB,GAAGjgB,EAAEK,EAAEU,EAAEC,CAAC,CAAC,CAACX,EAAEA,EAAE,KAAK,CAAC,OAAOA,EAAE,IAAK,GAAE,OAAOyb,GAAGzb,CAAC,EAASL,IAAP,MAAUmY,GAAG9X,CAAC,EAAEU,EAAEV,EAAE,KAAKC,EAAED,EAAE,aAAae,EAASpB,IAAP,KAASA,EAAE,cAAc,KAAKmB,EAAEb,EAAE,SAASwU,GAAG/T,EAAET,CAAC,EAAEa,EAAE,KAAYC,IAAP,MAAU0T,GAAG/T,EAAEK,CAAC,IAAIf,EAAE,OAAO,IACnfsgB,GAAG3gB,EAAEK,CAAC,EAAE4f,GAAGjgB,EAAEK,EAAEc,EAAEH,CAAC,EAAEX,EAAE,MAAM,IAAK,GAAE,OAAcL,IAAP,MAAUmY,GAAG9X,CAAC,EAAE,KAAK,IAAK,IAAG,OAAO8gB,GAAGnhB,EAAEK,EAAEW,CAAC,EAAE,IAAK,GAAE,OAAO4a,GAAGvb,EAAEA,EAAE,UAAU,aAAa,EAAEU,EAAEV,EAAE,aAAoBL,IAAP,KAASK,EAAE,MAAMgb,GAAGhb,EAAE,KAAKU,EAAEC,CAAC,EAAEif,GAAGjgB,EAAEK,EAAEU,EAAEC,CAAC,EAAEX,EAAE,MAAM,IAAK,IAAG,OAAOU,EAAEV,EAAE,KAAKC,EAAED,EAAE,aAAaC,EAAED,EAAE,cAAcU,EAAET,EAAEoY,GAAG3X,EAAET,CAAC,EAAE4f,GAAGlgB,EAAEK,EAAEU,EAAET,EAAEU,CAAC,EAAE,IAAK,GAAE,OAAOif,GAAGjgB,EAAEK,EAAEA,EAAE,aAAaW,CAAC,EAAEX,EAAE,MAAM,IAAK,GAAE,OAAO4f,GAAGjgB,EAAEK,EAAEA,EAAE,aAAa,SAASW,CAAC,EAAEX,EAAE,MAAM,IAAK,IAAG,OAAO4f,GAAGjgB,EAAEK,EAAEA,EAAE,aAAa,SAASW,CAAC,EAAEX,EAAE,MAAM,IAAK,IAAGL,EAAE,CACxZ,GADyZe,EAAEV,EAAE,KAAK,SAASC,EAAED,EAAE,aAAae,EAAEf,EAAE,cAClfc,EAAEb,EAAE,MAAME,GAAEmY,GAAG5X,EAAE,aAAa,EAAEA,EAAE,cAAcI,EAAYC,IAAP,KAAS,GAAGqQ,GAAGrQ,EAAE,MAAMD,CAAC,GAAG,GAAGC,EAAE,WAAWd,EAAE,UAAU,CAAC0V,GAAG,QAAQ,CAAC3V,EAAE8f,GAAGngB,EAAEK,EAAEW,CAAC,EAAE,MAAMhB,CAAC,MAAO,KAAIoB,EAAEf,EAAE,MAAae,IAAP,OAAWA,EAAE,OAAOf,GAAUe,IAAP,MAAU,CAAC,IAAIF,EAAEE,EAAE,aAAa,GAAUF,IAAP,KAAS,CAACC,EAAEC,EAAE,MAAM,QAAQH,EAAEC,EAAE,aAAoBD,IAAP,MAAU,CAAC,GAAGA,EAAE,UAAUF,EAAE,CAAC,GAAOK,EAAE,MAAN,EAAU,CAACH,EAAE2Y,GAAG,GAAG5Y,EAAE,CAACA,CAAC,EAAEC,EAAE,IAAI,EAAE,IAAI9B,EAAEiC,EAAE,YAAY,GAAUjC,IAAP,KAAS,CAACA,EAAEA,EAAE,OAAO,IAAIkC,EAAElC,EAAE,QAAekC,IAAP,KAASJ,EAAE,KAAKA,GAAGA,EAAE,KAAKI,EAAE,KAAKA,EAAE,KAAKJ,GAAG9B,EAAE,QAAQ8B,CAAC,CAAC,CAACG,EAAE,OAAOJ,EAAEC,EAAEG,EAAE,UAAiBH,IAAP,OAAWA,EAAE,OAAOD,GAAGiY,GAAG7X,EAAE,OAClfJ,EAAEX,CAAC,EAAEa,EAAE,OAAOF,EAAE,KAAK,CAACC,EAAEA,EAAE,IAAI,CAAC,SAAcG,EAAE,MAAP,GAAWD,EAAEC,EAAE,OAAOf,EAAE,KAAK,KAAKe,EAAE,cAAmBA,EAAE,MAAP,GAAW,CAAY,GAAXD,EAAEC,EAAE,OAAiBD,IAAP,KAAS,MAAM,MAAM9B,EAAE,GAAG,CAAC,EAAE8B,EAAE,OAAOH,EAAEE,EAAEC,EAAE,UAAiBD,IAAP,OAAWA,EAAE,OAAOF,GAAGiY,GAAG9X,EAAEH,EAAEX,CAAC,EAAEc,EAAEC,EAAE,OAAO,MAAMD,EAAEC,EAAE,MAAM,GAAUD,IAAP,KAASA,EAAE,OAAOC,MAAO,KAAID,EAAEC,EAASD,IAAP,MAAU,CAAC,GAAGA,IAAId,EAAE,CAACc,EAAE,KAAK,KAAK,CAAa,GAAZC,EAAED,EAAE,QAAkBC,IAAP,KAAS,CAACA,EAAE,OAAOD,EAAE,OAAOA,EAAEC,EAAE,KAAK,CAACD,EAAEA,EAAE,MAAM,CAACC,EAAED,CAAC,CAAC8e,GAAGjgB,EAAEK,EAAEC,EAAE,SAASU,CAAC,EAAEX,EAAEA,EAAE,KAAK,CAAC,OAAOA,EAAE,IAAK,GAAE,OAAOC,EAAED,EAAE,KAAKU,EAAEV,EAAE,aAAa,SAAS6Y,GAAG7Y,EAAEW,CAAC,EAAEV,EAAE8Y,GAAG9Y,CAAC,EAAES,EAAEA,EAAET,CAAC,EAAED,EAAE,OAAO,EAAE4f,GAAGjgB,EAAEK,EAAEU,EAAEC,CAAC,EACrfX,EAAE,MAAM,IAAK,IAAG,OAAOU,EAAEV,EAAE,KAAKC,EAAEoY,GAAG3X,EAAEV,EAAE,YAAY,EAAEC,EAAEoY,GAAG3X,EAAE,KAAKT,CAAC,EAAE8f,GAAGpgB,EAAEK,EAAEU,EAAET,EAAEU,CAAC,EAAE,IAAK,IAAG,OAAOsf,GAAGtgB,EAAEK,EAAEA,EAAE,KAAKA,EAAE,aAAaW,CAAC,EAAE,IAAK,IAAG,OAAOD,EAAEV,EAAE,KAAKC,EAAED,EAAE,aAAaC,EAAED,EAAE,cAAcU,EAAET,EAAEoY,GAAG3X,EAAET,CAAC,EAAEugB,GAAG7gB,EAAEK,CAAC,EAAEA,EAAE,IAAI,EAAE8V,GAAGpV,CAAC,GAAGf,EAAE,GAAGuW,GAAGlW,CAAC,GAAGL,EAAE,GAAGkZ,GAAG7Y,EAAEW,CAAC,EAAEyZ,GAAGpa,EAAEU,EAAET,CAAC,EAAEqa,GAAGta,EAAEU,EAAET,EAAEU,CAAC,EAAE8f,GAAG,KAAKzgB,EAAEU,EAAE,GAAGf,EAAEgB,CAAC,EAAE,IAAK,IAAG,OAAO4gB,GAAG5hB,EAAEK,EAAEW,CAAC,EAAE,IAAK,IAAG,OAAOwf,GAAGxgB,EAAEK,EAAEW,CAAC,CAAC,CAAC,MAAM,MAAM3B,EAAE,IAAIgB,EAAE,GAAG,CAAC,CAAE,EAAE,SAASslB,GAAG3lB,EAAEK,EAAE,CAAC,OAAOyI,GAAG9I,EAAEK,CAAC,CAAC,CACjZ,SAAS2mB,GAAGhnB,EAAEK,EAAEW,EAAED,EAAE,CAAC,KAAK,IAAIf,EAAE,KAAK,IAAIgB,EAAE,KAAK,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,UAAU,KAAK,KAAK,KAAK,YAAY,KAAK,KAAK,MAAM,EAAE,KAAK,IAAI,KAAK,KAAK,aAAaX,EAAE,KAAK,aAAa,KAAK,cAAc,KAAK,YAAY,KAAK,cAAc,KAAK,KAAK,KAAKU,EAAE,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,UAAU,KAAK,KAAK,WAAW,KAAK,MAAM,EAAE,KAAK,UAAU,IAAI,CAAC,SAASiX,GAAGhY,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAO,IAAIimB,GAAGhnB,EAAEK,EAAEW,EAAED,CAAC,CAAC,CAAC,SAASsf,GAAGrgB,EAAE,CAAC,OAAAA,EAAEA,EAAE,UAAgB,EAAE,CAACA,GAAG,CAACA,EAAE,iBAAiB,CACpd,SAAS+mB,GAAG/mB,EAAE,CAAC,GAAgB,OAAOA,GAApB,WAAsB,OAAOqgB,GAAGrgB,CAAC,EAAE,EAAE,EAAE,GAAsBA,GAAP,KAAS,CAAc,GAAbA,EAAEA,EAAE,SAAYA,IAAIkE,GAAG,MAAO,IAAG,GAAGlE,IAAIqE,GAAG,MAAO,GAAE,CAAC,MAAO,EAAC,CAC/I,SAAS2W,GAAGhb,EAAEK,EAAE,CAAC,IAAIW,EAAEhB,EAAE,UAAU,OAAOgB,IAAP,MAAUA,EAAEgX,GAAGhY,EAAE,IAAIK,EAAEL,EAAE,IAAIA,EAAE,IAAI,EAAEgB,EAAE,YAAYhB,EAAE,YAAYgB,EAAE,KAAKhB,EAAE,KAAKgB,EAAE,UAAUhB,EAAE,UAAUgB,EAAE,UAAUhB,EAAEA,EAAE,UAAUgB,IAAIA,EAAE,aAAaX,EAAEW,EAAE,KAAKhB,EAAE,KAAKgB,EAAE,MAAM,EAAEA,EAAE,aAAa,EAAEA,EAAE,UAAU,MAAMA,EAAE,MAAMhB,EAAE,MAAM,SAASgB,EAAE,WAAWhB,EAAE,WAAWgB,EAAE,MAAMhB,EAAE,MAAMgB,EAAE,MAAMhB,EAAE,MAAMgB,EAAE,cAAchB,EAAE,cAAcgB,EAAE,cAAchB,EAAE,cAAcgB,EAAE,YAAYhB,EAAE,YAAYK,EAAEL,EAAE,aAAagB,EAAE,aAAoBX,IAAP,KAAS,KAAK,CAAC,MAAMA,EAAE,MAAM,aAAaA,EAAE,YAAY,EAC3fW,EAAE,QAAQhB,EAAE,QAAQgB,EAAE,MAAMhB,EAAE,MAAMgB,EAAE,IAAIhB,EAAE,IAAWgB,CAAC,CACxD,SAASka,GAAGlb,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAE,CAAC,IAAID,EAAE,EAAM,GAAJJ,EAAEf,EAAkB,OAAOA,GAApB,WAAsBqgB,GAAGrgB,CAAC,IAAImB,EAAE,WAAsB,OAAOnB,GAAlB,SAAoBmB,EAAE,OAAOnB,EAAE,OAAOA,EAAG,MAAK6D,GAAG,OAAOuX,GAAGpa,EAAE,SAASV,EAAEc,EAAEf,CAAC,EAAE,KAAKyD,GAAG3C,EAAE,EAAEb,GAAG,EAAE,MAAM,KAAKyD,GAAG,OAAO/D,EAAEgY,GAAG,GAAGhX,EAAEX,EAAEC,EAAE,CAAC,EAAEN,EAAE,YAAY+D,GAAG/D,EAAE,MAAMoB,EAAEpB,EAAE,KAAKmE,GAAG,OAAOnE,EAAEgY,GAAG,GAAGhX,EAAEX,EAAEC,CAAC,EAAEN,EAAE,YAAYmE,GAAGnE,EAAE,MAAMoB,EAAEpB,EAAE,KAAKoE,GAAG,OAAOpE,EAAEgY,GAAG,GAAGhX,EAAEX,EAAEC,CAAC,EAAEN,EAAE,YAAYoE,GAAGpE,EAAE,MAAMoB,EAAEpB,EAAE,KAAKuE,GAAG,OAAO6c,GAAGpgB,EAAEV,EAAEc,EAAEf,CAAC,EAAE,QAAQ,GAAc,OAAOL,GAAlB,UAA4BA,IAAP,KAAS,OAAOA,EAAE,SAAQ,CAAE,KAAKgE,GAAG7C,EAAE,GAAG,MAAMnB,EAAE,KAAKiE,GAAG9C,EAAE,EAAE,MAAMnB,EAAE,KAAKkE,GAAG/C,EAAE,GACpf,MAAMnB,EAAE,KAAKqE,GAAGlD,EAAE,GAAG,MAAMnB,EAAE,KAAKsE,GAAGnD,EAAE,GAAGJ,EAAE,KAAK,MAAMf,CAAC,CAAC,MAAM,MAAMX,EAAE,IAAUW,GAAN,KAAQA,EAAE,OAAOA,EAAE,EAAE,CAAC,CAAE,CAAC,OAAAK,EAAE2X,GAAG7W,EAAEH,EAAEX,EAAEC,CAAC,EAAED,EAAE,YAAYL,EAAEK,EAAE,KAAKU,EAAEV,EAAE,MAAMe,EAASf,CAAC,CAAC,SAAS+a,GAAGpb,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAAf,EAAEgY,GAAG,EAAEhY,EAAEe,EAAEV,CAAC,EAAEL,EAAE,MAAMgB,EAAShB,CAAC,CAAC,SAASohB,GAAGphB,EAAEK,EAAEW,EAAED,EAAE,CAAC,OAAAf,EAAEgY,GAAG,GAAGhY,EAAEe,EAAEV,CAAC,EAAEL,EAAE,YAAYuE,GAAGvE,EAAE,MAAMgB,EAAEhB,EAAE,UAAU,CAAC,SAAS,EAAE,EAASA,CAAC,CAAC,SAASib,GAAGjb,EAAEK,EAAEW,EAAE,CAAC,OAAAhB,EAAEgY,GAAG,EAAEhY,EAAE,KAAKK,CAAC,EAAEL,EAAE,MAAMgB,EAAShB,CAAC,CAC5W,SAASmb,GAAGnb,EAAEK,EAAEW,EAAE,CAAC,OAAAX,EAAE2X,GAAG,EAAShY,EAAE,WAAT,KAAkBA,EAAE,SAAS,CAAE,EAACA,EAAE,IAAIK,CAAC,EAAEA,EAAE,MAAMW,EAAEX,EAAE,UAAU,CAAC,cAAcL,EAAE,cAAc,gBAAgB,KAAK,eAAeA,EAAE,cAAc,EAASK,CAAC,CACtL,SAAS4mB,GAAGjnB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,KAAK,IAAID,EAAE,KAAK,cAAcL,EAAE,KAAK,aAAa,KAAK,UAAU,KAAK,QAAQ,KAAK,gBAAgB,KAAK,KAAK,cAAc,GAAG,KAAK,aAAa,KAAK,eAAe,KAAK,QAAQ,KAAK,KAAK,iBAAiB,EAAE,KAAK,WAAWuK,GAAG,CAAC,EAAE,KAAK,gBAAgBA,GAAG,EAAE,EAAE,KAAK,eAAe,KAAK,cAAc,KAAK,iBAAiB,KAAK,aAAa,KAAK,YAAY,KAAK,eAAe,KAAK,aAAa,EAAE,KAAK,cAAcA,GAAG,CAAC,EAAE,KAAK,iBAAiBxJ,EAAE,KAAK,mBAAmBT,EAAE,KAAK,gCAC/e,IAAI,CAAC,SAAS4mB,GAAGlnB,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAED,EAAED,EAAE,CAAC,OAAAjB,EAAE,IAAIinB,GAAGjnB,EAAEK,EAAEW,EAAEE,EAAED,CAAC,EAAMZ,IAAJ,GAAOA,EAAE,EAAOe,IAAL,KAASf,GAAG,IAAIA,EAAE,EAAEe,EAAE4W,GAAG,EAAE,KAAK,KAAK3X,CAAC,EAAEL,EAAE,QAAQoB,EAAEA,EAAE,UAAUpB,EAAEoB,EAAE,cAAc,CAAC,QAAQL,EAAE,aAAaC,EAAE,MAAM,KAAK,YAAY,KAAK,0BAA0B,IAAI,EAAE0Y,GAAGtY,CAAC,EAASpB,CAAC,CAAC,SAASmnB,GAAGnnB,EAAEK,EAAEW,EAAE,CAAC,IAAID,EAAE,EAAE,UAAU,QAAiB,UAAU,CAAC,IAApB,OAAsB,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS6C,GAAG,IAAU7C,GAAN,KAAQ,KAAK,GAAGA,EAAE,SAASf,EAAE,cAAcK,EAAE,eAAeW,CAAC,CAAC,CACpa,SAASomB,GAAGpnB,EAAE,CAAC,GAAG,CAACA,EAAE,OAAO+V,GAAG/V,EAAEA,EAAE,gBAAgBA,EAAE,CAAC,GAAGwI,GAAGxI,CAAC,IAAIA,GAAOA,EAAE,MAAN,EAAU,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAE,IAAIgB,EAAEL,EAAE,EAAE,CAAC,OAAOK,EAAE,IAAK,KAAK,GAAEA,EAAEA,EAAE,UAAU,QAAQ,MAAML,EAAE,IAAK,GAAE,GAAGmW,GAAG9V,EAAE,IAAI,EAAE,CAACA,EAAEA,EAAE,UAAU,0CAA0C,MAAML,CAAC,CAAC,CAACK,EAAEA,EAAE,MAAM,OAAcA,IAAP,MAAU,MAAM,MAAMhB,EAAE,GAAG,CAAC,CAAE,CAAC,GAAOW,EAAE,MAAN,EAAU,CAAC,IAAIgB,EAAEhB,EAAE,KAAK,GAAGmW,GAAGnV,CAAC,EAAE,OAAOsV,GAAGtW,EAAEgB,EAAEX,CAAC,CAAC,CAAC,OAAOA,CAAC,CACpW,SAASgnB,GAAGrnB,EAAEK,EAAEW,EAAED,EAAET,EAAEc,EAAED,EAAED,EAAED,EAAE,CAAC,OAAAjB,EAAEknB,GAAGlmB,EAAED,EAAE,GAAGf,EAAEM,EAAEc,EAAED,EAAED,EAAED,CAAC,EAAEjB,EAAE,QAAQonB,GAAG,IAAI,EAAEpmB,EAAEhB,EAAE,QAAQe,EAAEF,KAAIP,EAAEga,GAAGtZ,CAAC,EAAEI,EAAEwY,GAAG7Y,EAAET,CAAC,EAAEc,EAAE,SAA4Bf,GAAI,KAAKwZ,GAAG7Y,EAAEI,EAAEd,CAAC,EAAEN,EAAE,QAAQ,MAAMM,EAAEkK,GAAGxK,EAAEM,EAAES,CAAC,EAAE0kB,GAAGzlB,EAAEe,CAAC,EAASf,CAAC,CAAC,SAASsnB,GAAGtnB,EAAEK,EAAEW,EAAED,EAAE,CAAC,IAAIT,EAAED,EAAE,QAAQe,EAAEP,GAAC,EAAGM,EAAEmZ,GAAGha,CAAC,EAAE,OAAAU,EAAEomB,GAAGpmB,CAAC,EAASX,EAAE,UAAT,KAAiBA,EAAE,QAAQW,EAAEX,EAAE,eAAeW,EAAEX,EAAEuZ,GAAGxY,EAAED,CAAC,EAAEd,EAAE,QAAQ,CAAC,QAAQL,CAAC,EAAEe,EAAWA,IAAT,OAAW,KAAKA,EAASA,IAAP,OAAWV,EAAE,SAASU,GAAGf,EAAE6Z,GAAGvZ,EAAED,EAAEc,CAAC,EAASnB,IAAP,OAAWua,GAAGva,EAAEM,EAAEa,EAAEC,CAAC,EAAE0Y,GAAG9Z,EAAEM,EAAEa,CAAC,GAAUA,CAAC,CAC3b,SAASomB,GAAGvnB,EAAE,CAAa,GAAZA,EAAEA,EAAE,QAAW,CAACA,EAAE,MAAM,OAAO,KAAK,OAAOA,EAAE,MAAM,KAAK,IAAK,GAAE,OAAOA,EAAE,MAAM,UAAU,QAAQ,OAAOA,EAAE,MAAM,SAAS,CAAC,CAAC,SAASwnB,GAAGxnB,EAAEK,EAAE,CAAmB,GAAlBL,EAAEA,EAAE,cAAwBA,IAAP,MAAiBA,EAAE,aAAT,KAAoB,CAAC,IAAIgB,EAAEhB,EAAE,UAAUA,EAAE,UAAcgB,IAAJ,GAAOA,EAAEX,EAAEW,EAAEX,CAAC,CAAC,CAAC,SAASonB,GAAGznB,EAAEK,EAAE,CAACmnB,GAAGxnB,EAAEK,CAAC,GAAGL,EAAEA,EAAE,YAAYwnB,GAAGxnB,EAAEK,CAAC,CAAC,CAAC,SAASqnB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAgB,OAAO,aAApB,WAAgC,YAAY,SAAS3nB,EAAE,CAAC,QAAQ,MAAMA,CAAC,CAAC,EAAE,SAAS4nB,GAAG5nB,EAAE,CAAC,KAAK,cAAcA,CAAC,CAC5b6nB,GAAG,UAAU,OAAOD,GAAG,UAAU,OAAO,SAAS5nB,EAAE,CAAC,IAAIK,EAAE,KAAK,cAAc,GAAUA,IAAP,KAAS,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAEioB,GAAGtnB,EAAEK,EAAE,KAAK,IAAI,CAAC,EAAEwnB,GAAG,UAAU,QAAQD,GAAG,UAAU,QAAQ,UAAU,CAAC,IAAI5nB,EAAE,KAAK,cAAc,GAAUA,IAAP,KAAS,CAAC,KAAK,cAAc,KAAK,IAAIK,EAAEL,EAAE,cAAcumB,GAAG,UAAU,CAACe,GAAG,KAAKtnB,EAAE,KAAK,IAAI,CAAC,CAAC,EAAEK,EAAE2T,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS6T,GAAG7nB,EAAE,CAAC,KAAK,cAAcA,CAAC,CAC9V6nB,GAAG,UAAU,2BAA2B,SAAS7nB,EAAE,CAAC,GAAGA,EAAE,CAAC,IAAIK,EAAE0K,GAAE,EAAG/K,EAAE,CAAC,UAAU,KAAK,OAAOA,EAAE,SAASK,CAAC,EAAE,QAAQW,EAAE,EAAEA,EAAEwK,GAAG,QAAYnL,IAAJ,GAAOA,EAAEmL,GAAGxK,CAAC,EAAE,SAASA,IAAI,CAACwK,GAAG,OAAOxK,EAAE,EAAEhB,CAAC,EAAMgB,IAAJ,GAAO6K,GAAG7L,CAAC,CAAC,CAAC,EAAE,SAAS8nB,GAAG9nB,EAAE,CAAC,MAAM,EAAE,CAACA,GAAOA,EAAE,WAAN,GAAoBA,EAAE,WAAN,GAAqBA,EAAE,WAAP,GAAgB,CAAC,SAAS+nB,GAAG/nB,EAAE,CAAC,MAAM,EAAE,CAACA,GAAOA,EAAE,WAAN,GAAoBA,EAAE,WAAN,GAAqBA,EAAE,WAAP,KAAsBA,EAAE,WAAN,GAAiDA,EAAE,YAAnC,gCAA8C,CAAC,SAASgoB,IAAI,CAAE,CACza,SAASC,GAAGjoB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAgB,OAAOS,GAApB,WAAsB,CAAC,IAAIK,EAAEL,EAAEA,EAAE,UAAU,CAAC,IAAIf,EAAEunB,GAAGpmB,CAAC,EAAEC,EAAE,KAAKpB,CAAC,CAAC,CAAC,CAAC,IAAImB,EAAEkmB,GAAGhnB,EAAEU,EAAEf,EAAE,EAAE,KAAK,GAAG,GAAG,GAAGgoB,EAAE,EAAE,OAAAhoB,EAAE,oBAAoBmB,EAAEnB,EAAEgU,EAAE,EAAE7S,EAAE,QAAQ2S,GAAO9T,EAAE,WAAN,EAAeA,EAAE,WAAWA,CAAC,EAAEumB,GAAI,EAAQplB,CAAC,CAAC,KAAKb,EAAEN,EAAE,WAAWA,EAAE,YAAYM,CAAC,EAAE,GAAgB,OAAOS,GAApB,WAAsB,CAAC,IAAIG,EAAEH,EAAEA,EAAE,UAAU,CAAC,IAAIf,EAAEunB,GAAGtmB,CAAC,EAAEC,EAAE,KAAKlB,CAAC,CAAC,CAAC,CAAC,IAAIiB,EAAEimB,GAAGlnB,EAAE,EAAE,GAAG,KAAK,KAAK,GAAG,GAAG,GAAGgoB,EAAE,EAAE,OAAAhoB,EAAE,oBAAoBiB,EAAEjB,EAAEgU,EAAE,EAAE/S,EAAE,QAAQ6S,GAAO9T,EAAE,WAAN,EAAeA,EAAE,WAAWA,CAAC,EAAEumB,GAAG,UAAU,CAACe,GAAGjnB,EAAEY,EAAED,EAAED,CAAC,CAAC,CAAC,EAASE,CAAC,CAC9d,SAASinB,GAAGloB,EAAEK,EAAEW,EAAED,EAAET,EAAE,CAAC,IAAIc,EAAEJ,EAAE,oBAAoB,GAAGI,EAAE,CAAC,IAAID,EAAEC,EAAE,GAAgB,OAAOd,GAApB,WAAsB,CAAC,IAAIY,EAAEZ,EAAEA,EAAE,UAAU,CAAC,IAAIN,EAAEunB,GAAGpmB,CAAC,EAAED,EAAE,KAAKlB,CAAC,CAAC,CAAC,CAACsnB,GAAGjnB,EAAEc,EAAEnB,EAAEM,CAAC,CAAC,MAAMa,EAAE8mB,GAAGjnB,EAAEX,EAAEL,EAAEM,EAAES,CAAC,EAAE,OAAOwmB,GAAGpmB,CAAC,CAAC,CAACyJ,GAAG,SAAS5K,EAAE,CAAC,OAAOA,EAAE,IAAG,CAAE,IAAK,GAAE,IAAIK,EAAEL,EAAE,UAAU,GAAGK,EAAE,QAAQ,cAAc,aAAa,CAAC,IAAIW,EAAEiJ,GAAG5J,EAAE,YAAY,EAAMW,IAAJ,IAAQ0J,GAAGrK,EAAEW,EAAE,CAAC,EAAEykB,GAAGplB,EAAEJ,GAAC,CAAE,EAAO,EAAAW,GAAE,KAAKyhB,GAAGpiB,GAAC,EAAG,IAAI6W,MAAM,CAAC,MAAM,IAAK,IAAGyP,GAAG,UAAU,CAAC,IAAIlmB,EAAEmZ,GAAGxZ,EAAE,CAAC,EAAE,GAAUK,IAAP,KAAS,CAAC,IAAIW,EAAEH,GAAG,EAAC0Z,GAAGla,EAAEL,EAAE,EAAEgB,CAAC,CAAC,CAAC,CAAC,EAAEymB,GAAGznB,EAAE,CAAC,CAAC,CAAC,EAC/b6K,GAAG,SAAS7K,EAAE,CAAC,GAAQA,EAAE,MAAP,GAAW,CAAC,IAAIK,EAAEmZ,GAAGxZ,EAAE,SAAS,EAAE,GAAUK,IAAP,KAAS,CAAC,IAAIW,EAAEH,GAAG,EAAC0Z,GAAGla,EAAEL,EAAE,UAAUgB,CAAC,CAAC,CAACymB,GAAGznB,EAAE,SAAS,CAAC,CAAC,EAAE8K,GAAG,SAAS9K,EAAE,CAAC,GAAQA,EAAE,MAAP,GAAW,CAAC,IAAIK,EAAEia,GAAGta,CAAC,EAAEgB,EAAEwY,GAAGxZ,EAAEK,CAAC,EAAE,GAAUW,IAAP,KAAS,CAAC,IAAID,EAAEF,GAAG,EAAC0Z,GAAGvZ,EAAEhB,EAAEK,EAAEU,CAAC,CAAC,CAAC0mB,GAAGznB,EAAEK,CAAC,CAAC,CAAC,EAAE0K,GAAG,UAAU,CAAC,OAAO7K,EAAC,EAAE8K,GAAG,SAAShL,EAAEK,EAAE,CAAC,IAAIW,EAAEd,GAAE,GAAG,CAAC,OAAOA,GAAEF,EAAEK,EAAC,CAAE,QAAC,CAAQH,GAAEc,CAAC,CAAC,EAClSiG,GAAG,SAASjH,EAAEK,EAAEW,EAAE,CAAC,OAAOX,EAAG,KAAK,QAAyB,GAAjBqF,GAAG1F,EAAEgB,CAAC,EAAEX,EAAEW,EAAE,KAAkBA,EAAE,OAAZ,SAAwBX,GAAN,KAAQ,CAAC,IAAIW,EAAEhB,EAAEgB,EAAE,YAAYA,EAAEA,EAAE,WAAsF,IAA3EA,EAAEA,EAAE,iBAAiB,cAAc,KAAK,UAAU,GAAGX,CAAC,EAAE,iBAAiB,EAAMA,EAAE,EAAEA,EAAEW,EAAE,OAAOX,IAAI,CAAC,IAAIU,EAAEC,EAAEX,CAAC,EAAE,GAAGU,IAAIf,GAAGe,EAAE,OAAOf,EAAE,KAAK,CAAC,IAAIM,EAAEgH,GAAGvG,CAAC,EAAE,GAAG,CAACT,EAAE,MAAM,MAAMjB,EAAE,EAAE,CAAC,EAAEgG,GAAGtE,CAAC,EAAE2E,GAAG3E,EAAET,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAK,WAAW2F,GAAGjG,EAAEgB,CAAC,EAAE,MAAM,IAAK,SAASX,EAAEW,EAAE,MAAYX,GAAN,MAASyF,GAAG9F,EAAE,CAAC,CAACgB,EAAE,SAASX,EAAE,EAAE,CAAC,CAAC,EAAEoH,GAAG6e,GAAG5e,GAAG6e,GACpa,IAAI4B,GAAG,CAAC,sBAAsB,GAAG,OAAO,CAAC9gB,GAAGuJ,GAAGtJ,GAAGC,GAAGC,GAAG8e,EAAE,CAAC,EAAE8B,GAAG,CAAC,wBAAwBtc,GAAG,WAAW,EAAE,QAAQ,SAAS,oBAAoB,WAAW,EACrJuc,GAAG,CAAC,WAAWD,GAAG,WAAW,QAAQA,GAAG,QAAQ,oBAAoBA,GAAG,oBAAoB,eAAeA,GAAG,eAAe,kBAAkB,KAAK,4BAA4B,KAAK,4BAA4B,KAAK,cAAc,KAAK,wBAAwB,KAAK,wBAAwB,KAAK,gBAAgB,KAAK,mBAAmB,KAAK,eAAe,KAAK,qBAAqB1kB,GAAG,uBAAuB,wBAAwB,SAAS1D,EAAE,CAAC,OAAAA,EAAE4I,GAAG5I,CAAC,EAAgBA,IAAP,KAAS,KAAKA,EAAE,SAAS,EAAE,wBAAwBooB,GAAG,yBAC/fV,GAAG,4BAA4B,KAAK,gBAAgB,KAAK,aAAa,KAAK,kBAAkB,KAAK,gBAAgB,KAAK,kBAAkB,gCAAgC,EAAE,GAAiB,OAAO,+BAArB,IAAoD,CAAC,IAAIY,GAAG,+BAA+B,GAAG,CAACA,GAAG,YAAYA,GAAG,cAAc,GAAG,CAAC9e,GAAG8e,GAAG,OAAOD,EAAE,EAAE5e,GAAG6e,EAAE,MAAS,EAAE,CAA2DC,GAAA,mDAACJ,GAC1XI,GAAA,aAAC,SAASvoB,EAAEK,EAAE,CAAC,IAAIW,EAAE,EAAE,UAAU,QAAiB,UAAU,CAAC,IAApB,OAAsB,UAAU,CAAC,EAAE,KAAK,GAAG,CAAC8mB,GAAGznB,CAAC,EAAE,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAE,OAAO8nB,GAAGnnB,EAAEK,EAAE,KAAKW,CAAC,CAAC,EAAEunB,GAAA,WAAmB,SAASvoB,EAAEK,EAAE,CAAC,GAAG,CAACynB,GAAG9nB,CAAC,EAAE,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAE,IAAI2B,EAAE,GAAGD,EAAE,GAAGT,EAAEqnB,GAAG,OAAOtnB,GAAP,OAA4BA,EAAE,sBAAP,KAA6BW,EAAE,IAAaX,EAAE,mBAAX,SAA8BU,EAAEV,EAAE,kBAA2BA,EAAE,qBAAX,SAAgCC,EAAED,EAAE,qBAAqBA,EAAE6mB,GAAGlnB,EAAE,EAAE,GAAG,KAAK,KAAKgB,EAAE,GAAGD,EAAET,CAAC,EAAEN,EAAEgU,EAAE,EAAE3T,EAAE,QAAQyT,GAAO9T,EAAE,WAAN,EAAeA,EAAE,WAAWA,CAAC,EAAS,IAAI4nB,GAAGvnB,CAAC,CAAC,EACrfkoB,GAAA,YAAoB,SAASvoB,EAAE,CAAC,GAASA,GAAN,KAAQ,OAAO,KAAK,GAAOA,EAAE,WAAN,EAAe,OAAOA,EAAE,IAAIK,EAAEL,EAAE,gBAAgB,GAAYK,IAAT,OAAY,MAAgB,OAAOL,EAAE,QAAtB,WAAmC,MAAMX,EAAE,GAAG,CAAC,GAAEW,EAAE,OAAO,KAAKA,CAAC,EAAE,KAAK,GAAG,EAAQ,MAAMX,EAAE,IAAIW,CAAC,CAAC,GAAG,OAAAA,EAAE4I,GAAGvI,CAAC,EAAEL,EAASA,IAAP,KAAS,KAAKA,EAAE,UAAiBA,CAAC,EAAmBuoB,GAAA,UAAC,SAASvoB,EAAE,CAAC,OAAOumB,GAAGvmB,CAAC,CAAC,EAAiBuoB,GAAA,QAAC,SAASvoB,EAAEK,EAAEW,EAAE,CAAC,GAAG,CAAC+mB,GAAG1nB,CAAC,EAAE,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAE,OAAO6oB,GAAG,KAAKloB,EAAEK,EAAE,GAAGW,CAAC,CAAC,EAC5XunB,GAAA,YAAC,SAASvoB,EAAEK,EAAEW,EAAE,CAAC,GAAG,CAAC8mB,GAAG9nB,CAAC,EAAE,MAAM,MAAMX,EAAE,GAAG,CAAC,EAAE,IAAI0B,EAAQC,GAAN,MAASA,EAAE,iBAAiB,KAAKV,EAAE,GAAGc,EAAE,GAAGD,EAAEwmB,GAAyO,GAA/N3mB,GAAP,OAA4BA,EAAE,sBAAP,KAA6BV,EAAE,IAAaU,EAAE,mBAAX,SAA8BI,EAAEJ,EAAE,kBAA2BA,EAAE,qBAAX,SAAgCG,EAAEH,EAAE,qBAAqBX,EAAEgnB,GAAGhnB,EAAE,KAAKL,EAAE,EAAQgB,GAAI,KAAKV,EAAE,GAAGc,EAAED,CAAC,EAAEnB,EAAEgU,EAAE,EAAE3T,EAAE,QAAQyT,GAAG9T,CAAC,EAAKe,EAAE,IAAIf,EAAE,EAAEA,EAAEe,EAAE,OAAOf,IAAIgB,EAAED,EAAEf,CAAC,EAAEM,EAAEU,EAAE,YAAYV,EAAEA,EAAEU,EAAE,OAAO,EAAQX,EAAE,iCAAR,KAAwCA,EAAE,gCAAgC,CAACW,EAAEV,CAAC,EAAED,EAAE,gCAAgC,KAAKW,EACvhBV,CAAC,EAAE,OAAO,IAAIunB,GAAGxnB,CAAC,CAAC,EAAEkoB,GAAA,OAAe,SAASvoB,EAAEK,EAAEW,EAAE,CAAC,GAAG,CAAC+mB,GAAG1nB,CAAC,EAAE,MAAM,MAAMhB,EAAE,GAAG,CAAC,EAAE,OAAO6oB,GAAG,KAAKloB,EAAEK,EAAE,GAAGW,CAAC,CAAC,EAAEunB,GAAA,uBAA+B,SAASvoB,EAAE,CAAC,GAAG,CAAC+nB,GAAG/nB,CAAC,EAAE,MAAM,MAAMX,EAAE,EAAE,CAAC,EAAE,OAAOW,EAAE,qBAAqBumB,GAAG,UAAU,CAAC2B,GAAG,KAAK,KAAKloB,EAAE,GAAG,UAAU,CAACA,EAAE,oBAAoB,KAAKA,EAAEgU,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAEuU,GAAA,wBAAgCjC,GAC/UiC,GAAA,oCAA4C,SAASvoB,EAAEK,EAAEW,EAAED,EAAE,CAAC,GAAG,CAACgnB,GAAG/mB,CAAC,EAAE,MAAM,MAAM3B,EAAE,GAAG,CAAC,EAAE,GAASW,GAAN,MAAkBA,EAAE,kBAAX,OAA2B,MAAM,MAAMX,EAAE,EAAE,CAAC,EAAE,OAAO6oB,GAAGloB,EAAEK,EAAEW,EAAE,GAAGD,CAAC,CAAC,EAAEwnB,GAAA,QAAgB,iCChU7L,SAASC,IAAW,CAElB,GACE,SAAO,+BAAmC,KAC1C,OAAO,+BAA+B,UAAa,YAcjD,IAEF,+BAA+B,SAASA,EAAQ,QACzCC,EAAK,CAGZ,QAAQ,MAAMA,CAAG,CACnB,CACF,CAKWD,KACFE,GAAA,QAAUvmB,sCClCnB,SAASwmB,GAAgB,EAAG,EAAG,CAC7B,OAAOA,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAM,EAAG,SAAUnpB,EAAGc,EAAG,CAC9F,OAAOd,EAAE,UAAYc,EAAGd,CAC5B,EAAKmpB,GAAgB,EAAG,CAAC,CACzB,CCHA,SAASC,IAAe,EAAGC,EAAG,CAC5B,EAAE,UAAY,OAAO,OAAOA,EAAE,SAAS,EAAG,EAAE,UAAU,YAAc,EAAGC,GAAe,EAAGD,CAAC,CAC5F,qBCMIE,GAAuB,+CAE3BC,GAAiBD,GCFbA,GAAuB5mB,GAE3B,SAAS8mB,IAAgB,CAAE,CAC3B,SAASC,IAAyB,CAAE,CACpCA,GAAuB,kBAAoBD,GAE3C,IAAAE,GAAiB,UAAW,CAC1B,SAASC,EAAKC,EAAOC,EAAUC,EAAeC,EAAUC,EAAcC,EAAQ,CAC5E,GAAIA,IAAWX,GAIf,KAAIN,EAAM,IAAI,MACZ,iLAGN,EACI,MAAAA,EAAI,KAAO,sBACLA,EACV,CACEW,EAAK,WAAaA,EAClB,SAASO,GAAU,CACjB,OAAOP,CAEX,CAEE,IAAIQ,EAAiB,CACnB,MAAOR,EACP,OAAQA,EACR,KAAMA,EACN,KAAMA,EACN,OAAQA,EACR,OAAQA,EACR,OAAQA,EACR,OAAQA,EAER,IAAKA,EACL,QAASO,EACT,QAASP,EACT,YAAaA,EACb,WAAYO,EACZ,KAAMP,EACN,SAAUO,EACV,MAAOA,EACP,UAAWA,EACX,MAAOA,EACP,MAAOA,EAEP,eAAgBT,GAChB,kBAAmBD,EACvB,EAEE,OAAAW,EAAe,UAAYA,EAEpBA,CACT,EC/CSC,GAAA,QAAU1nB,uCCjBnB,SAAS2nB,IAAW,CAClB,OAAOA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAI,EAAK,SAAU1qB,EAAG,CACpE,QAAS,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,IAAII,EAAI,UAAU,CAAC,EACnB,QAAS,KAAKA,GAAI,IAAI,eAAe,KAAKA,EAAG,CAAC,IAAMJ,EAAE,CAAC,EAAII,EAAE,CAAC,EAC/D,CACD,OAAOJ,CACR,EAAE0qB,GAAS,MAAM,KAAM,SAAS,CACnC,CCPA,IAAIC,GAAS,mBACb,SAASC,GAAUC,EAAWC,EAAS,CAKzB,UAAI,MAAMH,EAAM,CAK9B;;;;;;;GCHa,IAAI1pB,GAAe,OAAO,QAApB,YAA4B,OAAO,IAAIW,GAAEX,GAAE,OAAO,IAAI,eAAe,EAAE,MAAMU,GAAEV,GAAE,OAAO,IAAI,cAAc,EAAE,MAAMC,GAAED,GAAE,OAAO,IAAI,gBAAgB,EAAE,MAAMe,GAAEf,GAAE,OAAO,IAAI,mBAAmB,EAAE,MAAMc,GAAEd,GAAE,OAAO,IAAI,gBAAgB,EAAE,MAAMa,GAAEb,GAAE,OAAO,IAAI,gBAAgB,EAAE,MAAMY,GAAEZ,GAAE,OAAO,IAAI,eAAe,EAAE,MAAMlB,GAAEkB,GAAE,OAAO,IAAI,kBAAkB,EAAE,MAAMgB,GAAEhB,GAAE,OAAO,IAAI,uBAAuB,EAAE,MAAMjB,GAAEiB,GAAE,OAAO,IAAI,mBAAmB,EAAE,MAAMhB,GAAEgB,GAAE,OAAO,IAAI,gBAAgB,EAAE,MAAMf,GAAEe,GACpf,OAAO,IAAI,qBAAqB,EAAE,MAAMd,GAAEc,GAAE,OAAO,IAAI,YAAY,EAAE,MAAMb,GAAEa,GAAE,OAAO,IAAI,YAAY,EAAE,MAAMX,GAAEW,GAAE,OAAO,IAAI,aAAa,EAAE,MAAMV,GAAEU,GAAE,OAAO,IAAI,mBAAmB,EAAE,MAAMT,GAAES,GAAE,OAAO,IAAI,iBAAiB,EAAE,MAAMR,GAAEQ,GAAE,OAAO,IAAI,aAAa,EAAE,MAClQ,SAASP,GAAEE,EAAE,CAAC,GAAc,OAAOA,GAAlB,UAA4BA,IAAP,KAAS,CAAC,IAAIP,EAAEO,EAAE,SAAS,OAAOP,EAAC,CAAE,KAAKuB,GAAE,OAAOhB,EAAEA,EAAE,KAAKA,GAAG,KAAKb,GAAE,KAAKkC,GAAE,KAAKf,GAAE,KAAKa,GAAE,KAAKC,GAAE,KAAK/B,GAAE,OAAOW,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE,SAASA,EAAC,CAAE,KAAKiB,GAAE,KAAK7B,GAAE,KAAKI,GAAE,KAAKD,GAAE,KAAK2B,GAAE,OAAOlB,EAAE,QAAQ,OAAOP,CAAC,CAAC,CAAC,KAAKsB,GAAE,OAAOtB,CAAC,CAAC,CAAC,CAAC,SAASM,GAAEC,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIqB,EAAC,CAAC8oB,GAAA,UAAkBhrB,GAAwBgrB,GAAA,eAAC9oB,sBAA0BJ,GAAEkpB,GAAA,gBAAwBjpB,GAAiBipB,GAAA,QAACnpB,GAAEmpB,GAAA,WAAmB/qB,GAAkB+qB,GAAA,SAAC7pB,WAAed,GAAE2qB,GAAA,KAAa5qB,GAAgB4qB,GAAA,OAACppB,GAChfopB,GAAA,SAAiBhpB,GAAEgpB,GAAA,WAAmB/oB,GAAE+oB,GAAA,SAAiB9qB,GAAE8qB,GAAA,YAAoB,SAASnqB,EAAE,CAAC,OAAOD,GAAEC,CAAC,GAAGF,GAAEE,CAAC,IAAIb,EAAC,EAAEgrB,GAAA,iBAAyBpqB,GAAEoqB,GAAA,kBAA0B,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIiB,EAAC,EAAEkpB,GAAA,kBAA0B,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIkB,EAAC,EAAEipB,GAAA,UAAkB,SAASnqB,EAAE,CAAC,OAAiB,OAAOA,GAAlB,UAA4BA,IAAP,MAAUA,EAAE,WAAWgB,EAAC,EAAEmpB,GAAA,aAAqB,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIZ,EAAC,EAAE+qB,GAAA,WAAmB,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIM,EAAC,EAAE6pB,GAAA,OAAe,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIR,EAAC,EAC1d2qB,GAAA,OAAe,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIT,EAAC,cAAmB,SAASS,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIe,EAAC,EAAoBopB,GAAA,WAAC,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAImB,EAAC,EAAEgpB,GAAA,aAAqB,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIoB,EAAC,EAAE+oB,GAAA,WAAmB,SAASnqB,EAAE,CAAC,OAAOF,GAAEE,CAAC,IAAIX,EAAC,EAChN8qB,GAAA,mBAAC,SAASnqB,EAAE,CAAC,OAAiB,OAAOA,GAAlB,UAAkC,OAAOA,GAApB,YAAuBA,IAAIM,IAAGN,IAAIqB,IAAGrB,IAAImB,IAAGnB,IAAIoB,IAAGpB,IAAIX,IAAGW,IAAIV,IAAc,OAAOU,GAAlB,UAA4BA,IAAP,OAAWA,EAAE,WAAWR,IAAGQ,EAAE,WAAWT,IAAGS,EAAE,WAAWkB,IAAGlB,EAAE,WAAWiB,IAAGjB,EAAE,WAAWZ,IAAGY,EAAE,WAAWL,IAAGK,EAAE,WAAWJ,IAAGI,EAAE,WAAWH,IAAGG,EAAE,WAAWN,GAAE,EAAgByqB,GAAA,OAACrqB,GCX1TsqB,GAAA,QAAUjoB,qBCHnB,SAASkoB,IAA8B9qB,EAAG,EAAG,CAC3C,GAAYA,GAAR,KAAW,MAAO,GACtB,IAAIC,EAAI,GACR,QAASJ,KAAKG,EAAG,GAAI,GAAG,eAAe,KAAKA,EAAGH,CAAC,EAAG,CACjD,GAAI,EAAE,SAASA,CAAC,EAAG,SACnBI,EAAEJ,CAAC,EAAIG,EAAEH,CAAC,CACX,CACD,OAAOI,CACT,g6BCLA,IAAI8qB,GAAkB,gJAClBC,GAAa,CACf,QAAS,4CAA4CD,EAAe,GACpE,OAAQA,EACV,EACIE,GAAe,CACjB,MAAO,CACL,aAAc,SACd,cAAe,OACf,MAAO,OACP,YAAa,MACd,EACD,OAAQ,CACN,aAAc,OACd,cAAe,MACf,MAAO,OACP,YAAa,MACd,EACD,KAAM,CACJ,aAAc,MACd,cAAe,MACf,MAAO,MACP,YAAa,KACd,EACD,MAAO,CACL,aAAc,MACd,cAAe,MACf,MAAO,MACP,YAAa,KACd,CACH,EACIC,GAAQ,CACV,MAAO,CACL,aAAc,YACf,EACD,KAAM,CACJ,aAAc,WACf,EACD,MAAO,CACL,aAAc,WACf,CACH,EACIC,GAAY,CAAC,CACf,aAAAC,EAAe,QACf,UAAAC,EAAY,UACZ,YAAAC,EAAc,MAChB,KAAO,CACL,MAAO,CACL,aAAcJ,GAAMI,CAAW,EAAE,YAClC,EACD,MAAO,CACL,KAAMN,GAAWK,CAAS,CAC3B,EACD,MAAO,CACL,aAAcJ,GAAaG,CAAY,EAAE,aACzC,cAAeH,GAAaG,CAAY,EAAE,cAC1C,WAAYH,GAAaG,CAAY,EAAE,cACvC,MAAOH,GAAaG,CAAY,EAAE,MAClC,YAAaH,GAAaG,CAAY,EAAE,WACzC,CACH,GCzDIG,GAAe,CACjB,KAAM,CAAE,YAAa,UAAW,sBAAuB,MAAQ,EAC/D,MAAO,CAAE,YAAa,UAAW,sBAAuB,MAAQ,EAChE,OAAQ,CAAE,YAAa,UAAW,sBAAuB,MAAQ,EACjE,KAAM,CAAE,YAAa,UAAW,sBAAuB,MAAQ,EAC/D,OAAQ,CAAE,YAAa,UAAW,sBAAuB,MAAQ,EACjE,IAAK,CAAE,YAAa,UAAW,sBAAuB,MAAQ,CAChE,EACIC,GAAqBD,GAAa,KAClCE,GAAa,CAAC,CAChB,YAAAC,EAAcF,GAAmB,YACjC,sBAAAG,EAAwBH,GAAmB,sBAC3C,GAAGI,CACL,EAAI,MAAQ,CACV,GAAGT,GAAUS,CAAgB,EAC7B,OAAQ,CACN,YAAAF,EACA,sBAAAC,EACA,mBAAoB,sBACpB,yBAA0B,sBAC1B,gCAAiC,sBACjC,YAAa,wBACb,sBAAuB,sBACvB,wBAAyB,OACzB,6BAA8B,UAC9B,6BAA8B,kEAC9B,kBAAmB,UACnB,uBAAwB,OACxB,oBAAqB,UACrB,6BAA8B,mGAC9B,0BAA2B,kGAC3B,MAAO,UACP,cAAe,sBACf,iBAAkB,sBAClB,mBAAoB,wBACpB,cAAe,qBACf,gBAAiB,OACjB,YAAa,cACb,UAAW,UACX,aAAc,wBACd,mBAAoB,wBACpB,cAAe,OACf,mBAAoB,2BACpB,kBAAmB,yBACnB,qBAAsB,wBACtB,QAAS,SACV,EACD,QAAS,CACP,cAAe,kCACf,OAAQ,mCACR,qBAAsB,qCACtB,eAAgB,kCAChB,eAAgB,kCAChB,WAAY,kCACb,CACH,GACAF,GAAW,aAAeF,GCxD1B,IAAIM,GAAW,UACXN,GAAe,CACjB,KAAM,CAAE,YAAa,UAAW,sBAAuB,MAAQ,EAC/D,MAAO,CAAE,YAAa,UAAW,sBAAuBM,EAAU,EAClE,OAAQ,CAAE,YAAa,UAAW,sBAAuBA,EAAU,EACnE,KAAM,CAAE,YAAa,UAAW,sBAAuBA,EAAU,EACjE,OAAQ,CAAE,YAAa,UAAW,sBAAuB,MAAQ,EACjE,IAAK,CAAE,YAAa,UAAW,sBAAuB,MAAQ,CAChE,EACIL,GAAqBD,GAAa,KAClCO,GAAY,CAAC,CACf,YAAAJ,EAAcF,GAAmB,YACjC,sBAAAG,EAAwBH,GAAmB,sBAC3C,GAAGI,CACL,EAAI,MAAQ,CACV,GAAGT,GAAUS,CAAgB,EAC7B,OAAQ,CACN,YAAAF,EACA,sBAAAC,EACA,mBAAoB,4BACpB,yBAA0B,4BAC1B,gCAAiC,4BACjC,YAAa,2BACb,sBAAuB,4BACvB,wBAAyBE,GACzB,6BAA8B,UAC9B,6BAA8B,+EAC9B,kBAAmB,OACnB,uBAAwB,OACxB,oBAAqB,UACrB,6BAA8B,4FAC9B,0BAA2B,4FAC3B,MAAO,UACP,cAAe,4BACf,iBAAkB,4BAClB,mBAAoB,2BACpB,cAAe,qBACf,gBAAiB,UACjB,YAAa,4BACb,UAAW,OACX,aAAc,2BACd,mBAAoB,2BACpB,cAAe,2BACf,mBAAoB,2BACpB,kBAAmB,4BACnB,qBAAsB,2BACtB,QAAS,SACV,EACD,QAAS,CACP,cAAe,kCACf,OAAQ,mCACR,qBAAsB,qCACtB,eAAgB,kCAChB,eAAgB,kCAChB,WAAY,kCACb,CACH,GACAC,GAAU,aAAeP,GC5DtB,IAACQ,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,EACngD+d,GAAK,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAI,EAEpgDwxD,IAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGkmE,IAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGorC,IAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,IAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EAEpgGC,IAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,IAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,IAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,IAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAU,EAEpgGz4B,IAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,IAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGy4B,IAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,IAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY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","names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","nh","lh","mh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","X","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","wl","reactDom_production_min","checkDCE","err","reactDomModule","_setPrototypeOf","_inheritsLoose","o","setPrototypeOf","ReactPropTypesSecret","ReactPropTypesSecret_1","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","props","propName","componentName","location","propFullName","secret","getShim","ReactPropTypes","propTypesModule","_extends","prefix","invariant","condition","message","reactIs_production_min","reactIsModule","_objectWithoutPropertiesLoose","systemFontStack","fontStacks","radiusScales","blurs","baseTheme","borderRadius","fontStack","overlayBlur","accentColors","defaultAccentColor","lightTheme","accentColor","accentColorForeground","baseThemeOptions","darkGrey","darkTheme","en_US_default","addFunctionSerializer","target","recipe","addRecipe","createNormalizeValueFn","properties","conditions","normalizeValue","value","returnValue","index","createMapValueFn","mapValue","mapFn","normalizedObject","mappedObject","_key","toPrimitive","i","toPropertyKey","_defineProperty","obj","key","ownKeys","_objectSpread2","createSprinkles","_len","args","sprinklesStyles","sprinklesKeys","shorthandNames","property","sprinklesFn","classNames","shorthands","nonShorthands","hasShorthands","shorthand","sprinkle","propMapping","finalProps","_loop","propValue","prop","responsiveIndex","responsiveValue","conditionName","_conditionName","_value","composeStyles","classList","createSprinkles$1","version","getContractAddress","address","getUrl","url","getVersion","BaseError","shortMessage","details","_a","docsPath","fn","walk","IntegerOutOfRangeError","max","min","signed","size","InvalidBytesBooleanError","bytes","SizeOverflowError","givenSize","maxSize","SliceOffsetOutOfBoundsError","offset","position","SizeExceedsPaddingSizeError","targetSize","type","InvalidBytesLengthError","pad","hexOrBytes","dir","padHex","padBytes","hex_","hex","paddedBytes","padEnd","isHex","strict","trim","data","sliceLength","encoder","toBytes","opts","numberToBytes","boolToBytes","hexToBytes","stringToBytes","assertSize","charCodeMap","charCodeToBase16","char","hexString","length","j","nibbleLeft","nibbleRight","numberToHex","size_","hexToBigInt","hexToNumber","hexToString","hexes","_v","toHex","stringToHex","boolToHex","bytesToHex","string","value_","maxValue","minValue","suffix","addChain","client","chain","name","nativeCurrency","rpcUrls","blockExplorers","formatAbiItem","abiItem","includeName","InvalidDefinitionTypeError","formatAbiParams","params","param","formatAbiParam","AbiConstructorNotFoundError","AbiConstructorParamsNotFoundError","AbiDecodingDataSizeTooSmallError","AbiDecodingZeroDataError","AbiEncodingArrayLengthMismatchError","expectedLength","givenLength","AbiEncodingBytesSizeMismatchError","expectedSize","AbiEncodingLengthMismatchError","AbiErrorSignatureNotFoundError","signature","AbiEventSignatureEmptyTopicsError","AbiEventSignatureNotFoundError","AbiEventNotFoundError","eventName","AbiFunctionNotFoundError","functionName","AbiFunctionOutputsNotFoundError","AbiItemAmbiguityError","BytesSizeMismatchError","DecodeLogDataMismatch","DecodeLogTopicsMismatch","InvalidAbiEncodingTypeError","InvalidAbiDecodingTypeError","InvalidArrayError","concat","values","concatHex","concatBytes","arr","result","acc","InvalidAddressError","LruMap","number","lengths","exists","instance","checkFinished","output","out","U32_MASK64","_32n","fromBig","split","lst","Al","rotlSH","s","rotlSL","rotlBH","rotlBL","u8a","u32","isLE","utf8ToBytes","str","Hash$3","wrapConstructor","hashCons","hashC","msg","tmp","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","round","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","rounds","idx1","idx0","B0","B1","Tl","curH","curL","shift","PI","Keccak","Hash","blockLen","outputLen","enableXOF","state","len","pos","take","bufferOut","to","gen","keccak_256","keccak256","to_","checksumAddress","address_","chainId","hexAddress","hash","getAddress","isAddress","addressRegex","isAddressCache","slice","start","end","sliceHex","sliceBytes","assertStartOffset","assertEndOffset","encodeAbiParameters","preparedParams","prepareParams","encodeParams","prepareParam","arrayComponents","getArrayComponents","encodeArray","encodeTuple","encodeAddress","encodeBool","encodeNumber","encodeBytes","encodeString","staticSize","dynamic","encoded","staticParams","dynamicParams","dynamicSize","dynamicChild","preparedParam","paramSize","bytesSize","hexValue","partsLength","parts","param_","matches","encodeDeployData","parameters","abi","bytecode","description","parseAccount","account","AccountNotFoundError","ChainDoesNotSupportContract","blockNumber","contract","ChainMismatchError","currentChainId","ChainNotFoundError","ClientChainNotConfiguredError","assertCurrentChain","etherUnits","gweiUnits","weiUnits","formatUnits","decimals","display","negative","integer","fraction","formatGwei","wei","unit","ExecutionRevertedError","cause","reason","FeeCapTooHighError","maxFeePerGas","FeeCapTooLowError","NonceTooHighError","nonce","NonceTooLowError","NonceMaxValueError","InsufficientFundsError","IntrinsicGasTooHighError","gas","IntrinsicGasTooLowError","TransactionTypeNotSupportedError","TipAboveFeeCapError","maxPriorityFeePerGas","UnknownNodeError","formatEther","prettyPrint","entries","maxLength","FeeConflictError","InvalidSerializableTransactionError","transaction","TransactionExecutionError","gasPrice","prettyArgs","TransactionNotFoundError","blockHash","blockTag","identifier","TransactionReceiptNotFoundError","WaitForTransactionReceiptTimeoutError","stringify","replacer","space","HttpRequestError","body","headers","status","RpcRequestError","error","TimeoutError","unknownErrorCode","RpcError","code","metaMessages","ProviderRpcError","options","ParseRpcError","InvalidRequestRpcError","MethodNotFoundRpcError","InvalidParamsRpcError","InternalRpcError","InvalidInputRpcError","ResourceNotFoundRpcError","ResourceUnavailableRpcError","TransactionRejectedRpcError","MethodNotSupportedRpcError","LimitExceededRpcError","JsonRpcVersionUnsupportedError","UserRejectedRequestError","UnauthorizedProviderError","UnsupportedProviderMethodError","ProviderDisconnectedError","ChainDisconnectedError","SwitchChainError","UnknownRpcError","getNodeError","executionRevertedError","getTransactionError","extract","format","extract_","formatted","keys","rpcTransactionType","formatTransactionRequest","transactionRequest","getAction","action","assertRequest","account_","getChainId","chainIdHex","BaseFeeScalarError","Eip1559FeesNotSupportedError","MaxFeePerGasTooLowError","BlockNotFoundError","transactionType","formatTransaction","transaction_","formatBlock","block","transactions","getBlock","blockTag_","includeTransactions_","includeTransactions","blockNumberHex","_c","_b","getGasPrice","estimateMaxPriorityFeePerGas","internal_estimateMaxPriorityFeePerGas","block_","request","maxPriorityFeePerGasHex","estimateFeesPerGas","internal_estimateFeesPerGas","baseFeeMultiplier","denominator","multiply","base","baseFeePerGas","EstimateGasExecutionError","getEstimateGasError","estimateGas","accessList","rest","prepareTransactionRequest","chainFormat","balance","getTransactionCount","count","getTransactionType","gasPrice_","sendRawTransaction","serializedTransaction","sendTransaction","serializer","_d","deployContract","walletClient","calldata","multicall3Abi","universalResolverErrors","universalResolverResolveAbi","universalResolverReverseAbi","textResolverAbi","addressResolverAbi","universalSignatureValidatorAbi","erc20Abi","NegativeOffsetError","PositionOutOfBoundsError","RecursiveReadLimitExceededError","limit","staticCursor","position_","byte","oldPosition","createCursor","recursiveReadLimit","cursor","bytesToBigInt","bytesToBool","bytes_","bytesToNumber","bytesToString","decodeAbiParameters","consumed","consumed_","decodeParameter","staticPosition","decodeArray","decodeTuple","decodeAddress","decodeBool","decodeBytes","decodeNumber","decodeString","sizeOfLength","sizeOfOffset","startOfData","hasDynamicChild","_","hasUnnamedChild","component","execTyped","regex","match","tupleRegex","formatAbiParameter","abiParameter","formatAbiParameters","abiParameters","hashSignature","sig","normalizeSignature","active","current","level","valid","toSignature","def","def_","toSignatureHash","toEventSelector","toFunctionSelector","getAbiItem","isSelector","abiItems","matchedAbiItem","arg","isArgOfType","ambiguousTypes","getAmbiguousTypes","argType","abiParameterType","sourceParameters","targetParameters","parameterIndex","sourceParameter","targetParameter","types","decodeFunctionResult","item","encodeFunctionData","definition","getChainContractAddress","panicReasons","solidityError","solidityPanic","decodeErrorResult","formatAbiItemWithArgs","includeFunctionName","input","AccountStateConflictError","StateAssignmentConflictError","prettyStateMapping","stateMapping","pretty","slot","prettyStateOverride","stateOverride","val","CallExecutionError","ContractFunctionExecutionError","contractAddress","sender","formattedArgs","functionWithParams","ContractFunctionRevertedError","decodedData","errorName","errorArgs","firstArg","errorWithParams","ContractFunctionZeroDataError","RawContractError","isNullUniversalResolverError","callType","_e","_f","encodedLabelToLabelhash","label","namehash","labels","hashFromEncodedLabel","hashed","encodeLabelhash","labelhash","packetToBytes","packet","list","EXECUTION_REVERTED_ERROR_CODE","getContractError","aggregate3Signature","getCallError","schedulerCache","createBatchScheduler","shouldSplitBatch","wait","sort","exec","scheduler","getScheduler","flush","pendingPromise","getBatchedArgs","setScheduler","promise","resolve","reject","call","batch","rpcStateOverride","parseStateOverride","shouldPerformMulticall","scheduleMulticall","response","getRevertErrorData","offchainLookup","offchainLookupSignature","request_","batchSize","multicallAddress_","multicallAddress","schedule","requests","calls","returnData","success","parseStateMapping","parseAccountStateOverride","stateDiff","rpcAccountStateOverride","accountState","readContract","getEnsAddress","coinType","gatewayUrls","universalResolverAddress_","universalResolverAddress","functionData","readContractParameters","readContractAction","res","EnsAvatarInvalidMetadataError","EnsAvatarInvalidNftUriError","EnsAvatarUriResolutionError","uri","EnsAvatarUnsupportedNamespaceError","namespace","networkRegex","ipfsHashRegex","base64Regex","dataURIRegex","isImageUri","contentType","img","getGateway","custom","defaultGateway","resolveAvatarUri","isEncoded","ipfsGateway","arweaveGateway","networkRegexMatch","protocol","subpath","subtarget","isIPNS","isIPFS","replacedUri","parsedUri","getJsonImage","getMetadataAvatarUri","parseAvatarUri","resolvedURI","isOnChain","parseNftUri","uri_","reference","asset_namespace","tokenID","eip_namespace","chainID","erc_namespace","getNftTokenUri","nft","parseAvatarRecord","record","parseNftAvatarUri","nftUri","resolvedNftUri","encodedJson","decoded","uriTokenId","getEnsText","getEnsAvatar","assetGatewayUrls","getEnsName","reverseNode","resolvedAddress","getEnsResolver","resolverAddress","createFilterRequestScope","method","requestMap","method_","transport","createBlockFilter","getRequest","FilterTypeNotSupportedError","encodeEventTopics","topics","indexedInputs","args_","encodeArg","createContractEventFilter","fromBlock","toBlock","createEventFilter","event","events_","events","createPendingTransactionFilter","estimateContractGas","getBalance","promiseCache","responseCache","getCache","cacheKey","buildCache","cache","withCache","cacheTime","getBlockNumber","getBlockTransactionCount","getBytecode","decodeEventLog","strict_","argTopics","inputs","isUnnamed","topic","decodeTopic","nonIndexedInputs","simulateContract","dataSuffix","callRequest","minimizedAbi","formatLog","log","listenersCache","cleanupCache","callbackCount","observe","observerId","callbacks","callbackId","getListeners","unsubscribe","listeners","unwatch","cleanup","emit","listener","time","poll","emitOnBegin","initialWaitTime","interval","initialWait","getFilterChanges","_client","filter","logs","formattedLogs","parseEventLogs","uninstallFilter","watchContractEvent","onError","onLogs","poll_","pollingInterval","previousBlockNumber","initialized","getContractEvents","unsubscribe_","writeContract","buffer","uid","createClient","config","extend","extendFn","extended","combined","withRetry","delay_","retryCount","shouldRetry","attemptRetry","retry","delay","buildRequest","overrideOptions","retryDelay","err_","retryAfter","createTransport","timeout","provider","defaultRetryCount","UrlRequiredError","withTimeout","errorInstance","signal","timeoutId","controller","createIdStore","idCache","getHttpRpcClient","fetchOptions","signal_","http","retryCount_","timeout_","url_","rpcClient","formatFeeHistory","feeHistory","reward","getFeeHistory","blockCount","rewardPercentiles","getFilterLogs","OffchainLookupError","callbackSelector","extraData","urls","OffchainLookupResponseMalformedError","OffchainLookupSenderMismatchError","isAddressEqual","offchainLookupAbiItem","callData","ccipFetch","data_","defineChain","bytesRegex","integerRegex","hashTypedData","domain","primaryType","getTypesForEIP712Domain","validateTypedData","hashDomain","hashStruct","encodeData","encodedTypes","encodedValues","hashType","field","encodeField","encodedHashType","encodeType","unsortedDeps","findTypeDependencies","deps","primaryType_","results","parsedType","typeValuePairs","validateData","struct","integerMatch","_type","bytesMatch","statuses","formatTransactionReceipt","transactionReceipt","receipt","presignMessagePrefix","hashMessage","messageBytes","prefixBytes","formatStorageProof","storageProof","proof","formatProof","getProof","storageKeys","getStorageAt","getTransaction","getTransactionConfirmations","transactionBlockNumber","getTransactionReceipt","multicall","allowFailure","batchSize_","contracts","chunkedCalls","currentChunk","currentChunkSize","aggregate3Results","aggregate3Result","universalSignatureValidatorByteCode","equalBytes","b1","b2","isBytesEqual","a_","b_","verifyHash","signatureHex","verifyMessage","verifyTypedData","watchBlockNumber","emitMissed","onBlockNumber","enablePolling","prevBlockNumber","waitForTransactionReceipt","confirmations","onReplaced","replacedTransaction","retrying","_unobserve","_unwatch","blockNumber_","done","replacementTransaction","from","watchBlocks","onBlock","prevBlock","watchEvent","getLogs","watchPendingTransactions","onTransactions","hashes","publicActions","createPublicClient","getAddresses","getPermissions","requestAddresses","requestPermissions","permissions","signMessage","message_","signTransaction","formatters","signTypedData","typedData","switchChain","watchAsset","walletActions","actionFn","action_implicit","action_explicit","__classPrivateFieldGet","receiver","kind","_BaseError_instances","_BaseError_walk","ChainNotConfiguredError","ConnectorAlreadyConnectedError","ConnectorNotConnectedError","ConnectorAccountNotFoundError","connector","ConnectorChainMismatchError","connectionChainId","connectorChainId","ConnectorUnavailableReconnectingError","connect","accounts","getConnectorClient","connection","disconnect","connections","nextConnection","getUnit","getAccount","addresses","viem_multicall","viem_readContract","readContracts","contractsByChainId","promises","multicallResults","resultIndexes","tokenAddress","getTokenBalance","symbol","viem_getBalance","balanceAddress","symbolType","deepEqual","previousChains","getChains","chains","getClient","previousConnections","getConnections","previousConnectors","getConnectors","connectors","viem_getEnsAvatar","viem_getEnsName","getPublicClient","getWalletClient","isReconnecting","reconnect","connector_","recentConnectorId","scores","sorted","connected","providers","viem_signMessage","ProviderNotFoundError","SwitchChainNotSupportedError","addEthereumChainParameter","watchAccount","onChange","aConnector","aRest","bConnector","bRest","watchChainId","watchConnections","watchConnectors","prevConnectors","watchPublicClient","createConnector","createConnectorFn","supportsSimulationIdRegex","injected","shimDisconnect","unstable_shimAsyncInject","getTarget","targetMap","window","accountsChanged","chainChanged","hexChainId","findProvider","handleEthereum","blockExplorer","blockExplorerUrls","addEthereumChain","connectInfo","flags","flag","select","isProvider","ethereum","requestProviders","handler","createStore","providerDetails","providerDetail","info","rdns","emitImmediately","subscribeWithSelectorImpl","set","get","api","origSubscribe","selector","optListener","equalityFn","currentSlice","nextSlice","previousSlice","subscribeWithSelector","createJSONStorage","getStorage","storage","parse","str2","newValue","toThenable","onFulfilled","_onRejected","_onFulfilled","onRejected","persistImpl","baseOptions","persistedState","currentState","hasHydrated","hydrationListeners","finishHydrationListeners","setItem","savedSetState","replace","configResult","stateFromStorage","hydrate","_a2","postRehydrationCallback","deserializedStorageValue","migrationResult","migrated","migratedState","newOptions","persist","createStoreImpl","createState","setState","partial","nextState","previousState","getState","initialState","has","Events","EE","context","once","addListener","emitter","evt","clearEvent","EventEmitter","names","handlers","a1","a2","a3","a4","a5","module","Emitter","createEmitter","deserialize","reviver","getReferenceKey","cutoff","getCutoff","array","createReplacer","circularReplacer","hasReplacer","hasCircularReplacer","thisCutoff","valueCutoff","serialize","indent","createStorage","deserialize_","serialize_","noopStorage","unwrap","defaultValue","unwrapped","storageKey","createConfig","multiInjectedProviderDiscovery","syncConnectedChain","ssr","mipd","createMipd","collection","rdnsSet","connectorFns","setup","providerDetailToConnector","connectorFn","clients","store","chainIds","getInitialState","currentVersion","validatePersistedChainId","defaultChainId","connectorIdSet","connectorRdnsSet","newConnectors","change","newState","nextChains","reconnectOnMount","mipdConnectors","extractRpcUrls","fallbackUrl","Hydrate","children","onMount","useRef","useEffect","WagmiContext","createContext","WagmiProvider","createElement","CoreError","WagmiProviderNotFoundError","useConfig","useContext","watchChains","prevChains","useSyncExternalStoreShim_production_min","shimModule","withSelector_production_min","withSelectorModule","isPlainObject","useSyncExternalStoreWithTracked","subscribe","getSnapshot","getServerSnapshot","isEqual","trackedKeys","useSyncExternalStoreWithSelector","useMemo","trackedResult","useAccount","useAccountEffect","onConnect","onDisconnect","prevData","isReconnected","Subscribable","isServer","noop","functionalUpdate","updater","isValidTimeout","timeUntilStale","updatedAt","staleTime","matchQuery","filters","query","exact","fetchStatus","predicate","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","mutationKey","hashKey","replaceEqualDeep","isPlainArray","aItems","aSize","bItems","bSize","copy","equalItems","shallowEqualObjects","hasObjectPrototype","ctor","prot","sleep","ms","replaceData","addToEnd","items","newItems","addToStart","skipToken","FocusManager","__privateAdd","_focused","_cleanup","_setup","__privateSet","onFocus","__privateGet","focused","focusManager","OnlineManager","_online","onOnline","onlineListener","offlineListener","online","onlineManager","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","isCancelledError","createRetryer","isRetryCancelled","isResolved","continueFn","promiseResolve","promiseReject","outerResolve","outerReject","cancel","cancelOptions","cancelRetry","continueRetry","shouldPause","pause","continueResolve","canContinue","run","promiseOrValue","createNotifyManager","queue","notifyFn","callback","batchNotifyFn","scheduleFn","batchCalls","originalQueue","notifyManager","Removable","_gcTimeout","newGcTime","Query","_Query_instances","_initialState","_revertState","_cache","_promise","_retryer","_observers","_defaultOptions","_abortSignalConsumed","__privateMethod","setOptions_fn","getDefaultState","newData","dispatch_fn","setStateOptions","observer","abortController","queryFnContext","addSignalProperty","object","fetchFn","reducer","hasData","initialDataUpdatedAt","QueryCache","_queries","queryHash","queryInMap","defaultedFilters","queries","Mutation","_Mutation_instances","_mutationCache","variables","executeMutation","restored","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","MutationCache","_mutations","_mutationId","_resuming","__privateWrapper","pausedMutations","infiniteQueryBehavior","pages","direction","oldPages","oldPageParams","empty","cancelled","queryFn","fetchPage","previous","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","QueryClient","_queryCache","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","cachedData","defaultedOptions","queryCache","refetchFilters","defaultedCancelOptions","defaults","queryDefault","QueryObserver","_QueryObserver_instances","_currentQuery","_currentQueryInitialState","_currentResult","_currentResultState","_currentResultOptions","_selectError","_selectFn","_selectResult","_lastQueryWithDefinedData","_staleTimeoutId","_refetchIntervalId","_currentRefetchInterval","_trackedProps","shouldFetchOnMount","executeFetch_fn","updateTimers_fn","shouldFetchOn","clearStaleTimeout_fn","clearRefetchInterval_fn","notifyOptions","prevOptions","prevQuery","updateQuery_fn","mounted","shouldFetchOptionally","updateStaleTimeout_fn","nextRefetchInterval","computeRefetchInterval_fn","updateRefetchInterval_fn","shouldAssignObserverCurrentProperties","onPropTracked","prevResult","prevResultState","prevResultOptions","queryInitialState","errorUpdatedAt","isPlaceholderData","fetchOnMount","fetchOptionally","selectError","placeholderData","isFetching","isPending","isError","isLoading","isStale","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","notify_fn","nextInterval","shouldLoadOnMount","optimisticResult","MutationObserver","_MutationObserver_instances","_currentMutation","_mutateOptions","updateResult_fn","hashFn","filterQueryOptions","_defaulted","behavior","gcTime","initialData","meta","queryKeyHashFn","structuralSharing","initialPageParam","_optimisticResults","enabled","refetchInterval","refetchIntervalInBackground","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","retryOnMount","suspense","throwOnError","connectMutationOptions","disconnectMutationOptions","getBalanceQueryOptions","getBalanceQueryKey","getConnectorClientQueryOptions","getConnectorClientQueryKey","getEnsAvatarQueryOptions","getEnsAvatarQueryKey","getEnsNameQueryOptions","getEnsNameQueryKey","getWalletClientQueryOptions","getWalletClientQueryKey","signMessageMutationOptions","switchChainMutationOptions","QueryClientContext","React.createContext","useQueryClient","queryClient","React.useContext","QueryClientProvider","React.useEffect","jsx","IsRestoringContext","useIsRestoring","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","shouldThrowError","throwError","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","ensureStaleTime","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","isRestoring","React.useState","React.useSyncExternalStore","React.useCallback","onStoreChange","useQuery","useMutation","mutate","mutateOptions","tanstack_useQuery","useChainId","useSyncExternalStore","useBalance","useChains","useConnectors","useConnect","mutationOptions","mutateAsync","previousStatus","useConnections","useConnectorClient","activeConnector","addressRef","previousAddress","useDisconnect","useEnsAvatar","useEnsName","usePublicClient","useSignMessage","useSwitchChain","useWalletClient","clsx","COMPRESSED$1","FENCED","NSM_MAX","decode_arithmetic","u16","symbol_count","total","skip","pos_payload","read_width","read_buffer","read_bit","FULL","HALF","QRTR","MASK","register","symbols","low","range","mid","read_payload","read_compressed_payload","unsafe_atob","lookup","ret","width","carry","read_deltas","next","read_sorted","prev","read_sorted_arrays","read_array_while","read_mapped","read_linear_table","read_replacement_table","read_transposed","dx","dy","vN","ys","j_dy","read_trie","expand","decode","cps","saved","br","cp","hex_cp","quote_cp","explode_cp","str_from_cps","buf","compare_arrays","COMPRESSED","S0","L0","V0","T0","L_COUNT","V_COUNT","T_COUNT","N_COUNT","S_COUNT","S1","L1","V1","T1","unpack_cc","packed","unpack_cp","SHIFTED_RANK","EXCLUSIONS","DECOMP","RECOMP","init$1","bucket","is_hangul","compose_pair","recomp","decomposed","check_order","add","s_index","l_index","v_index","t_index","mapped","prev_cc","composed_from_decomposed","stack","prev_cp","composed","nfd","nfc","HYPHEN","STOP_CH","FE0F","UNIQUE_PH","Array_from","group_has_cp","MAPPED","IGNORED","CM","NSM","ESCAPE","GROUPS","WHOLE_VALID","WHOLE_MAP","VALID","EMOJI_LIST","EMOJI_ROOT","init","read_sorted_array","read_sorted_set","chunks","unrestricted","read_chunked","wholes","recs","gs","rec","union","complement","multi","add_to_union","Emoji","node","child","quoted_cp","should_escape","bidi_qq","safe_str_from_cps","check_label_extension","check_leading_underscore","check_fenced","error_placement","last","quoter","is_combining_mark","ens_normalize","flatten","filter_fe0f","tokens","tokens_from_str","token_count","norm","chars","unique","determine_group","check_group","check_whole","group","maker","shared","whole","groups","error_group_member","error_disallowed","quoted","where","emoji","consume_emoji_reversed","eaten","normalize","arbitrum","avalanche","avalancheFuji","mainnet","extendStatics","__extends","__","__assign","__rest","__decorate","decorators","desc","__param","paramIndex","decorator","__esDecorate","descriptorIn","contextIn","initializers","extraInitializers","accept","descriptor","__runInitializers","thisArg","useValue","__propKey","__setFunctionName","__metadata","metadataKey","metadataValue","__awaiter","_arguments","generator","adopt","fulfilled","step","rejected","__generator","verb","op","__createBinding","k2","__exportStar","__values","__read","ar","__spread","__spreadArrays","__spreadArray","pack","__await","__asyncGenerator","resume","settle","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__importDefault","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","env","async","dispose","_SuppressedError","suppressed","__disposeResources","fail","tslib_es6","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","ref","useCallbackRef","initialValue","useState","useMergeRefs","refs","ItoI","innerCreateMedium","middleware","assigned","medium","cbs","pendingQueue","executeQueue","cycle","createSidecarMedium","SideCar","sideCar","Target","React.createElement","exportSidecar","exported","effectCar","nothing","RemoveScroll","React.forwardRef","parentRef","React.useRef","setCallbacks","forwardProps","className","removeScrollBar","shards","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","React.Fragment","React.cloneElement","React.Children","getNonce","makeStyleTag","tag","injectStyles","css","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","style","styleHookSingleton","sheet","styles","isDynamic","styleSingleton","useStyle","Sheet","zeroGap","getOffset","cs","left","top","right","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","gap","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noRelative","noImportant","React.useMemo","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","ownerDocument","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","scroll_1","capacity","elementScroll","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","getVarName","variable","path","walkObject","clone","currentPath","assignInlineVars","varsOrContract","_contract","varName","_vars","undefined","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","regexes","extensions","mergedRegexes","enumerize","enums","str1","lowerize","majorize","rgxMapper","arrays","strMapper","map","oldSafariMap","windowsVersionMap","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","_browser","_cpu","_device","_engine","_os","$","parser","this","canPromise","toSJISFunction","CODEWORDS_COUNT","utils","digit","kanji","fromString","BitBuffer","bufIndex","num","bit","bitBuffer","BitMatrix","row","col","reserved","bitMatrix","getSymbolSize","posCount","intervals","positions","coords","posLength","FINDER_PATTERN_SIZE","finderPattern","PenaltyScores","mask","points","sameCountCol","sameCountRow","lastCol","lastRow","bitsCol","bitsRow","darkCount","modulesCount","getMaskAt","maskPattern","pattern","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","errorCorrectionCode","errorCorrectionLevel","EXP_TABLE","LOG_TABLE","galoisField","GF","p1","p2","coeff","divident","divisor","degree","poly","Polynomial","ReedSolomonEncoder","paddedData","remainder","buff","reedSolomonEncoder","versionCheck","numeric","alphanumeric","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","VersionCheck","Regex","mode","dataStr","Utils","ECCode","require$$2","Mode","require$$3","require$$4","G18","G18_BCH","getBestVersionForDataLength","getReservedBitsCount","getTotalBitsFromDataArray","segments","totalBits","reservedBits","getBestVersionForMixedData","totalCodewords","ecTotalCodewords","dataTotalCodewordsBits","usableBits","seg","ecl","G15","G15_MASK","G15_BCH","formatInfo","NumericData","remainingNum","numericData","ALPHA_NUM_CHARS","AlphanumericData","alphanumericData","ByteData","byteData","KanjiData","kanjiData","dijkstra","graph","predecessors","costs","open","closest","cost_of_s_to_u","adjacent_nodes","cost_of_e","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","first_visit","nodes","cost","require$$5","require$$6","require$$7","getStringByteLength","getSegments","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","s1","s2","getSegmentBitsLength","mergeSegments","segs","curr","prevSeg","buildNodes","buildGraph","table","prevNodeIds","nodeGroup","currentNodeIds","prevNodeId","buildSingleSegment","modesHint","bestMode","optimizedSegs","AlignmentPattern","FinderPattern","MaskPattern","require$$8","Version","require$$9","FormatInfo","require$$10","require$$11","Segments","require$$12","setupFinderPattern","matrix","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","bits","setupFormatInfo","setupData","inc","bitIndex","byteIndex","dark","createData","remainingByte","createCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup2","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","createSymbol","estimatedVersion","rawSegments","bestVersion","dataBits","moduleCount","modules","qrcode","hex2rgba","hexCode","margin","scale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","iSrc","jSrc","clearCanvas","ctx","canvas","getCanvasElement","qrData","canvasEl","image","rendererOpts","getColorAttrib","color","attrib","alpha","svgCmd","cmd","qrToPath","moveBy","newRow","lineLength","svgTag","qrcodesize","viewBox","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","text","argsNum","isLastArgCb","browser","coinbaseWallet","version3","version4","sdk","walletProvider","CoinbaseWalletSDK","SDK","_error","__vitePreload","walletExtensionChainId","jsonRpcUrl","safe","provider_","SafeAppProvider","Provider","walletConnect","isNewChainsStale","providerPromise","NAMESPACE","displayUri","sessionDelete","targetChainId","isChainsStale","optionalChains","optionalChain","initProvider","EthereumProvider","requestedChains","connectorChains","namespaceChains","largeScreenMinWidth","_51c72","normalizeResponsiveValue","_a49f6","sprinkles","_ad221","themeVars","hover","touchableStyles","active2","hover2","AuthenticationContext","useAuthenticationAdapter","adapter","useAuthenticationStatus","contextValue","useConnectionStatus","authenticationStatus","isConnected","useAccount2","isAndroid","isSmallIOS","isLargeIOS","isIOS","isMobile","base2","element","atoms","reset","elementReset","sprinklesClasses","Box","React2","as","testId","atomProps","nativeProps","atomicClasses","clsx2","cachedUrls","cachedRequestPromises","loadAsyncImage","asyncImage","cachedRequestPromise","load","requestPromise","_err","_err2","loadImages","useForceUpdate","forceUpdate","useReducer","useAsyncImage","cachedUrl","useEffect2","AsyncImage","alt","background","borderColor","useAsImage","boxShadow","height","srcProp","ios","src7","isRemoteImage","isRemoteImageLoaded","setRemoteImageLoaded","useReducer2","React3","SpinnerIconClassName","SpinnerIconPathClassName","useRandomId","useMemo2","SpinnerIcon","React4","colors","avatars","hashCode","chr","emojiAvatarForAddress","avatarIndex","EmojiAvatar","ensImage","loaded","setLoaded","useState2","useEffect3","backgroundColor","useMemo3","React5","defaultAvatar","AvatarContext","createContext2","Avatar","imageUrl","loading","AvatarComponent","useContext2","React6","defaultOptions","I18n","localeTranslations","locale","translation","translationObject","currentTranslationObj","parentKey","newKey","currentValue","replacements","translatedString","placeholder","replacementValue","translationKey","fallbackTranslationKey","fallbackTranslation","translations","i18n","fetchTranslations","__vite_default__","setLocale","detectedBrowserLocale","I18nContext","createContext3","I18nProvider","updateCount","setUpdateCount","useState3","browserLocale","useMemo4","useEffect4","memoizedValue","React8","isNotNullish","arbitrumIcon","avalancheIcon","baseIcon","blastIcon","bscIcon","celoIcon","cronosIcon","ethereumIcon","gnosisIcon","hardhatIcon","klaytnIcon","optimismIcon","mantaIcon","mantleIcon","polygonIcon","xdcIcon","zetachainIcon","zkSyncIcon","zoraIcon","roninIcon","chainMetadataByName","chainMetadataById","metadata","provideRainbowKitChains","defaultMetadata","RainbowKitChainContext","createContext4","RainbowKitChainProvider","initialChain","React9","useMemo5","useRainbowKitChains","useContext3","useInitialChainId","useRainbowKitChainsById","rainbowkitChains","rainbowkitChainsById","rkChain","ShowBalanceContext","createContext5","ShowBalanceProvider","showBalance","setShowBalance","useState4","React10","useShowBalance","useContext4","useIsMounted","isMounted","setIsMounted","useState5","useEffect5","useCallback","useIsMainnetConfigured","rainbowKitChains","rainbowKitChain","useMainnetEnsAvatar","mainnetConfigured","safeNormalize","ensName","ensAvatar","mainnet2","rainbowFetch","otherOpts","requestBody","createParams","responseBody","getBody","headers2","generateError","RainbowFetchClient","baseUrl","createHttpClient","ENHANCED_PROVIDER_ENABLED","define_process_env_default","enhancedProviderHttp","createQueryKey","getStorageEnsNameKey","safeParseJsonData","addEnsName","now","expiry","expires","getEnhancedProviderEnsName","enhancedProviderEnsName","useMainnetEnsName","mainnet3","useProfile","includeBalance","activeChain","useAccount3","safeParseJsonData2","loadData","transactionHashRegex","validateTransaction","errors","createTransactionStore","initialProvider","transactionListeners","transactionRequestCache","setProvider","newProvider","getTransactions","addTransaction","updateTransactions","clearTransactions","setTransactionStatus","waitForPendingTransactions","existingRequest","notifyTransactionListeners","updateFn","completedTransactionCount","MAX_COMPLETED_TRANSACTIONS","persistData","notifyListeners","txStatus","transactionListener","onTransactionStatus","storeSingleton","TransactionStoreContext","React11","TransactionStoreProvider","useAccount4","refetch","useBalance2","useTransactionStore","useRecentTransactions","useAccount5","setTransactions","useState6","useEffect6","resolveThemeVars","theme","cssObjectFromTheme","resolvedThemeVars","resolvedBaseThemeVars","cssStringFromTheme","defaultAppInfo","AppContext","createContext6","CoolModeContext","createContext7","debounce","timer","useWindowSize","windowSize","setWindowSize","useState7","useEffect7","handleResize","WalletButtonContext","createContext8","WalletButtonProvider","setConnector","useState8","React12","useMemo6","ModalSizeOptions","ModalSizeContext","createContext9","ModalSizeProvider","modalSize","isSmallScreen","useContext5","React13","ShowRecentTransactionsContext","createContext10","storageKey2","setRainbowKitVersion","useFingerprint","fingerprint","useCallback2","useEffect8","indexBy","getKey","indexedItems","isSafari","isArc","getBrowser","ua2","os","isWindows","isMacOS","isLinux","getPlatform","getExtensionDownloadUrl","wallet","getMobileDownloadUrl","getDesktopDownloadUrl","platform","isRecentWallet","recentWallets","walletId","recentWallet","isRainbowKitConnector","isEIP6963Connector","rainbowKitConnectorWithWalletConnect","walletConnectModalConnector","connectorsWithRecentWallets","wallets","storageKey3","safeParseJsonArray","getRecentWalletIds","dedupe","addRecentWalletId","useWalletConnectors","mergeEIP6963WithRkConnectors","intialChainId","connectAsync","defaultConnectors_untyped","defaultCreatedConnectors","setIsWalletConnectModalOpen","useWalletConnectOpenState","defaultConnectors","connectWallet","walletChainId","connectToWalletConnectModal","walletConnectModalConnector2","isUserRejection","getWalletConnectUri","uriConverter","eip6963Connectors","rainbowKitConnectors","eip6963","combinedConnectors","walletInstanceById","walletInstance","walletConnectors","combinedConnectorsWithRecentWallets","recent","src","preloadAssetsIcon","AssetsIcon","React14","src2","preloadLoginIcon","LoginIcon","React15","Text","React16","font","tabIndex","textAlign","weight","sizeVariants","ActionButton","disabled","href","onClick","rel","isPrimary","isNotLarge","mobile","fontSize","paddingX","paddingY","hasBorder","React17","CloseIcon","React18","CloseButton","ariaLabel","onClose","React19","signInIcon","SignIn","onCloseModal","i18n2","useContext6","React20","authAdapter","useCallback3","onceRef","useAccount6","signMessageAsync","signIn","usePreloadImages","isUnauthenticated","preloadImages","useCallback4","useEffect9","storageKey4","setWalletConnectDeepLink","mobileUri","clearWalletConnectDeepLink","ThemeIdContext","createContext11","attr","createThemeRootProps","createThemeRootSelector","useThemeRootProps","useContext7","defaultTheme","RainbowKitProvider","appInfo","avatar","coolMode","showRecentTransactions","useAccountEffect2","appContext","avatarContext","React21","ModalProvider","content","overlay","moveFocusWithin","element2","focusableElements","FocusTrap","contentRef","useRef2","useEffect10","previouslyActiveElement","elementToFocus","React22","useCallback5","stopPropagation","Dialog","titleId","useEffect11","handleEscape","bodyScrollable","setBodyScrollable","useState9","handleBackdropClick","useCallback6","themeRootProps","React23","createPortal","bottomSheetOverrides","dialogContent","dialogContentCompactMode","dialogContentMobile","dialogContentWideDesktop","dialogContentWideMobile","DialogContent","bottomSheetOnMobile","marginTop","padding","paddingBottom","wide","compactModeEnabled","useContext8","React24","units","toPrecision","precision","abbreviateETHBalance","decimalsDivisor","formatAddress","formatENS","CopiedIcon","React25","CopyIcon","React26","DisconnectIcon","React27","useClearRecentTransactions","useAccount7","useCallback7","chainToExplorerUrl","ExternalLinkIcon","React28","CancelIcon","React29","SuccessIcon","React30","getTxStatusIcon","TxItem","tx","Icon","useAccount8","confirmationStatus","explorerLink","React31","NUMBER_OF_VISIBLE_TXS","TxList","recentTransactions","clearRecentTransactions","useAccount9","visibleTxs","hasTransactions","appName","useContext9","React32","ProfileDetailsAction","icon","React33","ProfileDetails","useContext10","copiedAddress","setCopiedAddress","useState10","copyAddressAction","useCallback8","useEffect12","accountName","ethBalance","displayBalance","React34","AccountModal","useAccount10","React35","DisconnectSqIcon","React36","unsetBackgroundOnHover","MenuButton","React37","currentlySelected","urlProps","Chain","chainIconSize","iconBackground","idx","useContext11","isCurrentChain","React38","Fragment","Chain_default","DesktopScrollClassName","MobileScrollClassName","ChainModal","useAccount11","useConfig2","pendingChainId","setPendingChainId","useState11","_chainId","useContext12","useDisconnect2","isCurrentChainSupported","React39","iconUrl","groupBy","groupedItems","DisclaimerLink","React40","DisclaimerText","React41","ConnectModalIntro","getWallet","Disclaimer","learnMoreUrl","useContext13","React42","BackIcon","React43","InfoIcon","React44","InfoButton","React45","useCoolMode","useRef3","coolModeEnabled","useContext14","resolvedImageUrl","useEffect13","makeElementCool","getContainer","existingContainer","container","instanceCounter","sizes","particles","autoAddParticle","mouseX","mouseY","createParticle","speedHorz","speedUp","spinVal","spinSpeed","particle","updateParticles","animationFrame","loop","isTouchInteraction","tap","tapEnd","move","updateMousePosition","tapHandler","disableAutoAddParticle","transparentBorder","ModalSelection","ready","isRainbowKitConnector2","coolModeRef","isMouseOver","setIsMouseOver","React46","storageKey5","addLatestWalletId","convertHexToRGBA","opacity","getGradientRGBAs","hexColor","isHexString","src3","preloadConnectIcon","ConnectIcon","React47","src4","preloadCreateIcon","CreateIcon","React48","src5","preloadRefreshIcon","RefreshIcon","React49","src6","preloadScanIcon","ScanIcon","React50","QRCodeBackgroundClassName","ScrollClassName","sidebar","sidebarCompactMode","generateMatrix","QRCodeUtil","sqrt","rows","logoBackground","logoMargin","logoSize","logoUrl","sizeProp","dots","useMemo7","dots2","cellSize","x1","y1","React51","clearArenaSize","matrixMiddleStart","matrixMiddleEnd","logoPosition","logoWrapperSize","getBrowserSrc","preloadBrowserIcon","getPlatformSrc","preloadPlatformIcon","GetDetail","getWalletDownload","shownWallets","useContext15","React52","downloadUrls","qrCode","hasMobileCompanionApp","hasExtension","hasMobileAndExtension","hasMobileAndDesktop","LOGO_SIZE","ConnectDetail","changeWalletStep","connectionError","qrCodeUri","showWalletConnectModal","getDesktopUri","isDesktopDeepLinkAvailable","safari","hasQrCodeAndExtension","hasQrCodeAndDesktop","hasQrCode","onDesktopUri","secondaryAction","smallWindow","useEffect14","DownloadOptionsBox","actionLabel","iconAccent","isCompact","onAction","title","variant","isBrowserCard","gradientRgbas","DownloadOptionsDetail","desktop","desktopDownloadUrl","extension","extensionDownloadUrl","mobileDownloadUrl","DownloadDetail","stepIcons","InstructionMobileDetail","InstructionExtensionDetail","InstructionDesktopDetail","DesktopOptions","selectedOptionId","setSelectedOptionId","useState12","selectedWallet","setSelectedWallet","setQrCodeUri","setConnectionError","useContext16","useRef4","unfilteredWallets","groupedWallets","supportedI18nGroupNames","useEffect15","selectWallet","connectToWallet","sWallet","onQrCode","isMobile2","isDesktop","isExtension","clearSelectedWallet","newWalletStep","isBack","initialWalletStep","setInitialWalletStep","setWalletStep","walletStep","walletContent","headerLabel","headerBackButtonLink","headerBackButtonCallback","hasExtensionAndMobile","React53","groupName","wallets2","Fragment2","rotatingBorder","scroll","spinner","LoadingSpinner","React54","WalletButton","connecting","getMobileUri","shortName","useRef5","useContext17","useCallback9","link","useEffect16","MobileOptions","headerBackgroundContrast","useState13","mobileWallets","MobileStatus","useContext18","connectorName","React55","ConnectOptions","useContext19","React56","ConnectModal","connectionStatus","useDisconnect3","isConnecting","useAccount12","onAuthCancel","React57","onConnectModalCancel","useModalStateValue","isModalOpen","setModalOpen","useState14","useCallback10","ModalContext","createContext12","closeConnectModal","connectModalOpen","openConnectModal","closeAccountModal","accountModalOpen","openAccountModal","closeChainModal","chainModalOpen","openChainModal","isWalletConnectModalOpen","useAccount13","useConfig3","closeModals","keepConnectModalOpen","useAccountEffect3","useEffect17","React58","useMemo8","useModalState","useContext20","useAccountModal","useChainModal","useConnectModal","ConnectButtonRenderer","useAccount14","wagmiChains","useConfig4","chainName","chainIconUrl","chainIconBackground","resolvedChainIconUrl","useContext21","hasPendingTransactions","shouldShowBalance","React59","computeWalletConnectMetaData","appDescription","appUrl","appIcon","omitUndefinedValues","uniqueBy","filtered","connectorsForWallets","walletList","projectId","walletConnectParameters","visibleWallets","potentiallyHiddenWallets","walletConnectMetaData","groupIndex","createWallet","walletListItem","walletListItems","createConnector5","hidden","walletMeta","walletMetaData","additionalRkParams","walletConnectInstances","getOrCreateWalletConnectInstance","rkDetailsShowQrModal","serializedConfig","sharedWalletConnector","newWalletConnectInstance","createWalletConnectConnector","walletDetails","getWalletConnectConnector","exampleProjectId","getExplicitInjectedProvider","_window","getWindowProviderNamespace","providerSearch","namespace2","_provider","hasInjectedProvider","getInjectedProvider","windowProvider","createInjectedConnector","injectedConfig","getInjectedConnector","getUri","coinbaseConnector","isMetaMask","metaMaskWallet","isMetaMaskInjected","shouldUseWalletConnect","rainbowWallet","isRainbowInjected","safeWallet","walletConnectWallet","createDefaultTransports","getDefaultConfig","wagmiParameters","transports","restWagmiParameters","listCacheClear","_listCacheClear","eq","other","eq_1","assocIndexOf","_assocIndexOf","arrayProto","splice","listCacheDelete","_listCacheDelete","listCacheGet","_listCacheGet","listCacheHas","_listCacheHas","listCacheSet","_listCacheSet","ListCache","entry","_ListCache","stackClear","_stackClear","stackDelete","_stackDelete","stackGet","_stackGet","stackHas","_stackHas","freeGlobal","global","_freeGlobal","freeSelf","root","_root","Symbol","_Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","unmasked","_getRawTag","objectToString","_objectToString","nullTag","undefinedTag","baseGetTag","_baseGetTag","isObject","isObject_1","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction_1","coreJsData","_coreJsData","maskSrcKey","isMasked","func","_isMasked","funcProto","funcToString","toSource","_toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","_baseIsNative","getValue","_getValue","getNative","_getNative","Map","_Map","nativeCreate","_nativeCreate","hashClear","_hashClear","hashDelete","_hashDelete","HASH_UNDEFINED","hashGet","_hashGet","hashHas","_hashHas","hashSet","_hashSet","_Hash","mapCacheClear","_mapCacheClear","isKeyable","_isKeyable","getMapData","_getMapData","mapCacheDelete","_mapCacheDelete","mapCacheGet","_mapCacheGet","mapCacheHas","_mapCacheHas","mapCacheSet","_mapCacheSet","MapCache","_MapCache","LARGE_ARRAY_SIZE","stackSet","pairs","_stackSet","Stack","_Stack","defineProperty","baseAssignValue","_baseAssignValue","createBaseFor","fromRight","iteratee","keysFunc","iterable","_createBaseFor","baseFor","_baseFor","freeExports","freeModule","moduleExports","Buffer","allocUnsafe","cloneBuffer","isDeep","Uint8Array","_Uint8Array","cloneArrayBuffer","arrayBuffer","_cloneArrayBuffer","cloneTypedArray","typedArray","_cloneTypedArray","copyArray","source","_copyArray","objectCreate","baseCreate","proto","_baseCreate","overArg","transform","_overArg","getPrototype","_getPrototype","isPrototype","Ctor","_isPrototype","initCloneObject","_initCloneObject","isObjectLike","isObjectLike_1","argsTag","baseIsArguments","_baseIsArguments","propertyIsEnumerable","isArguments","isArguments_1","isArray","isArray_1","MAX_SAFE_INTEGER","isLength","isLength_1","isArrayLike","isArrayLike_1","stubFalse","stubFalse_1","nativeIsBuffer","isBuffer","objectTag","objectCtorString","isPlainObject_1","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","_baseIsTypedArray","baseUnary","_baseUnary","freeProcess","nodeUtil","nodeIsTypedArray","isTypedArray","isTypedArray_1","assignValue","objValue","_assignValue","copyObject","customizer","isNew","_copyObject","baseTimes","_baseTimes","reIsUint","isIndex","_isIndex","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","_arrayLikeKeys","nativeKeysIn","_nativeKeysIn","baseKeysIn","isProto","_baseKeysIn","keysIn","keysIn_1","identity","identity_1","apply","_apply","nativeMax","overRest","otherArgs","_overRest","constant","constant_1","baseSetToString","_baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","lastCalled","stamp","remaining","_shortOut","setToString","_setToString","baseRest","_baseRest","isIterateeCall","_isIterateeCall","reWhitespace","trimmedEndIndex","_trimmedEndIndex","reTrimStart","baseTrim","_baseTrim","symbolTag","isSymbol","isSymbol_1","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","isBinary","toNumber_1","INFINITY","MAX_INTEGER","toFinite","sign","toFinite_1","toInteger","toInteger_1","checkType","resolveProperties","accum","defineProperties","HEX","isCallException","makeError","assert","check","assertArgument","assertArgumentCount","expectedCount","_normalizeForms","form","assertNormalize","assertPrivate","givenGuard","guard","operation","_getBytes","getBytes","getBytesCopy","isBytesLike","HexCharacters","hexlify","datas","dataLength","dataSlice","stripZerosLeft","zeroPad","zeroPadValue","zeroPadBytes","BN_0","BN_1","fromTwos","_width","getUint","getNumber","toTwos","getBigInt","_bits","Nibbles","toBigInt","toBeHex","toBeArray","toQuantity","Alphabet","Lookup","getAlpha","letter","BN_58","encodeBase58","decodeBase58","decodeBase64","textData","encodeBase64","_data","EventPayload","__publicField","_listener","errorFunc","badCodepoint","ignoreFunc","replaceFunc","Utf8ErrorFuncs","getUtf8CodePoints","_bytes","extraLength","overlongMask","nextChar","toUtf8Bytes","c2","pair","_toUtf8String","codePoints","codePoint","toUtf8String","toUtf8CodePoints","createGetUrl","req","_signal","resp","respBody","MAX_ATTEMPTS","SLOT_INTERVAL","defaultGetUrlFunc","reData","reIpfs","locked","dataGatewayFunc","FetchResponse","unpercent","FetchRequest","getIpfsGatewayFunc","gatewayIpfs","Gateways","fetchSignals","FetchCancelSignal","_listeners","_cancelled","checkSignal","_FetchRequest","_FetchRequest_instances","_allowInsecure","_gzip","_headers","_method","_timeout","_url","_body","_bodyType","_creds","_preflight","_process","_retry","_throttle","_getUrlFunc","username","password","preflight","process","send_fn","getTime","scheme","attempt","_request","_response","_FetchResponse","statusCode","statusMessage","_statusCode","_statusMessage","stall","requestUrl","all","BN_N1","BN_5","_guard","Zeros","getTens","checkValue","safeOp","getFormat","toString","_FixedNumber","_FixedNumber_instances","_format","_val","_tens","add_fn","sub_fn","mul_fn","checkFormat_fn","checkValue_fn","div_fn","bump","tens","_decimals","decimal","FixedNumber","hexlifyByte","unarrayifyInteger","_decodeChildren","childOffset","_decode","checkOffset","lengthLength","decodeRlp","arrayifyInteger","_encode","payload","nibbles","encodeRlp","parseUnits","parseEther","ether","uuidV4","randomBytes","WordSize","Padding","passProperties","wrapped","_Result","wrap","_names","nameCounts","deep","Result","checkResultErrors","checkErrors","childPath","Coder","localName","Writer","_Writer_instances","_dataLength","writer","writeData_fn","paddingOffset","_Reader","allowLoose","maxInflation","_Reader_instances","_offset","_bytesRead","_parent","_maxInflation","reader","loose","peekBytes_fn","incrementBytesRead_fn","alignedLength","Reader","crypto","createView","rotr","word","nextTick","asyncLoop","iters","tick","ts","diff","sum","toStr","checkOpts","bytesLength","HMAC","assertHash","assertExists","assertBytes","oHash","iHash","finished","destroyed","hmac","pbkdf2Init","_password","_salt","_opts","dkLen","asyncTick","assertNumber","salt","DK","PRF","PRFSalt","pbkdf2Output","prfW","pbkdf2","view","setBigUint64","byteOffset","_u32_max","SHA2","padOffset","dataView","oview","outLen","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","W15","W2","s0","sigma1","T2","sha256","toBig","shrSH","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","rotr32L","Bl","add3L","Cl","add3H","add4L","Dl","add4H","add5L","El","add5H","u64","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","Fl","Gl","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","sha512","getGlobal","anyGlobal","createHash","algo","createHmac","_algo","pbkdf2Sync","iterations","keylen","_computeHmac","algorithm","__computeHmac","computeHmac","_keccak256","__keccak256","Rho","idxL","idxR","shifts","shiftsL","shiftsR","Kl","Kr","rotl","BUF","RIPEMD160","h0","h1","h2","h3","h4","cr","dr","er","rGroup","hbl","hbr","rr","sr","tr","ripemd160","_ripemd160","noble_ripemd160","__ripemd160","_pbkdf2","__pbkdf2","_randomBytes","crypto_random","__randomBytes","XorAndSalsa","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","BlockMix","tail","scryptInit","maxmem","onProgress","blockSize","blockSize32","memUsed","B32","blockMixCb","totalBlockMix","callbackPer","blockMixCnt","scryptOutput","scrypt","scryptAsync","lockedSync","lockedAsync","_scryptAsync","passwd","_nobleAsync","_scryptSync","_nobleSync","__scryptAsync","__scryptSync","_passwd","progress","scryptSync","_sha256","_sha512","__sha256","__sha512","locked256","locked512","numberToHexUnpadded","hexByte","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","numberToVarBytesBE","ensureBytes","bitLen","bitGet","bitSet","bitMask","u8n","u8fr","createHmacDrbg","hashLen","qByteLen","hmacFn","reseed","seed","pred","validatorFns","validateObject","validators","optValidators","checkField","fieldName","isOptional","checkVal","_3n","_4n","_5n","_8n","pow","power","modulo","pow2","invert","tonelliShanks","legendreC","p1div4","Fp","Q1div2","t2","FpSqrt","c1","n2","nv","FIELD_FIELDS","validateField","initial","FpPow","FpInvertBatch","nums","lastMultiplied","inverted","nLength","nBitLength","_nBitLength","nByteLength","Field","ORDER","redef","BITS","BYTES","sqrtP","lhs","rhs","getFieldBytesLength","fieldOrder","bitLength","getMinHashLength","mapHashToField","fieldLen","minLen","reduced","wNAF","constTimeNegate","neg","windows","elm","precomputes","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","precomputesMap","comp","validateBasic","curve","validatePointOpts","ut.validateObject","endo","b2n","h2b","ut","DER","sBytes","rBytesLeft","shl","rhl","weierstrassPoints","CURVE","point","_isCompressed","ut.concatBytes","fromBytes","weierstrassEquation","x2","x3","isWithinCurveOrder","assertGE","normPrivateKeyToScalar","wrapPrivateKey","ut.bytesToHex","ut.bytesToNumberBE","mod.mod","pointPrecomputes","assertPrjPoint","Point","px","py","pz","is0","toInv","privateKey","X1","Y1","Z1","X2","Y2","Z2","U1","U2","b3","X3","Y3","Z3","t0","t1","t3","t4","t5","wnaf","k1neg","k1","k2neg","k1p","k2p","scalar","fake","f1p","f2p","mul","iz","ax","ay","zz","cofactor","isTorsionFree","clearCofactor","isCompressed","validateOpts","weierstrass","curveDef","CURVE_ORDER","compressedLen","uncompressedLen","isValidFieldElement","modN","invN","mod.invert","cat","y2","isYOdd","numToNByteStr","ut.numberToBytesBE","isBiggerThanHalfOrder","normalizeS","slcNum","Signature","recovery","msgHash","bits2int_modN","radj","ir","u1","u2","ut.hexToBytes","mod.getMinHashLength","mod.mapHashToField","getPublicKey","isProbPub","getSharedSecret","privateA","publicB","bits2int","ORDER_MASK","ut.bitMask","int2octets","prepSig","defaultSigOpts","lowS","prehash","ent","h1int","seedArgs","k2sig","kBytes","normS","defaultVerOpts","privKey","ut.createHmacDrbg","verify","publicKey","_sig","derError","is","getHash","msgs","createCurve","defHash","create","secp256k1P","secp256k1N","divNearest","sqrtMod","_6n","_11n","_22n","_23n","_44n","_88n","b6","b9","b11","b22","b44","b88","b176","b220","b223","secp256k1","POW_2_128","ZeroAddress","ZeroHash","WeiPerEther","MaxUint256","MinInt256","MaxInt256","EtherSymbol","MessagePrefix","BN_2","BN_27","BN_28","BN_35","toUint256","_Signature","_networkV","yParityAndS","networkV","bv","assertError","yParity","_SigningKey","_privateKey","digest","pubKey","compressed","pub","secpSig","p0","pub0","pub1","SigningKey","lock","BN_36","getChecksumAddress","expanded","ibanLookup","safeDigits","ibanChecksum","checksum","Base36","fromBase36","getIcapAddress","base36","getCreateAddress","nonceHex","getCreate2Address","_from","_initCodeHash","initCodeHash","isAddressable","checkAddress","resolveAddress","resolver","_gaurd","Typed","_typedSymbol","_Typed","gaurd","_options","AddressCoder","AnonymousCoder","coder","coders","arrayValues","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","baseOffset","unpack","baseReader","offsetReader","ArrayCoder","defaultChild","BooleanCoder","DynamicBytesCoder","BytesCoder","FixedBytesCoder","Empty","NullCoder","BN_MAX_UINT256","NumberCoder","maxUintValue","bounds","StringCoder","TupleCoder","uniqueNames","set_add_many","checkComponent","ensNameSplit","ensNormalize","comps","isValidName","dnsEncode","_maxLength","accessSetify","addr","accessListify","computeAddress","pubkey","recoverAddress","BN_MAX_UINT","BLOB_SIZE","getVersionedHash","versioned","handleAddress","handleAccessList","handleNumber","handleUint","formatNumber","formatAccessList","formatHashes","_parseLegacy","fields","_serializeLegacy","legacy","_parseEipSignature","_parseEip1559","_serializeEip1559","_parseEip2930","_serializeEip2930","_parseEip4844","typeName","blobs","fBlobs","fCommits","fProofs","_serializeEip4844","_Transaction","_Transaction_instances","_to","_nonce","_gasLimit","_gasPrice","_maxPriorityFeePerGas","_maxFeePerGas","_accessList","_maxFeePerBlobGas","_blobVersionedHashes","_kzg","_blobs","versionedHashes","blob","padded","commit","kzg","getSerialized_fn","hasGasPrice","hasFee","hasAccessList","hasBlob","sidecar","Transaction","regexBytes","regexNumber","regexArray","_pack","baseType","solidityPacked","tight","solidityPackedKeccak256","solidityPackedSha256","BN__1","hexPadRight","hexTrue","hexFalse","domainFieldTypes","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","splitArray","_TypedDataEncoder","_types","_TypedDataEncoder_instances","_fullTypes","_encoderCache","links","parents","subtypes","primaryTypes","checkCircular","found","subtype","st","getEncoder_fn","domainFields","resolveName","ensCache","domainValues","domainTypes","typesWithDomain","subEncoder","encodedType","TypedDataEncoder","setify","_kwVisibDeploy","KwVisibDeploy","_kwVisib","KwVisib","_kwTypes","KwTypes","_kwModifiers","KwModifiers","_kwOther","_keywords","Keywords","SimpleTokens","regexWhitespacePrefix","regexNumberPrefix","regexIdPrefix","regexId","regexType","_TokenString","_TokenString_instances","_tokens","allowed","subTokenString_fn","token","TokenString","lex","brackets","commas","cur","allowSingle","included","consumeName","keyword","consumeKeywords","keywords","consumeMutability","modifiers","consumeParams","allowIndexed","ParamType","consumeGas","consumeEoi","regexArrayType","verifyBasicType","internal","ParamTypeInternal","ErrorFragmentInternal","EventFragmentInternal","ConstructorFragmentInternal","FallbackFragmentInternal","FunctionFragmentInternal","StructFragmentInternal","_ParamType","indexed","components","arrayLength","arrayChildren","_ParamType_instances","_this","walkAsync_fn","bracket","arrayMatch","setValue","childType","ConstructorFragment","ErrorFragment","EventFragment","FallbackFragment","FunctionFragment","StructFragment","NamedFragment","joinParams","anonymous","payable","stateMutability","errorObj","topIsValid","mutability","outputs","PanicReasons","paramTypeBytes","paramTypeNumber","defaultCoder","defaultMaxInflation","getBuiltinCallException","abiCoder","invocation","revert","_AbiCoder","_AbiCoder_instances","getCoder_fn","AbiCoder","encodeBytes32String","decodeBytes32String","LogDescription","fragment","TransactionDescription","ErrorDescription","Indexed","BuiltinErrors","_Interface","fragments","_Interface_instances","_errors","_events","_functions","_abiCoder","frags","fallback","receive","minimal","getFunction_fn","getEvent_fn","matching","matchStr","parsed","encodeTopic","dataTypes","dataValues","eventTopic","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","hexData","forceUnique","lastValue","valueLength","allowOptions","lastArg","Interface","toJson","FeeData","copyRequest","bigIntKeys","numberKeys","Block","_transactions","TransactionResponse","txs","difficulty","gasLimit","gasUsed","miner","prevRandao","parentHash","parentBeaconBlockRoot","stateRoot","receiptsRoot","timestamp","indexOrHash","createOrphanedBlockFilter","Log","removed","transactionHash","transactionIndex","createRemovedLogFilter","TransactionReceipt","_logs","logsBloom","createRemovedTransactionFilter","createReorderedTransactionFilter","_TransactionResponse","_startBlock","blobVersionedHashes","_confirms","confirms","startBlock","nextScan","stopScanning","checkReplacement","mined","checkReceipt","cancellers","txListener","replaceListener","EventLog","iface","UndecodedEventLog","ContractTransactionReceipt","_iface","ContractTransactionResponse","ContractUnknownEventPayload","ContractEventPayload","_log","canCall","canEstimate","canResolve","canSend","getResolver","PreparedTopicFilter","_filter","runner","getRunner","resolvedArgs","feature","getProvider","copyOverrides","_overrides","overrides","resolveArgs","_runner","buildWrappedFallback","populateTransaction","noValue","noData","staticCall","send","buildWrappedMethod","getFragment","staticCallResult","buildWrappedEvent","internalValues","setInternal","getInternal","isDeferred","getSubInfo","topicHashify","hasSub","subs","getSub","sub","foundFragment","_foundFragment","starting","started","lastEmit","_emit","payloadFunc","passArgs","resultPromise","_BaseContract","_deployTx","addrPromise","deployTx","checkCode","stop","CustomContract","BaseContract","_ContractBase","Contract","ContractFactory","sentTx","getIpfsLink","MulticoinProviderPlugin","proivder","matcherIpfs","matchers","_EnsResolver","_EnsResolver_instances","_supports2544","_resolver","fetch_fn","ethCoinType","coinPlugin","plugin","ipfs","swarm","linkage","owner","tokenId","tokenOwner","metadataUrl","network","ensPlugin","currentName","_EnsResolver_static","getResolver_fn","funcName","ensAddr","EnsResolver","allowNull","nullValue","arrayOf","altNames","srcKey","altKey","formatBoolean","formatData","formatHash","_formatLog","_formatBlock","formatTransactionResponse","_formatReceiptLog","formatReceiptLog","_formatTransactionReceipt","EnsAddress","NetworkPlugin","GasCostPlugin","effectiveBlock","nullish","EnsPlugin","targetNetwork","_FeeDataNetworkPlugin","feeDataFunc","_feeDataFunc","FeeDataNetworkPlugin","FetchUrlFeeDataNetworkPlugin","processFunc","_processFunc","Networks","_Network","_name","_plugins","basename","injectCommonNetworks","networkFunc","nameOrChainId","existing","Network","frac","getGasStationPlugin","fetchFeeData","_feeData","registerEth","PollingBlockSubscriber","_PollingBlockSubscriber_instances","_poller","_interval","_blockNumber","poll_fn","dropWhilePaused","OnBlockSubscriber","_poll","_running","PollingBlockTagSubscriber","_tag","_lastBlock","PollingOrphanSubscriber","PollingTransactionSubscriber","_hash","PollingEventSubscriber","_PollingEventSubscriber_instances","MAX_CCIP_REDIRECTS","isPromise","getTag","UnmanagedSubscriber","concisify","getSubscription","addAddress","AbstractProvider","_network","_AbstractProvider_instances","_subs","_pausedState","_destroyed","_networkPromise","_anyNetwork","_performCache","_lastBlockNumber","_nextTimer","_timers","_disableCcipRead","errorMessages","errorMessage","perform_fn","_address","detectNetwork","networkPromise","expected","actual","getFeeDataFunc","_block","priorityFee","getBlock_fn","feeData","_tx","checkNetwork_fn","call_fn","getAccountValue_fn","_position","signedTx","prefetchTxs","timerId","_func","subscriber","oldSub","newSub","getSub_fn","hasSub_fn","perform","txSender","ccipArgs","parseOffchainLookup","ccipResult","_blockTag","emitArgs","subscription","_parseString","_parseBytes","numPad","bytesPad","byteCount","zeros","urlsOffset","urlsLength","urlsData","checkProvider","signer","populate","pop","AbstractSigner","hasEip1559","txObj","_VoidSigner","_VoidSigner_instances","throwUnsupported_fn","VoidSigner","shown","showThrottleMessage","service","FilterIdSubscriber","_FilterIdSubscriber_instances","_filterIdPromise","_hault","teardown_fn","filterId","filterIdPromise","FilterIdEventSubscriber","FilterIdPendingSubscriber","Primitive","deepCopy","duration","getLowerCase","isPollable","JsonRpcSigner","hexTx","timeouts","invalids","checkTx","_message","populated","JsonRpcApiProvider","_JsonRpcApiProvider_instances","_nextId","_payloads","_drainTimer","_notReady","_pendingDetectNetwork","_resolve","staticNetwork","scheduleDrain_fn","dstKey","spelunkData","spelunkMessage","unsupported","accountsPromise","stallTime","payloads","JsonRpcApiPollingProvider","_pollingInterval","JsonRpcProvider","_connect","_spelunkMessage","defaultApiKey","getHost","AnkrProvider","apiKey","AlchemyProvider","trace","getApiKey","ChainstackProvider","CloudflareProvider","THROTTLE","EtherscanPluginId","EtherscanPlugin","skipKeys","nextId","EtherscanProvider","_apiKey","_plugin","post","throttle","postData","_WebSocket","SocketSubscriber","_filterId","_paused","_emitPromise","emitPromise","SocketBlockSubscriber","SocketPendingSubscriber","SocketEventSubscriber","_logFilter","SocketProvider","_callbacks","_pending","pending","WebSocketProvider","_websocket","defaultProjectId","InfuraWebSocketProvider","InfuraProvider","projectSecret","defaultToken","QuickNodeProvider","shuffle","defaultConfig","defaultState","waitForSync","_normalize","normalizeResult","checkQuorum","quorum","tally","best","getMedian","resultWeight","errorMap","bestError","getAnyResult","getFuzzyMode","bestWeight","bestResult","FallbackProvider","_FallbackProvider_instances","_configs","_height","_initialSyncPromise","broadcasts","waiting","initialSync_fn","running","inflightQuorum","addRunner_fn","waitForQuorum_fn","getNextConfig_fn","configs","allConfigs","dt","initialSync","checkQuorum_fn","interesting","newRunners","isWebSocketLike","Testnets","getDefaultProvider","allowService","_NonceManager","_noncePromise","_delta","noncePromise","NonceManager","BrowserProvider","defaultApplicationId","PocketProvider","applicationId","applicationSecret","IpcSocketProvider","_BaseWallet","_signingKey","btx","BaseWallet","subsChrs","Word","unfold","words","sep","clumps","leftover","semi","decodeOwl","Wordlist","phrase","WordlistOwl","_WordlistOwl_instances","_checksum","_words","loadWords_fn","wordlist","LangEn","getUpperMask","getLowerMask","mnemonicToEntropy","mnemonic","entropy","entropyBits","checksumBits","checksumMask","entropyToMnemonic","indices","remainingBits","Mnemonic","_entropy","_AES_key","_AES_Kd","_AES_Ke","numberOfRounds","rcon","T3","T4","T5","T6","T7","T8","U3","U4","convertToInt32","AES","roundKeyCount","KC","rconpointer","tt","plaintext","ciphertext","ModeOfOperation","cls","_CBC_iv","_CBC_lastBlock","CBC","iv","_CTR_remaining","_CTR_remainingIndex","_CTR_counter","CTR","crypttext","pkcs7Strip","padder","looseArrayify","zpad","getPassword","spelunk","_path","reqd","defaultPath","isKeystoreJson","json","decrypt","aesCtr","computedMAC","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicAesCtr","getDecryptKdfParams","kdf","prf","decryptKeystoreJsonSync","decryptKeystoreJson","getEncryptKdfParams","_encryptKeystore","uuidRandom","derivedKey","macPrefix","mac","gethFilename","encryptKeystoreJsonSync","passwordBytes","encryptKeystoreJson","MasterSecret","HardenedBit","encodeBase58Check","ser_I","chainCode","derivePath","_HDNodeWallet","signingKey","parentFingerprint","depth","_HDNodeWallet_instances","progressCallback","account_fn","HDNodeVoidWallet","_index","IR","IL","extendedKey","_HDNodeWallet_static","fromSeed_fn","_seed","HDNodeWallet","getAccountPath","getIndexedAccountPath","isCrowdsaleJson","decryptCrowdsaleJson","encseed","encryptedSeed","aesCbc","seedHex","_Wallet","_Wallet_static","fromAccount_fn","Wallet","Base64","decodeBits","flood","decodeOwlA","accents","accent","posOffset","charCode","WordlistOwlA","_accent","wordlists","arrayMap","_arrayMap","nativeKeys","_nativeKeys","baseKeys","_baseKeys","keys_1","baseForOwn","_baseForOwn","setCacheAdd","_setCacheAdd","setCacheHas","_setCacheHas","SetCache","_SetCache","arraySome","_arraySome","cacheHas","_cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","_equalArrays","mapToArray","_mapToArray","setToArray","_setToArray","symbolProto","symbolValueOf","equalByTag","convert","stacked","_equalByTag","arrayPush","_arrayPush","baseGetAllKeys","symbolsFunc","_baseGetAllKeys","arrayFilter","resIndex","_arrayFilter","stubArray","stubArray_1","nativeGetSymbols","getSymbols","_getSymbols","getAllKeys","_getAllKeys","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","_equalObjects","DataView","_DataView","Promise","_Promise","Set","_Set","WeakMap","_WeakMap","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","_getTag","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","_baseIsEqualDeep","baseIsEqual","_baseIsEqual","baseIsMatch","matchData","noCustomizer","srcValue","_baseIsMatch","isStrictComparable","_isStrictComparable","getMatchData","_getMatchData","matchesStrictComparable","_matchesStrictComparable","baseMatches","_baseMatches","reIsDeepProp","reIsPlainProp","isKey","_isKey","FUNC_ERROR_TEXT","memoize","memoized","memoize_1","MAX_MEMOIZE_SIZE","memoizeCapped","_memoizeCapped","rePropName","reEscapeChar","stringToPath","quote","subString","_stringToPath","symbolToString","baseToString","_baseToString","toString_1","castPath","_castPath","toKey","_toKey","baseGet","_baseGet","get_1","baseHasIn","_baseHasIn","hasPath","hasFunc","_hasPath","hasIn","hasIn_1","baseMatchesProperty","_baseMatchesProperty","baseProperty","_baseProperty","basePropertyDeep","_basePropertyDeep","property_1","baseIteratee","_baseIteratee","mapValues","mapValues_1","dirtyNumber","requiredArgs","required","toDate","argument","argStr","addDays","dirtyDate","dirtyAmount","date","amount","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","years","months","weeks","days","hours","minutes","seconds","dateWithMonths","dateWithDays","minutesToAdd","secondsToAdd","msToAdd","finalDate","isWeekend","day","isSunday","isSaturday","addBusinessDays","startedOnWeekend","fullWeeks","restDays","addMilliseconds","MILLISECONDS_IN_HOUR","addHours","startOfWeek","dirtyOptions","localeWeekStartsOn","defaultWeekStartsOn","weekStartsOn","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfISOWeekYear","fourthOfJanuary","getTimezoneOffsetInMilliseconds","utcDate","startOfDay","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","setISOWeekYear","dirtyISOWeekYear","isoWeekYear","addISOWeekYears","MILLISECONDS_IN_MINUTE","addMinutes","addQuarters","addSeconds","addWeeks","addYears","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","dirtyDatesArray","datesArray","currentDate","clamp","_ref","closestIndexTo","dirtyDateToCompare","dateToCompare","timeToCompare","minDistance","distance","closestTo","compareAsc","dateLeft","dateRight","compareDesc","daysInWeek","maxTime","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","minTime","minutesInHour","monthsInQuarter","monthsInYear","quartersInYear","secondsInHour","secondsInMinute","daysToWeeks","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isDate","isValid","differenceInBusinessDays","calendarDifference","differenceInCalendarISOWeekYears","MILLISECONDS_IN_WEEK","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeekRight","differenceInCalendarMonths","yearDiff","monthDiff","getQuarter","quarter","differenceInCalendarQuarters","quarterDiff","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","differenceInCalendarYears","compareLocalAsc","differenceInDays","difference","isLastDayNotFull","differenceInMilliseconds","roundingMap","defaultRoundingMethod","getRoundingMethod","differenceInHours","subISOWeekYears","differenceInISOWeekYears","isLastISOWeekYearNotFull","differenceInMinutes","endOfDay","endOfMonth","month","isLastDayOfMonth","differenceInMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","isLastYearNotFull","eachDayOfInterval","dirtyInterval","startDate","endDate","endTime","dates","eachHourOfInterval","startTime","startOfMinute","eachMinuteOfInterval","eachMonthOfInterval","startOfQuarter","currentMonth","eachQuarterOfInterval","startDateQuarter","endDateQuarter","quarters","currentQuarter","eachWeekOfInterval","startDateWeek","endDateWeek","currentWeek","eachWeekendOfInterval","dateInterval","weekends","startOfMonth","eachWeekendOfMonth","startOfYear","cleanDate","endOfYear","eachWeekendOfYear","eachYearOfInterval","endOfDecade","decade","endOfHour","endOfWeek","endOfISOWeek","endOfISOWeekYear","endOfMinute","endOfQuarter","endOfSecond","endOfToday","endOfTomorrow","endOfYesterday","formatDistanceLocale","formatDistance","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_date","_baseDate","buildLocalizeFn","dirtyIndex","valuesArray","defaultWidth","_defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","rem100","localize","buildMatchFn","matchPattern","matchResult","matchedString","parsePatterns","findIndex","findKey","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","subMilliseconds","addLeadingZeros","targetLength","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","getUTCDayOfYear","startOfYearTimestamp","startOfUTCISOWeek","getUTCISOWeekYear","startOfUTCISOWeekYear","getUTCISOWeek","startOfUTCWeek","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","dayPeriodEnum","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","delimiter","absOffset","dirtyDelimiter","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","assign","dirtyObject","cloneObject","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","dirtyBaseDate","comparison","localizeOptions","offsetInSeconds","nearestMonth","monthsSinceStartOfYear","MINUTES_IN_YEAR","formatDistanceStrict","roundingMethod","roundingMethodFn","dstNormalizedMinutes","roundedMinutes","formatDistanceToNow","distanceInWords","formatDistanceToNowStrict","defaultFormat","formatDuration","zero","addChunk","formatISO","representation","tzOffset","dateDelimiter","timeDelimiter","absoluteOffset","hourOffset","minuteOffset","hour","minute","second","separator","formatISO9075","formatISODuration","_duration$years","_duration$months","_duration$days","_duration$hours","_duration$minutes","_duration$seconds","formatRFC3339","_ref$fractionDigits","fractionDigits","fractionalSecond","formatRFC7231","dayName","monthName","baseDate","_ref$locale","_ref$weekStartsOn","utcBaseDate","fromUnixTime","dirtyUnixTime","unixTime","getDate","getDay","getDayOfYear","getDaysInMonth","monthIndex","lastDayOfMonth","isLeapYear","getDaysInYear","getDecade","getHours","getISODay","getISOWeek","getISOWeeksInYear","thisYear","nextYear","getMilliseconds","getMinutes","getMonth","getOverlappingDaysInIntervals","isOverlapping","overlapStartDate","overlapEndDate","differenceInMs","getSeconds","getUnixTime","getWeekYear","_options$locale","_options$locale$optio","startOfWeekYear","getWeek","getWeekOfMonth","currentDayOfMonth","startWeekDay","lastDayOfFirstWeek","weekNumber","remainingDaysAfterFirstWeek","getWeeksInMonth","getYear","hoursToMilliseconds","hoursToMinutes","hoursToSeconds","subDays","subMonths","dateWithoutMonths","dateWithoutDays","minutestoSub","secondstoSub","mstoSub","intervalToDuration","remainingMonths","remainingDays","remainingHours","remainingMinutes","remainingSeconds","intlFormat","formatOrLocale","localeOptions","_localeOptions","formatOptions","isFormatOptions","isAfter","isBefore","dirtyLeftDate","dirtyRightDate","isExists","isFirstDayOfMonth","isFriday","isFuture","setUTCDay","dirtyDay","currentDay","dayIndex","setUTCISODay","setUTCISOWeek","dirtyISOWeek","setUTCWeek","dirtyWeek","MILLISECONDS_IN_SECOND","numericPatterns","timezonePatterns","parseNumericPattern","valueCallback","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","wholeWeekDays","isPM","_token","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","usedTokens","incompatibleTokens","incompatibleToken","usedToken","uniquePrioritySetters","setter","priority","setterArray","convertedDate","isMatch","isMonday","isPast","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","isSameISOWeek","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","isSameMinute","dateLeftStartOfMinute","dateRightStartOfMinute","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","startOfSecond","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isSameYear","isThisHour","isThisISOWeek","isThisMinute","isThisMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isWednesday","isWithinInterval","isYesterday","lastDayOfDecade","lastDayOfWeek","lastDayOfISOWeek","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","lightFormat","daysInYear","totalDays","totalSeconds","millisecondsToHours","millisecondsToMinutes","millisecondsToSeconds","minutesToHours","minutesToMilliseconds","minutesToSeconds","monthsToQuarters","monthsToYears","nextDay","nextFriday","nextMonday","nextSaturday","nextSunday","nextThursday","nextTuesday","nextWednesday","DEFAULT_ADDITIONAL_DIGITS","patterns","dateRegex","timeRegex","timezoneRegex","parseISO","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","parseTime","parseTimezone","timeString","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","_year","_hours","parseJSON","previousDay","previousFriday","previousMonday","previousSaturday","previousSunday","previousThursday","previousTuesday","previousWednesday","quartersToMonths","quartersToYears","roundToNearestMinutes","nearestTo","remainderMinutes","addedMinutes","secondsToHours","secondsToMilliseconds","secondsToMinutes","setMonth","dirtyMonth","dateWithDesiredMonth","setDate","dirtyDayOfMonth","setDay","setDayOfYear","dirtyDayOfYear","setHours","dirtyHours","setISODay","setISOWeek","setMilliseconds","dirtyMilliseconds","setMinutes","dirtyMinutes","setQuarter","dirtyQuarter","oldQuarter","setSeconds","dirtySeconds","setWeek","setWeekYear","dirtyWeekYear","setYear","dirtyYear","startOfDecade","startOfToday","startOfTomorrow","startOfYesterday","subBusinessDays","subHours","subMinutes","subQuarters","subSeconds","subWeeks","subYears","weeksToDays","yearsToMonths","yearsToQuarters","noop_1","createBaseEach","eachFunc","_createBaseEach","baseEach","_baseEach","baseMap","_baseMap","baseSortBy","comparer","_baseSortBy","compareAscending","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","_compareAscending","compareMultiple","orders","objCriteria","othCriteria","ordersLength","order","_compareMultiple","baseOrderBy","iteratees","criteria","_baseOrderBy","baseExtremum","comparator","computed","_baseExtremum","baseLt","_baseLt","minBy","minBy_1","baseGt","_baseGt","maxBy","maxBy_1","baseSlice","_baseSlice","now_1","nativeMin","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","debounced","isInvoking","debounce_1","throttle_1","spreadableSymbol","isFlattenable","_isFlattenable","baseFlatten","isStrict","_baseFlatten","isEqual_1","map_1","flatMap","flatMap_1","getSymbolsIn","_getSymbolsIn","getAllKeysIn","_getAllKeysIn","baseFindIndex","fromIndex","_baseFindIndex","baseIsNaN","_baseIsNaN","strictIndexOf","_strictIndexOf","baseIndexOf","_baseIndexOf","arrayIncludes","_arrayIncludes","arrayIncludesWith","_arrayIncludesWith","createSet","_createSet","baseUniq","includes","isCommon","outer","seenIndex","_baseUniq","uniqBy","uniqBy_1","MAX_DIGITS","Decimal","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","ONE","BASE","LOG_BASE","MAX_E","xdL","ydL","dp","divide","getBase10Exponent","pr","wpr","ln","subtract","exp","digitsToString","rL","rm","checkInt32","yIsInt","yn","truncate","ws","indexOfLastWord","getZeroString","multiplyInteger","temp","compare","aL","bL","cmp","prod","prodL","rem","remL","rem0","xL","yd0","yL","yz","getLn10","zs","c0","numerator","parseDecimal","doRound","xdi","xLTy","isExp","ps","Decimal$1","isNil","isNil_1","isString","isString_1","isNumber","isNumber_1","isNaN","_isNaN","mathSign","isPercent","lodashIsNumber","isNan","isNumOrStr","uniqueId","getPercentValue","percent","totalValue","validate","getAnyElementOfObject","hasDuplicate","ary","interpolateNumber","numberA","numberB","findEntryInArray","specifiedKey","specifiedValue","getLinearRegression","xsum","ysum","xysum","xxsum","xmin","xmax","xcurrent","ycurrent","shallowEqual","_typeof","SVGContainerPropKeys","SVGElementPropKeys","PolyElementKeys","FilteredElementKeyMap","EventKeys","adaptEventHandlers","newHandler","inputProps","isValidElement","getEventHandlerOfChild","originalHandler","adaptEventsOfChild","_excluded","_excluded2","_objectWithoutProperties","excluded","sourceSymbolKeys","sourceKeys","REACT_BROWSER_EVENT_MAP","getDisplayName","Comp","lastChildren","lastResult","toArray","Children","isFragment","findAllByType","findChildByType","validateWidthHeight","_el$props","SVG_TAGS","isSvgElement","isDotProps","dot","isValidSpreadableProp","includeEvents","svgElementType","_FilteredElementKeyMa","matchingElementTypeKeys","filterProps","_inputProps","isChildrenEqual","nextChildren","prevChildren","isSingleChildEqual","nextChild","prevChild","nextProps","_ref2","prevProps","renderByOrder","renderMap","elements","displayName","_ref3","getReactEventByType","parseChildIndex","Surface","others","svgView","layerClass","React","Layer","warn","castSlice","_castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","_hasUnicode","asciiToArray","_asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","_unicodeToArray","stringToArray","_stringToArray","createCaseFirst","methodName","strSymbols","_createCaseFirst","upperFirst","upperFirst_1","constant$1","cos","sin","tau","epsilon","tauEpsilon","append","strings","appendRound","digits","Path","x0","y0","x21","y21","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","ccw","cw","withPath","shape","Linear","curveLinear","shapeLine","defined","line","pointX","pointY","defined0","shapeArea","area","x0z","y0z","arealine","Bump","bumpX","bumpY","symbolCircle","symbolCross","tan30","tan30_2","symbolDiamond","symbolSquare","kr","kx","ky","symbolStar","sqrt3","symbolTriangle","symbolWye","circle","that","Basis","curveBasis","BasisClosed","curveBasisClosed","BasisOpen","curveBasisOpen","LinearClosed","curveLinearClosed","slope3","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","i0","i1","curveNatural","Step","curveStep","stepBefore","stepAfter","stackOffsetNone","series","stackOrderNone","stackValue","stackSeries","shapeStack","orderNone","offsetNone","sz","oz","stackOffsetExpand","none","stackOffsetSilhouette","stackOffsetWiggle","sij0","sij1","s3","skj0","skj1","_objectSpread","_toPropertyKey","_toPrimitive","symbolFactories","RADIAN","getSymbolFactory","calculateAreaSize","sizeType","angle","registerSymbol","factory","Symbols","_ref$type","_ref$size","_ref$sizeType","getPath","symbolFactory","shapeSymbol","cx","cy","filteredProps","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","self","_assertThisInitialized","_inherits","subClass","superClass","SIZE","DefaultLegendContent","_PureComponent","inactiveColor","halfSize","sixthSize","thirdSize","iconProps","_this$props","iconSize","layout","itemStyle","svgStyle","finalFormatter","entryValue","_this$props2","align","finalStyle","PureComponent","getUniqPayload","option","defaultUniqBy","renderContent","otherProps","EPS","Legend","_box","onBBoxUpdate","box","verticalAlign","chartWidth","chartHeight","hPos","vPos","_box2","_box3","_this2","wrapperStyle","payloadUniqBy","outerStyle","sortBy","sortBy_1","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","arr2","defaultFormatter","DefaultTooltipContent","_props$separator","_props$contentStyle","contentStyle","_props$itemStyle","_props$labelStyle","labelStyle","itemSorter","wrapperClassName","labelClassName","labelFormatter","_props$accessibilityL","accessibilityLayer","listStyle","finalItemStyle","finalValue","finalName","_formatted","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","accessibilityAttributes","CSS_CLASS_PREFIX","TOOLTIP_HIDDEN","getTooltipCSSClassName","coordinate","translateX","translateY","getTooltipTranslateXY","allowEscapeViewBox","offsetTopLeft","reverseDirection","tooltipDimension","viewBoxDimension","positive","_tooltipBoundary","_viewBoxBoundary","tooltipBoundary","viewBoxBoundary","getTransformStyle","useTranslate3d","getTooltipTranslate","_ref4","tooltipBox","cssProperties","EPSILON","TooltipBoundingBox","_this$props$coordinat","_this$props$coordinat2","_this$props$coordinat3","_this$props$coordinat4","_this$props$coordinat5","_this$props$coordinat6","animationDuration","animationEasing","hasPayload","isAnimationActive","_getTooltipTranslate","cssClasses","parseIsSsrByDefault","Global","Tooltip","filterNull","finalPayload","ResponsiveContainer","forwardRef","aspect","_ref$initialDimension","initialDimension","_ref$width","_ref$height","_ref$minWidth","minWidth","minHeight","maxHeight","_ref$debounce","onResize","_ref$style","onResizeRef","useImperativeHandle","_useState","_useState2","setSizes","setContainerSize","newWidth","newHeight","prevState","roundedWidth","roundedHeight","_onResizeRef$current","_entries$0$contentRec","containerWidth","containerHeight","_containerRef$current","chartContent","calculatedWidth","calculatedHeight","isCharts","isElement","cloneElement","Cell","_props","stringCache","MAX_CACHE_NUM","SPAN_STYLE","MEASUREMENT_SPAN_ID","removeInvalidKeys","copyObj","getStringSize","copyStyle","measurementSpan","measurementSpanStyle","rect","MULTIPLY_OR_DIVIDE_REGEX","ADD_OR_SUBTRACT_REGEX","CSS_LENGTH_UNIT_REGEX","NUM_SPLIT_REGEX","CONVERSION_RATES","FIXED_CSS_LENGTH_UNITS","STR_NAN","convertToPx","DecimalCSS","_NUM_SPLIT_REGEX$exec","numStr","calculateArithmetic","expr","newExpr","_MULTIPLY_OR_DIVIDE_R","leftOperand","operator","rightOperand","lTs","rTs","_ADD_OR_SUBTRACT_REGE","_ref5","_ref6","_leftOperand","_operator","_rightOperand","_lTs","_rTs","_result","PARENTHESES_REGEX","calculateParentheses","_PARENTHESES_REGEX$ex","_PARENTHESES_REGEX$ex2","parentheticalExpression","evaluateExpression","expression","safeEvaluateExpression","reduceCSSCalc","BREAKING_SPACES","calculateWordWidths","breakAll","wordsWithComputedWidth","spaceWidth","calculateWordsByLines","initialWordsWithComputedWith","lineWidth","scaleToFit","maxLines","shouldLimitLines","calculate","currentLine","newLine","originalResult","findLongestLine","checkOverflow","tempText","doesOverflow","trimmedResult","middle","_checkOverflow","_checkOverflow2","doesPrevOverflow","_checkOverflow3","_checkOverflow4","doesMiddleOverflow","getWordsWithoutCalculate","getWordsByLines","wordWidths","wcw","sw","DEFAULT_FILL","_ref5$x","propsX","_ref5$y","propsY","_ref5$lineHeight","lineHeight","_ref5$capHeight","capHeight","_ref5$scaleToFit","_ref5$textAnchor","textAnchor","_ref5$verticalAnchor","verticalAnchor","_ref5$fill","fill","wordsByLines","textProps","startDy","transforms","ascending","descending","bisector","compare1","compare2","lo","center","numbers","valueof","ascendingBisect","bisectRight","InternMap","keyof","intern_get","intern_set","intern_delete","_intern","compareDefined","ascendingDefined","e10","e5","e2","tickSpec","factor","i2","ticks","reverse","tickIncrement","tickStep","quickselect","newLeft","newRight","swap","quantile","value0","value1","quantileSorted","initRange","initInterpolator","interpolator","implicit","ordinal","unknown","band","ordinalRange","r0","r1","bandwidth","paddingInner","paddingOuter","rescale","sequence","pointish","define","constructor","prototype","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","rgbn","Rgb","rgba","hsla","rgbConvert","rgb","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","Hsl","hsl","m2","m1","hsl2rgb","clamph","clampt","linear","exponential","gamma","nogamma","rgbGamma","colorRgb","numberArray","isNumberArray","genericArray","date$1","interpolateNumber$1","reA","reB","one","am","bm","bs","interpolate","interpolateRound","piecewise","constants","clamper","bimap","d0","d1","polymap","bisect","transformer","interpolateValue","untransform","continuous","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","formatNumerals","numerals","formatSpecifier","specifier","FormatSpecifier","formatTrim","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$5","prefixes","formatLocale$1","currencyPrefix","currencySuffix","minus","nan","newFormat","comma","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatPrefix","formatLocale","precisionFixed","precisionPrefix","precisionRound","tickFormat","linearish","prestep","maxIter","nice","transformLog","transformExp","transformLogn","transformExpn","pow10","powp","logp","reflect","loggish","pows","transformSymlog","transformSymexp","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","unsquare","radial","squared","thresholds","threshold","quantize","timeInterval","floori","offseti","test","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeMinute","utcMinute","timeHour","utcHour","timeDay","utcDay","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","utcMonth","timeYear","utcYear","ticker","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","newDate","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pads","newParse","parseSpecifier","numberRe","percentRe","requoteRe","requote","dISO","dow","UTCdISO","timeFormat","utcFormat","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","r2","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","max_1","min_1","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","_len2","restArgs","_key2","newArgs","curry","begin","compose","_len3","_key3","fns","firstFn","tailsFn","_len4","_key4","getDigitCount","rangeStep","newA","newB","uninterpolateNumber","uninterpolateTruncation","Arithmetic","_arr","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","digitCount","digitCountValue","stepRatio","stepRatioScale","amendStepRatio","formatStep","getTickOfSingleValue","tickCount","absVal","middleIndex","calculateStep","belowCount","upCount","scaleCount","getNiceTickValuesFn","_getValidInterval","_getValidInterval2","cormin","cormax","_values","_calculateStep","tickMin","tickMax","getTickValuesFixedDomainFn","_ref7","_ref8","_getValidInterval5","_getValidInterval6","getNiceTickValues","getTickValuesFixedDomain","ErrorBar","dataKey","dataPointFormatter","xAxis","yAxis","svgProps","errorBars","_dataPointFormatter","errorVal","lineCoordinates","lowBound","highBound","_errorVal","yMid","yMin","yMax","xMin","xMax","_scale","xMid","_xMin","_xMax","_yMin","_yMax","coordinates","getLegendProps","formattedGraphicalItems","legendWidth","legendContent","legendItem","legendData","_item$props","legendType","hide","getMainColorOfGraphicItem","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","calculateActiveTickIndex","_ticks$length","unsortedTicks","before","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","stroke","getBarSizeList","globalSize","totalSize","_ref2$stackGroups","stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","cateAxisId","barItems","selfSize","cateId","barSize","getBarPosition","barGap","barCategoryGap","bandSize","_ref3$sizeList","sizeList","maxBarSize","realBarGap","useFull","fullBarSize","newPosition","newRes","originalSize","appendOffsetOfLegend","_unused","legendBox","legendProps","boxWidth","boxHeight","isErrorBarRelevantForAxis","axisType","getDomainOfErrorBars","errorBarChild","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","parseErrorBarsOfAxis","domains","getDomainOfItemsWithSameAxis","isCategoricalAxis","getCoordinatesOfGrid","syncWithTicks","hasMin","hasMax","getTicksOfAxis","isGrid","isAll","duplicateDomain","offsetForBand","scaleContent","handlerWeakMap","combineEventHandlers","defaultHandler","childHandler","childWeakMap","combineHandler","parseScale","chartType","hasBar","d3Scales.scaleBand","d3Scales.scaleLinear","d3Scales.scalePoint","d3Scales","checkDomainOfScale","first","findPositionOfBar","barPosition","truncateByDomain","offsetSign","offsetPositive","STACK_OFFSET_MAP","getStackedData","stackItems","offsetType","dataKeys","offsetAccessor","getStackGroupsByAxisId","_items","numericAxisId","reverseStackOrder","parentStackGroupsInitialValue","_item$props2","stackId","axisId","parentGroup","childGroup","axisStackGroupsInitialValue","stackGroupsInitialValue","getTicksOfScale","realScaleType","originalDomain","scaleType","tickValues","_domain","_tickValues","getCateCoordinateOfLine","matchedTick","getCateCoordinateOfBar","getBaseValueOfBar","numericAxis","getStackedDataOfItem","itemIndex","getDomainOfSingle","getDomainOfStackGroups","startIndex","endIndex","stackedData","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","parseDomainOfCategoryAxis","calculatedDomain","axisChild","getTooltipItem","graphicalItem","_graphicalItem$props","tooltipType","radianToDegree","angleInRadian","polarToCartesian","radius","distanceBetweenPoints","anotherPoint","getAngleOfPoint","formatAngleOfSector","startAngle","endAngle","startCnt","endCnt","reverseFormatAngleOfSetor","inRangeOfSector","sector","_getAngleOfPoint","innerRadius","outerRadius","_formatAngleOfSector","formatAngle","inRange","getLabel","getDeltaAngle","deltaAngle","renderRadialLabel","labelProps","attrs","clockWise","labelAngle","startPoint","endPoint","getAttrsOfPolarLabel","midAngle","_polarToCartesian","_x","_y","_polarToCartesian2","getAttrsOfCartesianLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs","_attrs2","_attrs3","sizeAttrs","isPolar","Label","_ref4$offset","restProps","_props$className","textBreakAll","isPolarLabel","positionAttrs","parseViewBox","labelViewBox","parseLabel","renderCallByParent","parentProps","checkPropsLabel","explicitChildren","implicitLabel","last_1","defaultAccessor","LabelList","_ref$valueAccessor","valueAccessor","idProps","parseLabelList","implicitLabelList","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","centerAngle","circleTangency","lineTangencyAngle","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","getSectorWithCorner","forceCornerRadius","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","defaultProps","Sector","sectorProps","deltaRadius","CURVE_FACTORIES","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveStepAfter","curveStepBefore","getX","getY","getCurveFactory","_ref$points","baseLine","_ref$connectNulls","connectNulls","curveFactory","formatPoints","lineFunction","formatBaseLine","areaPoints","Curve","pathRef","realPath","getOwnPropertyNames","getOwnPropertySymbols","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","getStrictProperties","hasOwn","sameValueZeroEqual","OWNER","getOwnPropertyDescriptor","areArraysEqual","areDatesEqual","areMapsEqual","matchedIndices","aIterable","aResult","bResult","bIterable","hasMatch","matchIndex","aKey","aValue","bKey","bValue","areObjectsEqual","areObjectsEqualStrict","descriptorA","descriptorB","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areTypedArraysEqual","ARGUMENTS_TAG","BOOLEAN_TAG","DATE_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","REG_EXP_TAG","SET_TAG","STRING_TAG","createEqualityComparator","createEqualityComparatorConfig","circular","createCustomConfig","areArraysEqual$1","areMapsEqual$1","areObjectsEqual$1","areSetsEqual$1","createInternalEqualityComparator","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","createIsEqual","equals","createCustomEqual","createCustomInternalComparator","safeRequestAnimationFrame","setRafTimeout","currTime","shouldUpdate","_toArray","createAnimateManager","currStyle","handleChange","setStyle","_style","_styles","restStyles","_handleChange","hint","prim","getIntersectionKeys","preObj","nextObj","getDashCase","mapObject","getTransitionVal","easing","ACCURACY","cubicBezierFactor","multyTime","pre","cubicBezier","derivativeCubicBezier","newParams","configBezier","_easing$1$split$0$spl","_easing$1$split$0$spl2","curveX","curveY","derCurveX","rangeValue","bezier","evalT","derVal","configSpring","_config$stiff","stiff","_config$damping","damping","_config$dt","stepper","currX","destX","currV","FSpring","FDamping","newV","newX","configEasing","needContinue","calStepperVals","preVals","steps","nextStepVals","_easing","_easing2","configUpdate","render","interKeys","timingStyle","stepperStyle","cafId","preTime","beginTime","update","getCurrStyle","shouldStopAnimation","stepperUpdate","deltaTime","timingUpdate","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","Animate","_super","attributeName","canBegin","_this$props3","shouldReAnimate","currentFrom","isTriggered","_newState","onAnimationEnd","onAnimationStart","startAnimation","finalStartAnimation","_this3","_steps$","initialStyle","_steps$$duration","initialTime","addStyle","nextItem","_nextItem$easing","nextProperties","preItem","transition","newStyle","propsTo","manager","_this$props4","stateStyle","cloneContainer","_container$props","_container$props$styl","PropTypes","getRectanglePath","maxRadius","ySign","xSign","newRadius","_newRadius","isInRectangle","minX","maxX","minY","maxY","Rectangle","rectangleProps","totalLength","setTotalLength","pathTotalLength","animationBegin","isUpdateAnimationActive","currWidth","currHeight","currY","Dot","Cross","_ref$x","_ref$y","_ref$top","_ref$left","isBoolean","isBoolean_1","getTrapezoidPath","upperWidth","lowerWidth","widthGap","Trapezoid","trapezoidProps","currUpperWidth","currLowerWidth","defaultPropTransformer","isSymbolsProps","shapeType","_elementProps","ShapeSelector","elementProps","getPropsFromShapeOption","Shape","_ref2$propTransformer","propTransformer","_ref2$activeClassName","activeClassName","isFunnel","_item","isPie","isScatter","compareFunnel","shapeData","activeTooltipItem","_activeTooltipItem$la","_activeTooltipItem$la2","xMatches","yMatches","comparePie","startAngleMatches","endAngleMatches","compareScatter","zMatches","getComparisonFn","activeItem","getShapeDataKey","shapeKey","getActiveShapeTooltipPayload","_activeItem$tooltipPa","_activeItem$tooltipPa2","getActiveShapeIndexForTooltip","itemData","tooltipPayload","activeItemMatches","datum","dataIndex","valuesMatch","mouseCoordinateMatches","indexOfMouseCoordinates","coordinatesMatch","activeIndex","nativeCeil","baseRange","_baseRange","createRange","_createRange","range_1","PREFIX_LIST","generatePrefixStyle","camelName","createScale","travellerWidth","scalePoint","scaleValues","isTouch","Brush","onDragEnd","startX","endX","minIndex","maxIndex","tickFormatter","_this$state","slideMoveStartX","newIndex","_this$state2","brushMoveStartX","movingTravellerId","prevValue","_this$props5","isFullGap","_this$state3","currentScaleValue","currentIndex","newScaleValue","_this$props6","_this$props7","chartElement","travellerX","_data$startIndex","_data$endIndex","_this$props8","traveller","travellerProps","ariaLabelBrush","_this$props9","_this$props10","_this$state4","_this$props11","alwaysShowText","_this$state5","isTextActive","isSlideMoving","isTravellerMoving","isTravellerFocused","isPanoramic","lineY","rectangle","updateId","valueRange","baseSome","_baseSome","some","some_1","ifOverflowMatches","alwaysShow","ifOverflow","arrayEvery","_arrayEvery","baseEvery","_baseEvery","every","every_1","typeguardBarRectangleProps","xProp","yProp","xValue","yValue","heightValue","widthValue","BarRectangle","minPointSizeCallback","minPointSize","isValueNumber","_Bar","Bar","activeBar","baseProps","animationId","stepData","interpolatorX","interpolatorY","interpolatorWidth","interpolatorHeight","_interpolatorHeight","_this4","backgroundProps","needClip","clipPathId","errorBarItems","dataPoint","errorBarProps","isAnimationFinished","needClipX","needClipY","xAxisTicks","yAxisTicks","dataStartIndex","displayedData","minPointSizeProp","stackedDomain","baseValue","cells","rects","baseValueScale","currentValueScale","computedHeight","_baseValueScale","_currentValueScale","formatAxisMap","axisMap","chartName","ids","orientation","_axis$padding","mirror","reversed","offsetKey","calculatedPadding","needSpace","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","halfBand","_parseScale","finalAxis","rectWithPoints","rectWithCoords","ScaleHelper","bandAware","_offset2","createLabeledScales","scales","coord","normalizeAngle","getAngledRectangleWidth","normalizedAngle","angleRadians","angleThreshold","angledWidth","createFind","findIndexFunc","_createFind","findIndex_1","find","find_1","calculateViewBox","XAxisContext","YAxisContext","ViewBoxContext","OffsetContext","ClipPathIdContext","ChartHeightContext","ChartWidthContext","ChartLayoutContextProvider","_props$state","xAxisMap","yAxisMap","useClipPathId","useXAxisOrThrow","xAxisId","useArbitraryXAxis","useYAxisWithFiniteDomainOrRandom","yAxisWithFiniteDomain","useYAxisOrThrow","yAxisId","useViewBox","useOffset","useChartWidth","useChartHeight","renderLine","getEndPoints","isFixedX","isFixedY","isSegment","xAxisOrientation","yAxisOrientation","yCoord","xCoord","_coord","_points","segment","_points2","ReferenceLine","fixedX","fixedY","isX","isY","endPoints","_endPoints","_endPoints$","_endPoints$2","clipPath","lineProps","getCoordinate","ReferenceDot","dotProps","getRect","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","ReferenceArea","getEveryNthWithCondition","getAngledTickWidth","contentSize","unitSize","getTickBoundaries","sizeKey","isWidth","isVisible","tickPosition","getSize","getNumberIntervalTicks","getEquidistantTicks","boundaries","getTickSize","minTickGap","initialStart","stepsize","tickCoord","isShow","_ret","getTicksEnd","getTicksStart","preserveEnd","tailSize","tailGap","isTailShow","_loop2","getTicks","letterSpacing","candidates","_excluded3","CartesianAxis","_Component","viewBoxOld","restPropsOld","htmlLayer","tickSize","tickMargin","ty","finalTickSize","axisLine","needHeight","needWidth","tickLine","finalTicks","axisProps","customTickProps","tickLineProps","_this2$getTickLineCoo","lineCoord","tickProps","ticksGenerator","noTicksProps","tickItem","Component","Background","fillOpacity","renderLineItem","lineItem","_filterProps","restOfFilteredProps","HorizontalGridLines","_props$horizontal","horizontal","horizontalPoints","lineItemProps","VerticalGridLines","_props$vertical","vertical","verticalPoints","HorizontalStripes","horizontalFill","_props$horizontal2","roundedSortedHorizontalPoints","lastStripe","colorIndex","VerticalStripes","_props$vertical2","verticalFill","roundedSortedVerticalPoints","defaultVerticalCoordinatesGenerator","defaultHorizontalCoordinatesGenerator","CartesianGrid","_props$stroke","_props$fill","_props$horizontal3","_props$horizontalFill","_props$vertical3","_props$verticalFill","propsIncludingDefaults","horizontalValues","verticalValues","verticalCoordinatesGenerator","horizontalCoordinatesGenerator","isHorizontalValues","generatorResult","isVerticalValues","_generatorResult","Line","lines","remainLength","restLength","remainLines","emptyLines","curveDom","clipDot","customDotProps","dotsProps","curveProps","strokeDasharray","animateNewValues","prevPoints","prevPointsDiffFactor","prevPointIndex","_interpolatorX","_interpolatorY","curLength","currentStrokeDasharray","hasSinglePoint","_ref2$r","_ref2$strokeWidth","strokeWidth","_ref3$clipDot","dotSize","linesUnit","dotItem","_Area","Area","areaProps","startY","endY","isRange","prevBaseLine","stepPoints","stepBaseLine","_interpolator","chartBaseValue","itemBaseValue","domainMax","domainMin","hasStack","isHorizontalLayout","isBreakPoint","ZAxis","ScatterSymbol","Scatter","activeShape","interpolatorCx","interpolatorCy","interpolatorSize","errorDataKey","lineType","lineJointType","scatterProps","customLineProps","linePoints","_getLinearRegression","linearExp","zAxis","xAxisDataKey","yAxisDataKey","zAxisDataKey","defaultRangeZ","defaultZ","xBandSize","yBandSize","XAxis","axisOptions","YAxis","detectReferenceElementsDomain","specifiedTicks","areas","idKey","valueKey","finalDomain","key1","key2","value2","eventCenter","SYNC_EVENT","AccessibilityManager","_ref$coordinateList","coordinateList","_ref$container","_ref$layout","_ref$offset","_ref$mouseHandlerCall","mouseHandlerCallback","_window2","_this$container$getBo","scrollOffsetX","scrollOffsetY","pageX","pageY","isDomainSpecifiedByUser","domainStart","domainEnd","getCursorRectangle","activeCoordinate","tooltipAxisBandSize","getRadialCursorPoints","getCursorPoints","innerPoint","outerPoint","Cursor","tooltipEventType","activePayload","activeTooltipIndex","cursorComp","_getRadialCursorPoint","cursorProps","ORIENT_MAP","FULL_WIDTH_AND_HEIGHT","originCoordinate","renderAsIs","calculateTooltipPos","rangeObj","getActiveCoordinate","tooltipTicks","_angle","_radius","getDisplayedData","graphicalItems","dataEndIndex","itemsData","getDefaultDomainByAxisType","getTooltipContent","chartData","activeLabel","tooltipAxis","_child$props$data","getTooltipData","rangeData","getAxisMapByAxes","axes","axisIdKey","stackOffset","isCategorical","_child$props$domain2","_child$props","allowDuplicatedCategory","includeHidden","categoricalDomain","defaultDomain","_child$props$domain","childDomain","duplicate","errorBarsDomain","axisDomain","isDomainValid","getAxisMapByItems","Axis","getAxisMap","_ref4$axisType","AxisComp","tooltipTicksGenerator","createDefaultState","defaultShowTooltip","brushItem","hasGraphicalBarItem","getAxisNameByLayout","calculateOffset","prevLegendBBox","_ref5$xAxisMap","_ref5$yAxisMap","offsetH","offsetV","brushBottom","offsetWidth","offsetHeight","getCartesianAxisSize","axisObj","axisName","generateCategoricalChart","_CategoricalChartWrapper","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","getFormatItems","globalMaxBarSize","_getAxisNameByLayout","numericAxisName","cateAxisName","formattedItems","childMaxBarSize","axisObjInitialValue","cateAxis","cateTicks","itemIsBar","_getBandSizeOfAxis","barBandSize","composedFn","updateStateOfAxisMapsOffsetAndStackGroups","_getAxisNameByLayout2","cateAxisMap","ticksObj","CategoricalChartWrapper","_props$id","_props$throttleDelay","cId","_ref9","mouse","_nextState","onMouseEnter","onMouseMove","onMouseLeave","_mouse","_nextState2","onMouseDown","_nextState3","onMouseUp","_nextState4","syncMethod","chartX","chartY","validateChartX","validateChartY","_element$props$active","isTooltipActive","axisOption","_element$props","radialLines","polarAngles","polarRadius","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","_tooltipItem$props$ac","tooltipItem","_this$state6","_assertThisInitialize","_this$state7","_element$props2","_ref10","activePoint","basePoint","childIndex","_item$item$props","activeDot","_this$state8","_item$item$props2","hasActive","itemEvents","findWithPayload","_this$getItemByXY","_ref11","_ref11$graphicalItem","_ref11$graphicalItem$","xyItem","_this$props$margin$le","_this$props$margin$to","tooltipElem","defaultIndex","independentAxisCoord","dependentAxisCoord","isHorizontal","scatterPlotElement","_ref12","_this$props$margin$le2","_this$props$margin$to2","eventType","boundingRect","containerOffset","_this$state9","xScale","yScale","toolTipData","scaledX","scaledY","isInRange","_this$state10","tooltipEvents","outerEvents","_this$state$offset","_ref13","_ref14","_ref15","_ref16","_this$state$xAxisMap","_this$state$yAxisMap","chartXY","_this$state11","itemDisplayName","activeBarItem","_activeBarItem","compact","_this$props$tabIndex","_this$props$role","_defaultState","keepFromPrevState","updatesToState","_brush$props$startInd","_brush$props","_brush$props$endIndex","_brush$props2","brush","hasDifferentStartOrEndIndex","hasGlobalData","newUpdateId","flatten_1","ComposedChart"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187],"sources":["../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/index.js","../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/react/jsx-runtime.js","../../node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/react-dom/index.js","../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../../node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/react-is/index.js","../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/@rainbow-me/rainbowkit/dist/chunk-DQLAW7KN.js","../../node_modules/@rainbow-me/rainbowkit/dist/chunk-72HZGUJA.js","../../node_modules/@rainbow-me/rainbowkit/dist/chunk-RZWDCITT.js","../../node_modules/@rainbow-me/rainbowkit/dist/chunk-OPUWJDB4.js","../../node_modules/@vanilla-extract/css/functionSerializer/dist/vanilla-extract-css-functionSerializer.browser.esm.js","../../node_modules/@vanilla-extract/css/recipe/dist/vanilla-extract-css-recipe.browser.esm.js","../../node_modules/@vanilla-extract/sprinkles/createUtils/dist/vanilla-extract-sprinkles-createUtils.esm.js","../../node_modules/@vanilla-extract/sprinkles/dist/createSprinkles-74286718.esm.js","../../node_modules/@vanilla-extract/sprinkles/createRuntimeSprinkles/dist/vanilla-extract-sprinkles-createRuntimeSprinkles.esm.js","../../node_modules/viem/_esm/errors/version.js","../../node_modules/viem/_esm/errors/utils.js","../../node_modules/viem/_esm/errors/base.js","../../node_modules/viem/_esm/errors/encoding.js","../../node_modules/viem/_esm/errors/data.js","../../node_modules/viem/_esm/utils/data/pad.js","../../node_modules/viem/_esm/utils/data/isHex.js","../../node_modules/viem/_esm/utils/data/size.js","../../node_modules/viem/_esm/utils/data/trim.js","../../node_modules/viem/_esm/utils/encoding/toBytes.js","../../node_modules/viem/_esm/utils/encoding/fromHex.js","../../node_modules/viem/_esm/utils/encoding/toHex.js","../../node_modules/viem/_esm/actions/wallet/addChain.js","../../node_modules/viem/_esm/utils/abi/formatAbiItem.js","../../node_modules/viem/_esm/errors/abi.js","../../node_modules/viem/_esm/utils/data/concat.js","../../node_modules/viem/_esm/errors/address.js","../../node_modules/viem/_esm/utils/lru.js","../../node_modules/viem/node_modules/@noble/hashes/esm/_assert.js","../../node_modules/viem/node_modules/@noble/hashes/esm/_u64.js","../../node_modules/viem/node_modules/@noble/hashes/esm/utils.js","../../node_modules/viem/node_modules/@noble/hashes/esm/sha3.js","../../node_modules/viem/_esm/utils/hash/keccak256.js","../../node_modules/viem/_esm/utils/address/getAddress.js","../../node_modules/viem/_esm/utils/address/isAddress.js","../../node_modules/viem/_esm/utils/data/slice.js","../../node_modules/viem/_esm/utils/abi/encodeAbiParameters.js","../../node_modules/viem/_esm/utils/abi/encodeDeployData.js","../../node_modules/viem/_esm/accounts/utils/parseAccount.js","../../node_modules/viem/_esm/errors/account.js","../../node_modules/viem/_esm/errors/chain.js","../../node_modules/viem/_esm/utils/chain/assertCurrentChain.js","../../node_modules/viem/_esm/constants/unit.js","../../node_modules/viem/_esm/utils/unit/formatUnits.js","../../node_modules/viem/_esm/utils/unit/formatGwei.js","../../node_modules/viem/_esm/errors/node.js","../../node_modules/viem/_esm/utils/unit/formatEther.js","../../node_modules/viem/_esm/errors/transaction.js","../../node_modules/viem/_esm/utils/stringify.js","../../node_modules/viem/_esm/errors/request.js","../../node_modules/viem/_esm/errors/rpc.js","../../node_modules/viem/_esm/utils/errors/getNodeError.js","../../node_modules/viem/_esm/utils/errors/getTransactionError.js","../../node_modules/viem/_esm/utils/formatters/extract.js","../../node_modules/viem/_esm/utils/formatters/transactionRequest.js","../../node_modules/viem/_esm/utils/getAction.js","../../node_modules/viem/_esm/utils/transaction/assertRequest.js","../../node_modules/viem/_esm/actions/public/getChainId.js","../../node_modules/viem/_esm/errors/fee.js","../../node_modules/viem/_esm/errors/block.js","../../node_modules/viem/_esm/utils/formatters/transaction.js","../../node_modules/viem/_esm/utils/formatters/block.js","../../node_modules/viem/_esm/actions/public/getBlock.js","../../node_modules/viem/_esm/actions/public/getGasPrice.js","../../node_modules/viem/_esm/actions/public/estimateMaxPriorityFeePerGas.js","../../node_modules/viem/_esm/actions/public/estimateFeesPerGas.js","../../node_modules/viem/_esm/errors/estimateGas.js","../../node_modules/viem/_esm/utils/errors/getEstimateGasError.js","../../node_modules/viem/_esm/actions/public/estimateGas.js","../../node_modules/viem/_esm/actions/public/getTransactionCount.js","../../node_modules/viem/_esm/utils/transaction/getTransactionType.js","../../node_modules/viem/_esm/actions/wallet/prepareTransactionRequest.js","../../node_modules/viem/_esm/actions/wallet/sendRawTransaction.js","../../node_modules/viem/_esm/actions/wallet/sendTransaction.js","../../node_modules/viem/_esm/actions/wallet/deployContract.js","../../node_modules/viem/_esm/constants/abis.js","../../node_modules/viem/_esm/errors/cursor.js","../../node_modules/viem/_esm/utils/cursor.js","../../node_modules/viem/_esm/utils/encoding/fromBytes.js","../../node_modules/viem/_esm/utils/abi/decodeAbiParameters.js","../../node_modules/viem/node_modules/abitype/dist/esm/regex.js","../../node_modules/viem/node_modules/abitype/dist/esm/human-readable/formatAbiParameter.js","../../node_modules/viem/node_modules/abitype/dist/esm/human-readable/formatAbiParameters.js","../../node_modules/viem/node_modules/abitype/dist/esm/human-readable/formatAbiItem.js","../../node_modules/viem/_esm/utils/hash/hashSignature.js","../../node_modules/viem/_esm/utils/hash/normalizeSignature.js","../../node_modules/viem/_esm/utils/hash/toSignature.js","../../node_modules/viem/_esm/utils/hash/toSignatureHash.js","../../node_modules/viem/_esm/utils/hash/toEventSelector.js","../../node_modules/viem/_esm/utils/hash/toFunctionSelector.js","../../node_modules/viem/_esm/utils/abi/getAbiItem.js","../../node_modules/viem/_esm/utils/abi/decodeFunctionResult.js","../../node_modules/viem/_esm/utils/abi/encodeFunctionData.js","../../node_modules/viem/_esm/utils/chain/getChainContractAddress.js","../../node_modules/viem/_esm/constants/solidity.js","../../node_modules/viem/_esm/utils/abi/decodeErrorResult.js","../../node_modules/viem/_esm/utils/abi/formatAbiItemWithArgs.js","../../node_modules/viem/_esm/errors/stateOverride.js","../../node_modules/viem/_esm/errors/contract.js","../../node_modules/viem/_esm/utils/ens/errors.js","../../node_modules/viem/_esm/utils/ens/encodedLabelToLabelhash.js","../../node_modules/viem/_esm/utils/ens/namehash.js","../../node_modules/viem/_esm/utils/ens/encodeLabelhash.js","../../node_modules/viem/_esm/utils/ens/labelhash.js","../../node_modules/viem/_esm/utils/ens/packetToBytes.js","../../node_modules/viem/_esm/utils/errors/getContractError.js","../../node_modules/viem/_esm/constants/contract.js","../../node_modules/viem/_esm/utils/errors/getCallError.js","../../node_modules/viem/_esm/utils/promise/createBatchScheduler.js","../../node_modules/viem/_esm/actions/public/call.js","../../node_modules/viem/_esm/actions/public/readContract.js","../../node_modules/viem/_esm/actions/ens/getEnsAddress.js","../../node_modules/viem/_esm/errors/ens.js","../../node_modules/viem/_esm/utils/ens/avatar/utils.js","../../node_modules/viem/_esm/utils/ens/avatar/parseAvatarRecord.js","../../node_modules/viem/_esm/actions/ens/getEnsText.js","../../node_modules/viem/_esm/actions/ens/getEnsAvatar.js","../../node_modules/viem/_esm/actions/ens/getEnsName.js","../../node_modules/viem/_esm/actions/ens/getEnsResolver.js","../../node_modules/viem/_esm/utils/filters/createFilterRequestScope.js","../../node_modules/viem/_esm/actions/public/createBlockFilter.js","../../node_modules/viem/_esm/errors/log.js","../../node_modules/viem/_esm/utils/abi/encodeEventTopics.js","../../node_modules/viem/_esm/actions/public/createContractEventFilter.js","../../node_modules/viem/_esm/actions/public/createEventFilter.js","../../node_modules/viem/_esm/actions/public/createPendingTransactionFilter.js","../../node_modules/viem/_esm/actions/public/estimateContractGas.js","../../node_modules/viem/_esm/actions/public/getBalance.js","../../node_modules/viem/_esm/utils/promise/withCache.js","../../node_modules/viem/_esm/actions/public/getBlockNumber.js","../../node_modules/viem/_esm/actions/public/getBlockTransactionCount.js","../../node_modules/viem/_esm/actions/public/getBytecode.js","../../node_modules/viem/_esm/utils/abi/decodeEventLog.js","../../node_modules/viem/_esm/actions/public/simulateContract.js","../../node_modules/viem/_esm/utils/formatters/log.js","../../node_modules/viem/_esm/utils/observe.js","../../node_modules/viem/_esm/utils/wait.js","../../node_modules/viem/_esm/utils/poll.js","../../node_modules/viem/_esm/actions/public/getFilterChanges.js","../../node_modules/viem/_esm/actions/public/uninstallFilter.js","../../node_modules/viem/_esm/actions/public/watchContractEvent.js","../../node_modules/viem/_esm/actions/wallet/writeContract.js","../../node_modules/viem/_esm/utils/uid.js","../../node_modules/viem/_esm/clients/createClient.js","../../node_modules/viem/_esm/utils/promise/withRetry.js","../../node_modules/viem/_esm/utils/buildRequest.js","../../node_modules/viem/_esm/clients/transports/createTransport.js","../../node_modules/viem/_esm/clients/transports/custom.js","../../node_modules/viem/_esm/errors/transport.js","../../node_modules/viem/_esm/utils/promise/withTimeout.js","../../node_modules/viem/_esm/utils/rpc/id.js","../../node_modules/viem/_esm/utils/rpc/http.js","../../node_modules/viem/_esm/clients/transports/http.js","../../node_modules/viem/_esm/utils/formatters/feeHistory.js","../../node_modules/viem/_esm/actions/public/getFeeHistory.js","../../node_modules/viem/_esm/actions/public/getFilterLogs.js","../../node_modules/viem/_esm/errors/ccip.js","../../node_modules/viem/_esm/utils/address/isAddressEqual.js","../../node_modules/viem/_esm/utils/ccip.js","../../node_modules/viem/_esm/utils/chain/defineChain.js","../../node_modules/viem/_esm/utils/regex.js","../../node_modules/viem/_esm/utils/signature/hashTypedData.js","../../node_modules/viem/_esm/utils/typedData.js","../../node_modules/viem/_esm/utils/formatters/transactionReceipt.js","../../node_modules/viem/_esm/constants/strings.js","../../node_modules/viem/_esm/utils/signature/hashMessage.js","../../node_modules/viem/_esm/utils/formatters/proof.js","../../node_modules/viem/_esm/actions/public/getProof.js","../../node_modules/viem/_esm/actions/public/getStorageAt.js","../../node_modules/viem/_esm/actions/public/getTransaction.js","../../node_modules/viem/_esm/actions/public/getTransactionConfirmations.js","../../node_modules/viem/_esm/actions/public/getTransactionReceipt.js","../../node_modules/viem/_esm/actions/public/multicall.js","../../node_modules/viem/_esm/constants/contracts.js","../../node_modules/viem/node_modules/@noble/curves/esm/abstract/utils.js","../../node_modules/viem/_esm/utils/data/isBytesEqual.js","../../node_modules/viem/_esm/actions/public/verifyHash.js","../../node_modules/viem/_esm/actions/public/verifyMessage.js","../../node_modules/viem/_esm/actions/public/verifyTypedData.js","../../node_modules/viem/_esm/actions/public/watchBlockNumber.js","../../node_modules/viem/_esm/actions/public/waitForTransactionReceipt.js","../../node_modules/viem/_esm/actions/public/watchBlocks.js","../../node_modules/viem/_esm/actions/public/watchEvent.js","../../node_modules/viem/_esm/actions/public/watchPendingTransactions.js","../../node_modules/viem/_esm/clients/decorators/public.js","../../node_modules/viem/_esm/clients/createPublicClient.js","../../node_modules/viem/_esm/actions/wallet/getAddresses.js","../../node_modules/viem/_esm/actions/wallet/getPermissions.js","../../node_modules/viem/_esm/actions/wallet/requestAddresses.js","../../node_modules/viem/_esm/actions/wallet/requestPermissions.js","../../node_modules/viem/_esm/actions/wallet/signMessage.js","../../node_modules/viem/_esm/actions/wallet/signTransaction.js","../../node_modules/viem/_esm/actions/wallet/signTypedData.js","../../node_modules/viem/_esm/actions/wallet/switchChain.js","../../node_modules/viem/_esm/actions/wallet/watchAsset.js","../../node_modules/viem/_esm/clients/decorators/wallet.js","../../node_modules/viem/_esm/utils/abi/parseEventLogs.js","../../node_modules/viem/_esm/actions/public/getLogs.js","../../node_modules/viem/_esm/actions/public/getContractEvents.js","../../node_modules/@wagmi/core/dist/esm/utils/getAction.js","../../node_modules/@wagmi/core/dist/esm/version.js","../../node_modules/@wagmi/core/dist/esm/utils/getVersion.js","../../node_modules/@wagmi/core/dist/esm/errors/base.js","../../node_modules/@wagmi/core/dist/esm/errors/config.js","../../node_modules/@wagmi/core/dist/esm/actions/connect.js","../../node_modules/@wagmi/core/dist/esm/actions/getConnectorClient.js","../../node_modules/@wagmi/core/dist/esm/actions/disconnect.js","../../node_modules/@wagmi/core/dist/esm/utils/getUnit.js","../../node_modules/@wagmi/core/dist/esm/actions/getAccount.js","../../node_modules/@wagmi/core/dist/esm/actions/multicall.js","../../node_modules/@wagmi/core/dist/esm/actions/readContract.js","../../node_modules/@wagmi/core/dist/esm/actions/readContracts.js","../../node_modules/@wagmi/core/dist/esm/actions/getBalance.js","../../node_modules/@wagmi/core/dist/esm/actions/getChainId.js","../../node_modules/@wagmi/core/dist/esm/utils/deepEqual.js","../../node_modules/@wagmi/core/dist/esm/actions/getChains.js","../../node_modules/@wagmi/core/dist/esm/actions/getClient.js","../../node_modules/@wagmi/core/dist/esm/actions/getConnections.js","../../node_modules/@wagmi/core/dist/esm/actions/getConnectors.js","../../node_modules/@wagmi/core/dist/esm/actions/getEnsAvatar.js","../../node_modules/@wagmi/core/dist/esm/actions/getEnsName.js","../../node_modules/@wagmi/core/dist/esm/actions/getPublicClient.js","../../node_modules/@wagmi/core/dist/esm/actions/getWalletClient.js","../../node_modules/@wagmi/core/dist/esm/actions/reconnect.js","../../node_modules/@wagmi/core/dist/esm/actions/signMessage.js","../../node_modules/@wagmi/core/dist/esm/errors/connector.js","../../node_modules/@wagmi/core/dist/esm/actions/switchChain.js","../../node_modules/@wagmi/core/dist/esm/actions/watchAccount.js","../../node_modules/@wagmi/core/dist/esm/actions/watchChainId.js","../../node_modules/@wagmi/core/dist/esm/actions/watchConnections.js","../../node_modules/@wagmi/core/dist/esm/actions/watchConnectors.js","../../node_modules/@wagmi/core/dist/esm/actions/watchPublicClient.js","../../node_modules/@wagmi/core/dist/esm/connectors/createConnector.js","../../node_modules/@wagmi/core/dist/esm/connectors/injected.js","../../node_modules/mipd/dist/esm/utils.js","../../node_modules/mipd/dist/esm/store.js","../../node_modules/zustand/esm/middleware.mjs","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/eventemitter3/index.js","../../node_modules/@wagmi/core/dist/esm/createEmitter.js","../../node_modules/@wagmi/core/dist/esm/utils/deserialize.js","../../node_modules/@wagmi/core/dist/esm/utils/serialize.js","../../node_modules/@wagmi/core/dist/esm/createStorage.js","../../node_modules/@wagmi/core/dist/esm/utils/uid.js","../../node_modules/@wagmi/core/dist/esm/createConfig.js","../../node_modules/@wagmi/core/dist/esm/hydrate.js","../../node_modules/@wagmi/core/dist/esm/utils/extractRpcUrls.js","../../node_modules/wagmi/dist/esm/hydrate.js","../../node_modules/wagmi/dist/esm/context.js","../../node_modules/wagmi/dist/esm/version.js","../../node_modules/wagmi/dist/esm/utils/getVersion.js","../../node_modules/wagmi/dist/esm/errors/base.js","../../node_modules/wagmi/dist/esm/errors/context.js","../../node_modules/wagmi/dist/esm/hooks/useConfig.js","../../node_modules/@wagmi/core/dist/esm/actions/watchChains.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/wagmi/dist/esm/hooks/useSyncExternalStoreWithTracked.js","../../node_modules/wagmi/dist/esm/hooks/useAccount.js","../../node_modules/wagmi/dist/esm/hooks/useAccountEffect.js","../../node_modules/@tanstack/query-core/build/modern/subscribable.js","../../node_modules/@tanstack/query-core/build/modern/utils.js","../../node_modules/@tanstack/query-core/build/modern/focusManager.js","../../node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../node_modules/@tanstack/query-core/build/modern/retryer.js","../../node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../node_modules/@tanstack/query-core/build/modern/removable.js","../../node_modules/@tanstack/query-core/build/modern/query.js","../../node_modules/@tanstack/query-core/build/modern/queryCache.js","../../node_modules/@tanstack/query-core/build/modern/mutation.js","../../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../node_modules/@tanstack/query-core/build/modern/queryClient.js","../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../node_modules/@wagmi/core/dist/esm/query/utils.js","../../node_modules/@wagmi/core/dist/esm/query/connect.js","../../node_modules/@wagmi/core/dist/esm/query/disconnect.js","../../node_modules/@wagmi/core/dist/esm/query/getBalance.js","../../node_modules/@wagmi/core/dist/esm/query/getConnectorClient.js","../../node_modules/@wagmi/core/dist/esm/query/getEnsAvatar.js","../../node_modules/@wagmi/core/dist/esm/query/getEnsName.js","../../node_modules/@wagmi/core/dist/esm/query/getWalletClient.js","../../node_modules/@wagmi/core/dist/esm/query/signMessage.js","../../node_modules/@wagmi/core/dist/esm/query/switchChain.js","../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../node_modules/@tanstack/react-query/build/modern/isRestoring.js","../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../node_modules/@tanstack/react-query/build/modern/utils.js","../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../node_modules/@tanstack/react-query/build/modern/suspense.js","../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../node_modules/@tanstack/react-query/build/modern/useQuery.js","../../node_modules/@tanstack/react-query/build/modern/useMutation.js","../../node_modules/wagmi/dist/esm/utils/query.js","../../node_modules/wagmi/dist/esm/hooks/useChainId.js","../../node_modules/wagmi/dist/esm/hooks/useBalance.js","../../node_modules/wagmi/dist/esm/hooks/useChains.js","../../node_modules/wagmi/dist/esm/hooks/useConnectors.js","../../node_modules/wagmi/dist/esm/hooks/useConnect.js","../../node_modules/wagmi/dist/esm/hooks/useConnections.js","../../node_modules/wagmi/dist/esm/hooks/useConnectorClient.js","../../node_modules/wagmi/dist/esm/hooks/useDisconnect.js","../../node_modules/wagmi/dist/esm/hooks/useEnsAvatar.js","../../node_modules/wagmi/dist/esm/hooks/useEnsName.js","../../node_modules/wagmi/dist/esm/hooks/usePublicClient.js","../../node_modules/wagmi/dist/esm/hooks/useSignMessage.js","../../node_modules/wagmi/dist/esm/hooks/useSwitchChain.js","../../node_modules/wagmi/dist/esm/hooks/useWalletClient.js","../../node_modules/clsx/dist/clsx.mjs","../../node_modules/viem/node_modules/@adraffy/ens-normalize/dist/index.mjs","../../node_modules/viem/_esm/utils/ens/normalize.js","../../node_modules/viem/_esm/chains/definitions/arbitrum.js","../../node_modules/viem/_esm/chains/definitions/avalanche.js","../../node_modules/viem/_esm/chains/definitions/avalancheFuji.js","../../node_modules/viem/_esm/chains/definitions/mainnet.js","../../node_modules/tslib/tslib.es6.mjs","../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../node_modules/use-callback-ref/dist/es2015/assignRef.js","../../node_modules/use-callback-ref/dist/es2015/useRef.js","../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../node_modules/use-sidecar/dist/es2015/medium.js","../../node_modules/use-sidecar/dist/es2015/exports.js","../../node_modules/@rainbow-me/rainbowkit/node_modules/react-remove-scroll/dist/es2015/medium.js","../../node_modules/@rainbow-me/rainbowkit/node_modules/react-remove-scroll/dist/es2015/UI.js","../../node_modules/get-nonce/dist/es2015/index.js","../../node_modules/react-style-singleton/dist/es2015/singleton.js","../../node_modules/react-style-singleton/dist/es2015/hook.js","../../node_modules/react-style-singleton/dist/es2015/component.js","../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../node_modules/@rainbow-me/rainbowkit/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../node_modules/@rainbow-me/rainbowkit/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../node_modules/@rainbow-me/rainbowkit/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../node_modules/@rainbow-me/rainbowkit/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../node_modules/@rainbow-me/rainbowkit/node_modules/react-remove-scroll/dist/es2015/Combination.js","../../node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js","../../node_modules/@vanilla-extract/dynamic/dist/vanilla-extract-dynamic.esm.js","../../node_modules/ua-parser-js/src/ua-parser.js","../../node_modules/qrcode/lib/can-promise.js","../../node_modules/qrcode/lib/core/utils.js","../../node_modules/qrcode/lib/core/error-correction-level.js","../../node_modules/qrcode/lib/core/bit-buffer.js","../../node_modules/qrcode/lib/core/bit-matrix.js","../../node_modules/qrcode/lib/core/alignment-pattern.js","../../node_modules/qrcode/lib/core/finder-pattern.js","../../node_modules/qrcode/lib/core/mask-pattern.js","../../node_modules/qrcode/lib/core/error-correction-code.js","../../node_modules/qrcode/lib/core/galois-field.js","../../node_modules/qrcode/lib/core/polynomial.js","../../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../../node_modules/qrcode/lib/core/version-check.js","../../node_modules/qrcode/lib/core/regex.js","../../node_modules/qrcode/lib/core/mode.js","../../node_modules/qrcode/lib/core/version.js","../../node_modules/qrcode/lib/core/format-info.js","../../node_modules/qrcode/lib/core/numeric-data.js","../../node_modules/qrcode/lib/core/alphanumeric-data.js","../../node_modules/qrcode/lib/core/byte-data.js","../../node_modules/qrcode/lib/core/kanji-data.js","../../node_modules/dijkstrajs/dijkstra.js","../../node_modules/qrcode/lib/core/segments.js","../../node_modules/qrcode/lib/core/qrcode.js","../../node_modules/qrcode/lib/renderer/utils.js","../../node_modules/qrcode/lib/renderer/canvas.js","../../node_modules/qrcode/lib/renderer/svg-tag.js","../../node_modules/qrcode/lib/browser.js","../../node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js","../../node_modules/@wagmi/connectors/dist/esm/safe.js","../../node_modules/@wagmi/connectors/dist/esm/walletConnect.js","../../node_modules/@rainbow-me/rainbowkit/dist/index.js","../../node_modules/lodash/_listCacheClear.js","../../node_modules/lodash/eq.js","../../node_modules/lodash/_assocIndexOf.js","../../node_modules/lodash/_listCacheDelete.js","../../node_modules/lodash/_listCacheGet.js","../../node_modules/lodash/_listCacheHas.js","../../node_modules/lodash/_listCacheSet.js","../../node_modules/lodash/_ListCache.js","../../node_modules/lodash/_stackClear.js","../../node_modules/lodash/_stackDelete.js","../../node_modules/lodash/_stackGet.js","../../node_modules/lodash/_stackHas.js","../../node_modules/lodash/_freeGlobal.js","../../node_modules/lodash/_root.js","../../node_modules/lodash/_Symbol.js","../../node_modules/lodash/_getRawTag.js","../../node_modules/lodash/_objectToString.js","../../node_modules/lodash/_baseGetTag.js","../../node_modules/lodash/isObject.js","../../node_modules/lodash/isFunction.js","../../node_modules/lodash/_coreJsData.js","../../node_modules/lodash/_isMasked.js","../../node_modules/lodash/_toSource.js","../../node_modules/lodash/_baseIsNative.js","../../node_modules/lodash/_getValue.js","../../node_modules/lodash/_getNative.js","../../node_modules/lodash/_Map.js","../../node_modules/lodash/_nativeCreate.js","../../node_modules/lodash/_hashClear.js","../../node_modules/lodash/_hashDelete.js","../../node_modules/lodash/_hashGet.js","../../node_modules/lodash/_hashHas.js","../../node_modules/lodash/_hashSet.js","../../node_modules/lodash/_Hash.js","../../node_modules/lodash/_mapCacheClear.js","../../node_modules/lodash/_isKeyable.js","../../node_modules/lodash/_getMapData.js","../../node_modules/lodash/_mapCacheDelete.js","../../node_modules/lodash/_mapCacheGet.js","../../node_modules/lodash/_mapCacheHas.js","../../node_modules/lodash/_mapCacheSet.js","../../node_modules/lodash/_MapCache.js","../../node_modules/lodash/_stackSet.js","../../node_modules/lodash/_Stack.js","../../node_modules/lodash/_defineProperty.js","../../node_modules/lodash/_baseAssignValue.js","../../node_modules/lodash/_createBaseFor.js","../../node_modules/lodash/_baseFor.js","../../node_modules/lodash/_cloneBuffer.js","../../node_modules/lodash/_Uint8Array.js","../../node_modules/lodash/_cloneArrayBuffer.js","../../node_modules/lodash/_cloneTypedArray.js","../../node_modules/lodash/_copyArray.js","../../node_modules/lodash/_baseCreate.js","../../node_modules/lodash/_overArg.js","../../node_modules/lodash/_getPrototype.js","../../node_modules/lodash/_isPrototype.js","../../node_modules/lodash/_initCloneObject.js","../../node_modules/lodash/isObjectLike.js","../../node_modules/lodash/_baseIsArguments.js","../../node_modules/lodash/isArguments.js","../../node_modules/lodash/isArray.js","../../node_modules/lodash/isLength.js","../../node_modules/lodash/isArrayLike.js","../../node_modules/lodash/stubFalse.js","../../node_modules/lodash/isBuffer.js","../../node_modules/lodash/isPlainObject.js","../../node_modules/lodash/_baseIsTypedArray.js","../../node_modules/lodash/_baseUnary.js","../../node_modules/lodash/_nodeUtil.js","../../node_modules/lodash/isTypedArray.js","../../node_modules/lodash/_assignValue.js","../../node_modules/lodash/_copyObject.js","../../node_modules/lodash/_baseTimes.js","../../node_modules/lodash/_isIndex.js","../../node_modules/lodash/_arrayLikeKeys.js","../../node_modules/lodash/_nativeKeysIn.js","../../node_modules/lodash/_baseKeysIn.js","../../node_modules/lodash/keysIn.js","../../node_modules/lodash/identity.js","../../node_modules/lodash/_apply.js","../../node_modules/lodash/_overRest.js","../../node_modules/lodash/constant.js","../../node_modules/lodash/_baseSetToString.js","../../node_modules/lodash/_shortOut.js","../../node_modules/lodash/_setToString.js","../../node_modules/lodash/_baseRest.js","../../node_modules/lodash/_isIterateeCall.js","../../node_modules/lodash/_trimmedEndIndex.js","../../node_modules/lodash/_baseTrim.js","../../node_modules/lodash/isSymbol.js","../../node_modules/lodash/toNumber.js","../../node_modules/lodash/toFinite.js","../../node_modules/lodash/toInteger.js","../../node_modules/ethers/lib.esm/_version.js","../../node_modules/ethers/lib.esm/utils/properties.js","../../node_modules/ethers/lib.esm/utils/errors.js","../../node_modules/ethers/lib.esm/utils/data.js","../../node_modules/ethers/lib.esm/utils/maths.js","../../node_modules/ethers/lib.esm/utils/base58.js","../../node_modules/ethers/lib.esm/utils/base64-browser.js","../../node_modules/ethers/lib.esm/utils/events.js","../../node_modules/ethers/lib.esm/utils/utf8.js","../../node_modules/ethers/lib.esm/utils/geturl-browser.js","../../node_modules/ethers/lib.esm/utils/fetch.js","../../node_modules/ethers/lib.esm/utils/fixednumber.js","../../node_modules/ethers/lib.esm/utils/rlp-decode.js","../../node_modules/ethers/lib.esm/utils/rlp-encode.js","../../node_modules/ethers/lib.esm/utils/units.js","../../node_modules/ethers/lib.esm/utils/uuid.js","../../node_modules/ethers/lib.esm/abi/coders/abstract-coder.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/_assert.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/crypto.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/utils.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/hmac.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/pbkdf2.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/_sha2.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/sha256.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/_u64.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/sha512.js","../../node_modules/ethers/lib.esm/crypto/crypto-browser.js","../../node_modules/ethers/lib.esm/crypto/hmac.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/sha3.js","../../node_modules/ethers/lib.esm/crypto/keccak.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/ripemd160.js","../../node_modules/ethers/lib.esm/crypto/ripemd160.js","../../node_modules/ethers/lib.esm/crypto/pbkdf2.js","../../node_modules/ethers/lib.esm/crypto/random.js","../../node_modules/ethers/node_modules/@noble/hashes/esm/scrypt.js","../../node_modules/ethers/lib.esm/crypto/scrypt.js","../../node_modules/ethers/lib.esm/crypto/sha2.js","../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/utils.js","../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/modular.js","../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/curve.js","../../node_modules/ethers/node_modules/@noble/curves/esm/abstract/weierstrass.js","../../node_modules/ethers/node_modules/@noble/curves/esm/_shortw_utils.js","../../node_modules/ethers/node_modules/@noble/curves/esm/secp256k1.js","../../node_modules/ethers/lib.esm/constants/addresses.js","../../node_modules/ethers/lib.esm/constants/hashes.js","../../node_modules/ethers/lib.esm/constants/numbers.js","../../node_modules/ethers/lib.esm/constants/strings.js","../../node_modules/ethers/lib.esm/crypto/signature.js","../../node_modules/ethers/lib.esm/crypto/signing-key.js","../../node_modules/ethers/lib.esm/crypto/index.js","../../node_modules/ethers/lib.esm/address/address.js","../../node_modules/ethers/lib.esm/address/contract-address.js","../../node_modules/ethers/lib.esm/address/checks.js","../../node_modules/ethers/lib.esm/abi/typed.js","../../node_modules/ethers/lib.esm/abi/coders/address.js","../../node_modules/ethers/lib.esm/abi/coders/anonymous.js","../../node_modules/ethers/lib.esm/abi/coders/array.js","../../node_modules/ethers/lib.esm/abi/coders/boolean.js","../../node_modules/ethers/lib.esm/abi/coders/bytes.js","../../node_modules/ethers/lib.esm/abi/coders/fixed-bytes.js","../../node_modules/ethers/lib.esm/abi/coders/null.js","../../node_modules/ethers/lib.esm/abi/coders/number.js","../../node_modules/ethers/lib.esm/abi/coders/string.js","../../node_modules/ethers/lib.esm/abi/coders/tuple.js","../../node_modules/ethers/lib.esm/hash/id.js","../../node_modules/@adraffy/ens-normalize/dist/index.mjs","../../node_modules/ethers/lib.esm/hash/namehash.js","../../node_modules/ethers/lib.esm/transaction/accesslist.js","../../node_modules/ethers/lib.esm/transaction/address.js","../../node_modules/ethers/lib.esm/transaction/transaction.js","../../node_modules/ethers/lib.esm/hash/message.js","../../node_modules/ethers/lib.esm/hash/solidity.js","../../node_modules/ethers/lib.esm/hash/typed-data.js","../../node_modules/ethers/lib.esm/abi/fragments.js","../../node_modules/ethers/lib.esm/abi/abi-coder.js","../../node_modules/ethers/lib.esm/abi/bytes32.js","../../node_modules/ethers/lib.esm/abi/interface.js","../../node_modules/ethers/lib.esm/providers/provider.js","../../node_modules/ethers/lib.esm/contract/wrappers.js","../../node_modules/ethers/lib.esm/contract/contract.js","../../node_modules/ethers/lib.esm/contract/factory.js","../../node_modules/ethers/lib.esm/providers/ens-resolver.js","../../node_modules/ethers/lib.esm/providers/format.js","../../node_modules/ethers/lib.esm/providers/plugins-network.js","../../node_modules/ethers/lib.esm/providers/network.js","../../node_modules/ethers/lib.esm/providers/subscriber-polling.js","../../node_modules/ethers/lib.esm/providers/abstract-provider.js","../../node_modules/ethers/lib.esm/providers/abstract-signer.js","../../node_modules/ethers/lib.esm/providers/community.js","../../node_modules/ethers/lib.esm/providers/subscriber-filterid.js","../../node_modules/ethers/lib.esm/providers/provider-jsonrpc.js","../../node_modules/ethers/lib.esm/providers/provider-ankr.js","../../node_modules/ethers/lib.esm/providers/provider-alchemy.js","../../node_modules/ethers/lib.esm/providers/provider-chainstack.js","../../node_modules/ethers/lib.esm/providers/provider-cloudflare.js","../../node_modules/ethers/lib.esm/providers/provider-etherscan.js","../../node_modules/ethers/lib.esm/providers/ws-browser.js","../../node_modules/ethers/lib.esm/providers/provider-socket.js","../../node_modules/ethers/lib.esm/providers/provider-websocket.js","../../node_modules/ethers/lib.esm/providers/provider-infura.js","../../node_modules/ethers/lib.esm/providers/provider-quicknode.js","../../node_modules/ethers/lib.esm/providers/provider-fallback.js","../../node_modules/ethers/lib.esm/providers/default-provider.js","../../node_modules/ethers/lib.esm/providers/signer-noncemanager.js","../../node_modules/ethers/lib.esm/providers/provider-browser.js","../../node_modules/ethers/lib.esm/providers/provider-pocket.js","../../node_modules/ethers/lib.esm/providers/provider-ipcsocket-browser.js","../../node_modules/ethers/lib.esm/wallet/base-wallet.js","../../node_modules/ethers/lib.esm/wordlists/decode-owl.js","../../node_modules/ethers/lib.esm/wordlists/wordlist.js","../../node_modules/ethers/lib.esm/wordlists/wordlist-owl.js","../../node_modules/ethers/lib.esm/wordlists/lang-en.js","../../node_modules/ethers/lib.esm/wallet/mnemonic.js","../../node_modules/aes-js/lib.esm/aes.js","../../node_modules/aes-js/lib.esm/mode.js","../../node_modules/aes-js/lib.esm/mode-cbc.js","../../node_modules/aes-js/lib.esm/mode-ctr.js","../../node_modules/aes-js/lib.esm/padding.js","../../node_modules/ethers/lib.esm/wallet/utils.js","../../node_modules/ethers/lib.esm/wallet/json-keystore.js","../../node_modules/ethers/lib.esm/wallet/hdwallet.js","../../node_modules/ethers/lib.esm/wallet/json-crowdsale.js","../../node_modules/ethers/lib.esm/wallet/wallet.js","../../node_modules/ethers/lib.esm/wordlists/bit-reader.js","../../node_modules/ethers/lib.esm/wordlists/decode-owla.js","../../node_modules/ethers/lib.esm/wordlists/wordlist-owla.js","../../node_modules/ethers/lib.esm/wordlists/wordlists-browser.js","../../node_modules/lodash/_arrayMap.js","../../node_modules/lodash/_nativeKeys.js","../../node_modules/lodash/_baseKeys.js","../../node_modules/lodash/keys.js","../../node_modules/lodash/_baseForOwn.js","../../node_modules/lodash/_setCacheAdd.js","../../node_modules/lodash/_setCacheHas.js","../../node_modules/lodash/_SetCache.js","../../node_modules/lodash/_arraySome.js","../../node_modules/lodash/_cacheHas.js","../../node_modules/lodash/_equalArrays.js","../../node_modules/lodash/_mapToArray.js","../../node_modules/lodash/_setToArray.js","../../node_modules/lodash/_equalByTag.js","../../node_modules/lodash/_arrayPush.js","../../node_modules/lodash/_baseGetAllKeys.js","../../node_modules/lodash/_arrayFilter.js","../../node_modules/lodash/stubArray.js","../../node_modules/lodash/_getSymbols.js","../../node_modules/lodash/_getAllKeys.js","../../node_modules/lodash/_equalObjects.js","../../node_modules/lodash/_DataView.js","../../node_modules/lodash/_Promise.js","../../node_modules/lodash/_Set.js","../../node_modules/lodash/_WeakMap.js","../../node_modules/lodash/_getTag.js","../../node_modules/lodash/_baseIsEqualDeep.js","../../node_modules/lodash/_baseIsEqual.js","../../node_modules/lodash/_baseIsMatch.js","../../node_modules/lodash/_isStrictComparable.js","../../node_modules/lodash/_getMatchData.js","../../node_modules/lodash/_matchesStrictComparable.js","../../node_modules/lodash/_baseMatches.js","../../node_modules/lodash/_isKey.js","../../node_modules/lodash/memoize.js","../../node_modules/lodash/_memoizeCapped.js","../../node_modules/lodash/_stringToPath.js","../../node_modules/lodash/_baseToString.js","../../node_modules/lodash/toString.js","../../node_modules/lodash/_castPath.js","../../node_modules/lodash/_toKey.js","../../node_modules/lodash/_baseGet.js","../../node_modules/lodash/get.js","../../node_modules/lodash/_baseHasIn.js","../../node_modules/lodash/_hasPath.js","../../node_modules/lodash/hasIn.js","../../node_modules/lodash/_baseMatchesProperty.js","../../node_modules/lodash/_baseProperty.js","../../node_modules/lodash/_basePropertyDeep.js","../../node_modules/lodash/property.js","../../node_modules/lodash/_baseIteratee.js","../../node_modules/lodash/mapValues.js","../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../node_modules/date-fns/esm/toDate/index.js","../../node_modules/date-fns/esm/addDays/index.js","../../node_modules/date-fns/esm/addMonths/index.js","../../node_modules/date-fns/esm/add/index.js","../../node_modules/date-fns/esm/isWeekend/index.js","../../node_modules/date-fns/esm/isSunday/index.js","../../node_modules/date-fns/esm/isSaturday/index.js","../../node_modules/date-fns/esm/addBusinessDays/index.js","../../node_modules/date-fns/esm/addMilliseconds/index.js","../../node_modules/date-fns/esm/addHours/index.js","../../node_modules/date-fns/esm/startOfWeek/index.js","../../node_modules/date-fns/esm/startOfISOWeek/index.js","../../node_modules/date-fns/esm/getISOWeekYear/index.js","../../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../node_modules/date-fns/esm/startOfDay/index.js","../../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../../node_modules/date-fns/esm/setISOWeekYear/index.js","../../node_modules/date-fns/esm/addISOWeekYears/index.js","../../node_modules/date-fns/esm/addMinutes/index.js","../../node_modules/date-fns/esm/addQuarters/index.js","../../node_modules/date-fns/esm/addSeconds/index.js","../../node_modules/date-fns/esm/addWeeks/index.js","../../node_modules/date-fns/esm/addYears/index.js","../../node_modules/date-fns/esm/areIntervalsOverlapping/index.js","../../node_modules/date-fns/esm/max/index.js","../../node_modules/date-fns/esm/min/index.js","../../node_modules/date-fns/esm/clamp/index.js","../../node_modules/date-fns/esm/closestIndexTo/index.js","../../node_modules/date-fns/esm/closestTo/index.js","../../node_modules/date-fns/esm/compareAsc/index.js","../../node_modules/date-fns/esm/compareDesc/index.js","../../node_modules/date-fns/esm/constants/index.js","../../node_modules/date-fns/esm/daysToWeeks/index.js","../../node_modules/date-fns/esm/isSameDay/index.js","../../node_modules/date-fns/esm/isDate/index.js","../../node_modules/date-fns/esm/isValid/index.js","../../node_modules/date-fns/esm/differenceInBusinessDays/index.js","../../node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","../../node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","../../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../../node_modules/date-fns/esm/getQuarter/index.js","../../node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","../../node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","../../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../../node_modules/date-fns/esm/differenceInDays/index.js","../../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../../node_modules/date-fns/esm/differenceInHours/index.js","../../node_modules/date-fns/esm/subISOWeekYears/index.js","../../node_modules/date-fns/esm/differenceInISOWeekYears/index.js","../../node_modules/date-fns/esm/differenceInMinutes/index.js","../../node_modules/date-fns/esm/endOfDay/index.js","../../node_modules/date-fns/esm/endOfMonth/index.js","../../node_modules/date-fns/esm/isLastDayOfMonth/index.js","../../node_modules/date-fns/esm/differenceInMonths/index.js","../../node_modules/date-fns/esm/differenceInQuarters/index.js","../../node_modules/date-fns/esm/differenceInSeconds/index.js","../../node_modules/date-fns/esm/differenceInWeeks/index.js","../../node_modules/date-fns/esm/differenceInYears/index.js","../../node_modules/date-fns/esm/eachDayOfInterval/index.js","../../node_modules/date-fns/esm/eachHourOfInterval/index.js","../../node_modules/date-fns/esm/startOfMinute/index.js","../../node_modules/date-fns/esm/eachMinuteOfInterval/index.js","../../node_modules/date-fns/esm/eachMonthOfInterval/index.js","../../node_modules/date-fns/esm/startOfQuarter/index.js","../../node_modules/date-fns/esm/eachQuarterOfInterval/index.js","../../node_modules/date-fns/esm/eachWeekOfInterval/index.js","../../node_modules/date-fns/esm/eachWeekendOfInterval/index.js","../../node_modules/date-fns/esm/startOfMonth/index.js","../../node_modules/date-fns/esm/eachWeekendOfMonth/index.js","../../node_modules/date-fns/esm/startOfYear/index.js","../../node_modules/date-fns/esm/endOfYear/index.js","../../node_modules/date-fns/esm/eachWeekendOfYear/index.js","../../node_modules/date-fns/esm/eachYearOfInterval/index.js","../../node_modules/date-fns/esm/endOfDecade/index.js","../../node_modules/date-fns/esm/endOfHour/index.js","../../node_modules/date-fns/esm/endOfWeek/index.js","../../node_modules/date-fns/esm/endOfISOWeek/index.js","../../node_modules/date-fns/esm/endOfISOWeekYear/index.js","../../node_modules/date-fns/esm/endOfMinute/index.js","../../node_modules/date-fns/esm/endOfQuarter/index.js","../../node_modules/date-fns/esm/endOfSecond/index.js","../../node_modules/date-fns/esm/endOfToday/index.js","../../node_modules/date-fns/esm/endOfTomorrow/index.js","../../node_modules/date-fns/esm/endOfYesterday/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../node_modules/date-fns/esm/locale/en-US/index.js","../../node_modules/date-fns/esm/subMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/format/formatters/index.js","../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../node_modules/date-fns/esm/format/index.js","../../node_modules/date-fns/esm/_lib/assign/index.js","../../node_modules/date-fns/esm/_lib/cloneObject/index.js","../../node_modules/date-fns/esm/formatDistance/index.js","../../node_modules/date-fns/esm/formatDistanceStrict/index.js","../../node_modules/date-fns/esm/formatDistanceToNow/index.js","../../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../../node_modules/date-fns/esm/formatDuration/index.js","../../node_modules/date-fns/esm/formatISO/index.js","../../node_modules/date-fns/esm/formatISO9075/index.js","../../node_modules/date-fns/esm/formatISODuration/index.js","../../node_modules/date-fns/esm/formatRFC3339/index.js","../../node_modules/date-fns/esm/formatRFC7231/index.js","../../node_modules/date-fns/esm/formatRelative/index.js","../../node_modules/date-fns/esm/fromUnixTime/index.js","../../node_modules/date-fns/esm/getDate/index.js","../../node_modules/date-fns/esm/getDay/index.js","../../node_modules/date-fns/esm/getDayOfYear/index.js","../../node_modules/date-fns/esm/getDaysInMonth/index.js","../../node_modules/date-fns/esm/isLeapYear/index.js","../../node_modules/date-fns/esm/getDaysInYear/index.js","../../node_modules/date-fns/esm/getDecade/index.js","../../node_modules/date-fns/esm/getHours/index.js","../../node_modules/date-fns/esm/getISODay/index.js","../../node_modules/date-fns/esm/getISOWeek/index.js","../../node_modules/date-fns/esm/getISOWeeksInYear/index.js","../../node_modules/date-fns/esm/getMilliseconds/index.js","../../node_modules/date-fns/esm/getMinutes/index.js","../../node_modules/date-fns/esm/getMonth/index.js","../../node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","../../node_modules/date-fns/esm/getSeconds/index.js","../../node_modules/date-fns/esm/getTime/index.js","../../node_modules/date-fns/esm/getUnixTime/index.js","../../node_modules/date-fns/esm/getWeekYear/index.js","../../node_modules/date-fns/esm/startOfWeekYear/index.js","../../node_modules/date-fns/esm/getWeek/index.js","../../node_modules/date-fns/esm/getWeekOfMonth/index.js","../../node_modules/date-fns/esm/lastDayOfMonth/index.js","../../node_modules/date-fns/esm/getWeeksInMonth/index.js","../../node_modules/date-fns/esm/getYear/index.js","../../node_modules/date-fns/esm/hoursToMilliseconds/index.js","../../node_modules/date-fns/esm/hoursToMinutes/index.js","../../node_modules/date-fns/esm/hoursToSeconds/index.js","../../node_modules/date-fns/esm/subDays/index.js","../../node_modules/date-fns/esm/subMonths/index.js","../../node_modules/date-fns/esm/sub/index.js","../../node_modules/date-fns/esm/intervalToDuration/index.js","../../node_modules/date-fns/esm/intlFormat/index.js","../../node_modules/date-fns/esm/isAfter/index.js","../../node_modules/date-fns/esm/isBefore/index.js","../../node_modules/date-fns/esm/isEqual/index.js","../../node_modules/date-fns/esm/isExists/index.js","../../node_modules/date-fns/esm/isFirstDayOfMonth/index.js","../../node_modules/date-fns/esm/isFriday/index.js","../../node_modules/date-fns/esm/isFuture/index.js","../../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../../node_modules/date-fns/esm/parse/index.js","../../node_modules/date-fns/esm/isMatch/index.js","../../node_modules/date-fns/esm/isMonday/index.js","../../node_modules/date-fns/esm/isPast/index.js","../../node_modules/date-fns/esm/startOfHour/index.js","../../node_modules/date-fns/esm/isSameHour/index.js","../../node_modules/date-fns/esm/isSameWeek/index.js","../../node_modules/date-fns/esm/isSameISOWeek/index.js","../../node_modules/date-fns/esm/isSameISOWeekYear/index.js","../../node_modules/date-fns/esm/isSameMinute/index.js","../../node_modules/date-fns/esm/isSameMonth/index.js","../../node_modules/date-fns/esm/isSameQuarter/index.js","../../node_modules/date-fns/esm/startOfSecond/index.js","../../node_modules/date-fns/esm/isSameSecond/index.js","../../node_modules/date-fns/esm/isSameYear/index.js","../../node_modules/date-fns/esm/isThisHour/index.js","../../node_modules/date-fns/esm/isThisISOWeek/index.js","../../node_modules/date-fns/esm/isThisMinute/index.js","../../node_modules/date-fns/esm/isThisMonth/index.js","../../node_modules/date-fns/esm/isThisQuarter/index.js","../../node_modules/date-fns/esm/isThisSecond/index.js","../../node_modules/date-fns/esm/isThisWeek/index.js","../../node_modules/date-fns/esm/isThisYear/index.js","../../node_modules/date-fns/esm/isThursday/index.js","../../node_modules/date-fns/esm/isToday/index.js","../../node_modules/date-fns/esm/isTomorrow/index.js","../../node_modules/date-fns/esm/isTuesday/index.js","../../node_modules/date-fns/esm/isWednesday/index.js","../../node_modules/date-fns/esm/isWithinInterval/index.js","../../node_modules/date-fns/esm/isYesterday/index.js","../../node_modules/date-fns/esm/lastDayOfDecade/index.js","../../node_modules/date-fns/esm/lastDayOfWeek/index.js","../../node_modules/date-fns/esm/lastDayOfISOWeek/index.js","../../node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","../../node_modules/date-fns/esm/lastDayOfQuarter/index.js","../../node_modules/date-fns/esm/lastDayOfYear/index.js","../../node_modules/date-fns/esm/lightFormat/index.js","../../node_modules/date-fns/esm/milliseconds/index.js","../../node_modules/date-fns/esm/millisecondsToHours/index.js","../../node_modules/date-fns/esm/millisecondsToMinutes/index.js","../../node_modules/date-fns/esm/millisecondsToSeconds/index.js","../../node_modules/date-fns/esm/minutesToHours/index.js","../../node_modules/date-fns/esm/minutesToMilliseconds/index.js","../../node_modules/date-fns/esm/minutesToSeconds/index.js","../../node_modules/date-fns/esm/monthsToQuarters/index.js","../../node_modules/date-fns/esm/monthsToYears/index.js","../../node_modules/date-fns/esm/nextDay/index.js","../../node_modules/date-fns/esm/nextFriday/index.js","../../node_modules/date-fns/esm/nextMonday/index.js","../../node_modules/date-fns/esm/nextSaturday/index.js","../../node_modules/date-fns/esm/nextSunday/index.js","../../node_modules/date-fns/esm/nextThursday/index.js","../../node_modules/date-fns/esm/nextTuesday/index.js","../../node_modules/date-fns/esm/nextWednesday/index.js","../../node_modules/date-fns/esm/parseISO/index.js","../../node_modules/date-fns/esm/parseJSON/index.js","../../node_modules/date-fns/esm/previousDay/index.js","../../node_modules/date-fns/esm/previousFriday/index.js","../../node_modules/date-fns/esm/previousMonday/index.js","../../node_modules/date-fns/esm/previousSaturday/index.js","../../node_modules/date-fns/esm/previousSunday/index.js","../../node_modules/date-fns/esm/previousThursday/index.js","../../node_modules/date-fns/esm/previousTuesday/index.js","../../node_modules/date-fns/esm/previousWednesday/index.js","../../node_modules/date-fns/esm/quartersToMonths/index.js","../../node_modules/date-fns/esm/quartersToYears/index.js","../../node_modules/date-fns/esm/roundToNearestMinutes/index.js","../../node_modules/date-fns/esm/secondsToHours/index.js","../../node_modules/date-fns/esm/secondsToMilliseconds/index.js","../../node_modules/date-fns/esm/secondsToMinutes/index.js","../../node_modules/date-fns/esm/setMonth/index.js","../../node_modules/date-fns/esm/set/index.js","../../node_modules/date-fns/esm/setDate/index.js","../../node_modules/date-fns/esm/setDay/index.js","../../node_modules/date-fns/esm/setDayOfYear/index.js","../../node_modules/date-fns/esm/setHours/index.js","../../node_modules/date-fns/esm/setISODay/index.js","../../node_modules/date-fns/esm/setISOWeek/index.js","../../node_modules/date-fns/esm/setMilliseconds/index.js","../../node_modules/date-fns/esm/setMinutes/index.js","../../node_modules/date-fns/esm/setQuarter/index.js","../../node_modules/date-fns/esm/setSeconds/index.js","../../node_modules/date-fns/esm/setWeek/index.js","../../node_modules/date-fns/esm/setWeekYear/index.js","../../node_modules/date-fns/esm/setYear/index.js","../../node_modules/date-fns/esm/startOfDecade/index.js","../../node_modules/date-fns/esm/startOfToday/index.js","../../node_modules/date-fns/esm/startOfTomorrow/index.js","../../node_modules/date-fns/esm/startOfYesterday/index.js","../../node_modules/date-fns/esm/subBusinessDays/index.js","../../node_modules/date-fns/esm/subHours/index.js","../../node_modules/date-fns/esm/subMinutes/index.js","../../node_modules/date-fns/esm/subQuarters/index.js","../../node_modules/date-fns/esm/subSeconds/index.js","../../node_modules/date-fns/esm/subWeeks/index.js","../../node_modules/date-fns/esm/subYears/index.js","../../node_modules/date-fns/esm/weeksToDays/index.js","../../node_modules/date-fns/esm/yearsToMonths/index.js","../../node_modules/date-fns/esm/yearsToQuarters/index.js","../../node_modules/lodash/noop.js","../../node_modules/lodash/_createBaseEach.js","../../node_modules/lodash/_baseEach.js","../../node_modules/lodash/_baseMap.js","../../node_modules/lodash/_baseSortBy.js","../../node_modules/lodash/_compareAscending.js","../../node_modules/lodash/_compareMultiple.js","../../node_modules/lodash/_baseOrderBy.js","../../node_modules/lodash/_baseExtremum.js","../../node_modules/lodash/_baseLt.js","../../node_modules/lodash/minBy.js","../../node_modules/lodash/_baseGt.js","../../node_modules/lodash/maxBy.js","../../node_modules/lodash/_baseSlice.js","../../node_modules/lodash/now.js","../../node_modules/lodash/debounce.js","../../node_modules/lodash/throttle.js","../../node_modules/lodash/_isFlattenable.js","../../node_modules/lodash/_baseFlatten.js","../../node_modules/lodash/isEqual.js","../../node_modules/lodash/map.js","../../node_modules/lodash/flatMap.js","../../node_modules/lodash/_getSymbolsIn.js","../../node_modules/lodash/_getAllKeysIn.js","../../node_modules/lodash/_baseFindIndex.js","../../node_modules/lodash/_baseIsNaN.js","../../node_modules/lodash/_strictIndexOf.js","../../node_modules/lodash/_baseIndexOf.js","../../node_modules/lodash/_arrayIncludes.js","../../node_modules/lodash/_arrayIncludesWith.js","../../node_modules/lodash/_createSet.js","../../node_modules/lodash/_baseUniq.js","../../node_modules/lodash/uniqBy.js","../../node_modules/decimal.js-light/decimal.mjs","../../node_modules/lodash/isNil.js","../../node_modules/lodash/isString.js","../../node_modules/lodash/isNumber.js","../../node_modules/lodash/isNaN.js","../../node_modules/recharts/es6/util/DataUtils.js","../../node_modules/recharts/es6/util/ShallowEqual.js","../../node_modules/recharts/es6/util/types.js","../../node_modules/recharts/es6/util/ReactUtils.js","../../node_modules/recharts/es6/container/Surface.js","../../node_modules/recharts/es6/container/Layer.js","../../node_modules/recharts/es6/util/LogUtils.js","../../node_modules/lodash/_castSlice.js","../../node_modules/lodash/_hasUnicode.js","../../node_modules/lodash/_asciiToArray.js","../../node_modules/lodash/_unicodeToArray.js","../../node_modules/lodash/_stringToArray.js","../../node_modules/lodash/_createCaseFirst.js","../../node_modules/lodash/upperFirst.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/path.js","../../node_modules/d3-shape/src/array.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/area.js","../../node_modules/d3-shape/src/curve/bump.js","../../node_modules/d3-shape/src/symbol/circle.js","../../node_modules/d3-shape/src/symbol/cross.js","../../node_modules/d3-shape/src/symbol/diamond.js","../../node_modules/d3-shape/src/symbol/square.js","../../node_modules/d3-shape/src/symbol/star.js","../../node_modules/d3-shape/src/symbol/triangle.js","../../node_modules/d3-shape/src/symbol/wye.js","../../node_modules/d3-shape/src/symbol.js","../../node_modules/d3-shape/src/noop.js","../../node_modules/d3-shape/src/curve/basis.js","../../node_modules/d3-shape/src/curve/basisClosed.js","../../node_modules/d3-shape/src/curve/basisOpen.js","../../node_modules/d3-shape/src/curve/linearClosed.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/natural.js","../../node_modules/d3-shape/src/curve/step.js","../../node_modules/d3-shape/src/offset/none.js","../../node_modules/d3-shape/src/order/none.js","../../node_modules/d3-shape/src/stack.js","../../node_modules/d3-shape/src/offset/expand.js","../../node_modules/d3-shape/src/offset/silhouette.js","../../node_modules/d3-shape/src/offset/wiggle.js","../../node_modules/recharts/es6/shape/Symbols.js","../../node_modules/recharts/es6/component/DefaultLegendContent.js","../../node_modules/recharts/es6/util/payload/getUniqPayload.js","../../node_modules/recharts/es6/component/Legend.js","../../node_modules/lodash/sortBy.js","../../node_modules/recharts/es6/component/DefaultTooltipContent.js","../../node_modules/recharts/es6/util/tooltip/translate.js","../../node_modules/recharts/es6/component/TooltipBoundingBox.js","../../node_modules/recharts/es6/util/Global.js","../../node_modules/recharts/es6/component/Tooltip.js","../../node_modules/recharts/es6/component/ResponsiveContainer.js","../../node_modules/recharts/es6/component/Cell.js","../../node_modules/recharts/es6/util/DOMUtils.js","../../node_modules/recharts/es6/util/ReduceCSSCalc.js","../../node_modules/recharts/es6/component/Text.js","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/descending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/number.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/internmap/src/index.js","../../node_modules/d3-array/src/sort.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-array/src/max.js","../../node_modules/d3-array/src/min.js","../../node_modules/d3-array/src/quickselect.js","../../node_modules/d3-array/src/quantile.js","../../node_modules/d3-array/src/range.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-scale/src/ordinal.js","../../node_modules/d3-scale/src/band.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/numberArray.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/piecewise.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-scale/src/identity.js","../../node_modules/d3-scale/src/nice.js","../../node_modules/d3-scale/src/log.js","../../node_modules/d3-scale/src/symlog.js","../../node_modules/d3-scale/src/pow.js","../../node_modules/d3-scale/src/radial.js","../../node_modules/d3-scale/src/quantile.js","../../node_modules/d3-scale/src/quantize.js","../../node_modules/d3-scale/src/threshold.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/ticks.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-scale/src/time.js","../../node_modules/d3-scale/src/utcTime.js","../../node_modules/d3-scale/src/sequential.js","../../node_modules/d3-scale/src/sequentialQuantile.js","../../node_modules/d3-scale/src/diverging.js","../../node_modules/lodash/max.js","../../node_modules/lodash/min.js","../../node_modules/recharts-scale/es6/util/utils.js","../../node_modules/recharts-scale/es6/util/arithmetic.js","../../node_modules/recharts-scale/es6/getNiceTickValues.js","../../node_modules/recharts/es6/cartesian/ErrorBar.js","../../node_modules/recharts/es6/util/getLegendProps.js","../../node_modules/recharts/es6/util/ChartUtils.js","../../node_modules/recharts/es6/util/PolarUtils.js","../../node_modules/recharts/es6/component/Label.js","../../node_modules/lodash/last.js","../../node_modules/recharts/es6/component/LabelList.js","../../node_modules/recharts/es6/shape/Sector.js","../../node_modules/recharts/es6/shape/Curve.js","../../node_modules/fast-equals/dist/esm/index.mjs","../../node_modules/react-smooth/es6/setRafTimeout.js","../../node_modules/react-smooth/es6/AnimateManager.js","../../node_modules/react-smooth/es6/util.js","../../node_modules/react-smooth/es6/easing.js","../../node_modules/react-smooth/es6/configUpdate.js","../../node_modules/react-smooth/es6/Animate.js","../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../node_modules/react-smooth/es6/AnimateGroupChild.js","../../node_modules/react-smooth/es6/AnimateGroup.js","../../node_modules/recharts/es6/shape/Rectangle.js","../../node_modules/recharts/es6/shape/Dot.js","../../node_modules/recharts/es6/shape/Cross.js","../../node_modules/lodash/isBoolean.js","../../node_modules/recharts/es6/shape/Trapezoid.js","../../node_modules/recharts/es6/util/ActiveShapeUtils.js","../../node_modules/lodash/_baseRange.js","../../node_modules/lodash/_createRange.js","../../node_modules/lodash/range.js","../../node_modules/recharts/es6/util/CssPrefixUtils.js","../../node_modules/recharts/es6/cartesian/Brush.js","../../node_modules/lodash/_baseSome.js","../../node_modules/lodash/some.js","../../node_modules/recharts/es6/util/IfOverflowMatches.js","../../node_modules/lodash/_arrayEvery.js","../../node_modules/lodash/_baseEvery.js","../../node_modules/lodash/every.js","../../node_modules/recharts/es6/util/BarUtils.js","../../node_modules/recharts/es6/cartesian/Bar.js","../../node_modules/recharts/es6/util/CartesianUtils.js","../../node_modules/lodash/_createFind.js","../../node_modules/lodash/findIndex.js","../../node_modules/lodash/find.js","../../node_modules/recharts/es6/util/calculateViewBox.js","../../node_modules/recharts/es6/context/chartLayoutContext.js","../../node_modules/recharts/es6/cartesian/ReferenceLine.js","../../node_modules/recharts/es6/cartesian/ReferenceDot.js","../../node_modules/recharts/es6/cartesian/ReferenceArea.js","../../node_modules/recharts/es6/util/getEveryNthWithCondition.js","../../node_modules/recharts/es6/util/TickUtils.js","../../node_modules/recharts/es6/cartesian/getEquidistantTicks.js","../../node_modules/recharts/es6/cartesian/getTicks.js","../../node_modules/recharts/es6/cartesian/CartesianAxis.js","../../node_modules/recharts/es6/cartesian/CartesianGrid.js","../../node_modules/recharts/es6/cartesian/Line.js","../../node_modules/recharts/es6/cartesian/Area.js","../../node_modules/recharts/es6/cartesian/ZAxis.js","../../node_modules/recharts/es6/util/ScatterUtils.js","../../node_modules/recharts/es6/cartesian/Scatter.js","../../node_modules/recharts/es6/cartesian/XAxis.js","../../node_modules/recharts/es6/cartesian/YAxis.js","../../node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","../../node_modules/recharts/node_modules/eventemitter3/index.js","../../node_modules/recharts/es6/util/Events.js","../../node_modules/recharts/es6/chart/AccessibilityManager.js","../../node_modules/recharts/es6/util/isDomainSpecifiedByUser.js","../../node_modules/recharts/es6/util/cursor/getCursorRectangle.js","../../node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js","../../node_modules/recharts/es6/util/cursor/getCursorPoints.js","../../node_modules/recharts/es6/component/Cursor.js","../../node_modules/recharts/es6/chart/generateCategoricalChart.js","../../node_modules/lodash/flatten.js","../../node_modules/recharts/es6/chart/ComposedChart.js"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 ({\n blurs: {\n modalOverlay: blurs[overlayBlur].modalOverlay\n },\n fonts: {\n body: fontStacks[fontStack]\n },\n radii: {\n actionButton: radiusScales[borderRadius].actionButton,\n connectButton: radiusScales[borderRadius].connectButton,\n menuButton: radiusScales[borderRadius].connectButton,\n modal: radiusScales[borderRadius].modal,\n modalMobile: radiusScales[borderRadius].modalMobile\n }\n});\n\nexport {\n baseTheme\n};\n","\"use client\";\nimport {\n baseTheme\n} from \"./chunk-DQLAW7KN.js\";\n\n// src/themes/lightTheme.ts\nvar accentColors = {\n blue: { accentColor: \"#0E76FD\", accentColorForeground: \"#FFF\" },\n green: { accentColor: \"#1DB847\", accentColorForeground: \"#FFF\" },\n orange: { accentColor: \"#FF801F\", accentColorForeground: \"#FFF\" },\n pink: { accentColor: \"#FF5CA0\", accentColorForeground: \"#FFF\" },\n purple: { accentColor: \"#5F5AFA\", accentColorForeground: \"#FFF\" },\n red: { accentColor: \"#FA423C\", accentColorForeground: \"#FFF\" }\n};\nvar defaultAccentColor = accentColors.blue;\nvar lightTheme = ({\n accentColor = defaultAccentColor.accentColor,\n accentColorForeground = defaultAccentColor.accentColorForeground,\n ...baseThemeOptions\n} = {}) => ({\n ...baseTheme(baseThemeOptions),\n colors: {\n accentColor,\n accentColorForeground,\n actionButtonBorder: \"rgba(0, 0, 0, 0.04)\",\n actionButtonBorderMobile: \"rgba(0, 0, 0, 0.06)\",\n actionButtonSecondaryBackground: \"rgba(0, 0, 0, 0.06)\",\n closeButton: \"rgba(60, 66, 66, 0.8)\",\n closeButtonBackground: \"rgba(0, 0, 0, 0.06)\",\n connectButtonBackground: \"#FFF\",\n connectButtonBackgroundError: \"#FF494A\",\n connectButtonInnerBackground: \"linear-gradient(0deg, rgba(0, 0, 0, 0.03), rgba(0, 0, 0, 0.06))\",\n connectButtonText: \"#25292E\",\n connectButtonTextError: \"#FFF\",\n connectionIndicator: \"#30E000\",\n downloadBottomCardBackground: \"linear-gradient(126deg, rgba(255, 255, 255, 0) 9.49%, rgba(171, 171, 171, 0.04) 71.04%), #FFFFFF\",\n downloadTopCardBackground: \"linear-gradient(126deg, rgba(171, 171, 171, 0.2) 9.49%, rgba(255, 255, 255, 0) 71.04%), #FFFFFF\",\n error: \"#FF494A\",\n generalBorder: \"rgba(0, 0, 0, 0.06)\",\n generalBorderDim: \"rgba(0, 0, 0, 0.03)\",\n menuItemBackground: \"rgba(60, 66, 66, 0.1)\",\n modalBackdrop: \"rgba(0, 0, 0, 0.3)\",\n modalBackground: \"#FFF\",\n modalBorder: \"transparent\",\n modalText: \"#25292E\",\n modalTextDim: \"rgba(60, 66, 66, 0.3)\",\n modalTextSecondary: \"rgba(60, 66, 66, 0.6)\",\n profileAction: \"#FFF\",\n profileActionHover: \"rgba(255, 255, 255, 0.5)\",\n profileForeground: \"rgba(60, 66, 66, 0.06)\",\n selectedOptionBorder: \"rgba(60, 66, 66, 0.1)\",\n standby: \"#FFD641\"\n },\n shadows: {\n connectButton: \"0px 4px 12px rgba(0, 0, 0, 0.1)\",\n dialog: \"0px 8px 32px rgba(0, 0, 0, 0.32)\",\n profileDetailsAction: \"0px 2px 6px rgba(37, 41, 46, 0.04)\",\n selectedOption: \"0px 2px 6px rgba(0, 0, 0, 0.24)\",\n selectedWallet: \"0px 2px 6px rgba(0, 0, 0, 0.12)\",\n walletLogo: \"0px 2px 16px rgba(0, 0, 0, 0.16)\"\n }\n});\nlightTheme.accentColors = accentColors;\n\nexport {\n lightTheme\n};\n","\"use client\";\nimport {\n baseTheme\n} from \"./chunk-DQLAW7KN.js\";\n\n// src/themes/darkTheme.ts\nvar darkGrey = \"#1A1B1F\";\nvar accentColors = {\n blue: { accentColor: \"#3898FF\", accentColorForeground: \"#FFF\" },\n green: { accentColor: \"#4BD166\", accentColorForeground: darkGrey },\n orange: { accentColor: \"#FF983D\", accentColorForeground: darkGrey },\n pink: { accentColor: \"#FF7AB8\", accentColorForeground: darkGrey },\n purple: { accentColor: \"#7A70FF\", accentColorForeground: \"#FFF\" },\n red: { accentColor: \"#FF6257\", accentColorForeground: \"#FFF\" }\n};\nvar defaultAccentColor = accentColors.blue;\nvar darkTheme = ({\n accentColor = defaultAccentColor.accentColor,\n accentColorForeground = defaultAccentColor.accentColorForeground,\n ...baseThemeOptions\n} = {}) => ({\n ...baseTheme(baseThemeOptions),\n colors: {\n accentColor,\n accentColorForeground,\n actionButtonBorder: \"rgba(255, 255, 255, 0.04)\",\n actionButtonBorderMobile: \"rgba(255, 255, 255, 0.08)\",\n actionButtonSecondaryBackground: \"rgba(255, 255, 255, 0.08)\",\n closeButton: \"rgba(224, 232, 255, 0.6)\",\n closeButtonBackground: \"rgba(255, 255, 255, 0.08)\",\n connectButtonBackground: darkGrey,\n connectButtonBackgroundError: \"#FF494A\",\n connectButtonInnerBackground: \"linear-gradient(0deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.15))\",\n connectButtonText: \"#FFF\",\n connectButtonTextError: \"#FFF\",\n connectionIndicator: \"#30E000\",\n downloadBottomCardBackground: \"linear-gradient(126deg, rgba(0, 0, 0, 0) 9.49%, rgba(120, 120, 120, 0.2) 71.04%), #1A1B1F\",\n downloadTopCardBackground: \"linear-gradient(126deg, rgba(120, 120, 120, 0.2) 9.49%, rgba(0, 0, 0, 0) 71.04%), #1A1B1F\",\n error: \"#FF494A\",\n generalBorder: \"rgba(255, 255, 255, 0.08)\",\n generalBorderDim: \"rgba(255, 255, 255, 0.04)\",\n menuItemBackground: \"rgba(224, 232, 255, 0.1)\",\n modalBackdrop: \"rgba(0, 0, 0, 0.5)\",\n modalBackground: \"#1A1B1F\",\n modalBorder: \"rgba(255, 255, 255, 0.08)\",\n modalText: \"#FFF\",\n modalTextDim: \"rgba(224, 232, 255, 0.3)\",\n modalTextSecondary: \"rgba(255, 255, 255, 0.6)\",\n profileAction: \"rgba(224, 232, 255, 0.1)\",\n profileActionHover: \"rgba(224, 232, 255, 0.2)\",\n profileForeground: \"rgba(224, 232, 255, 0.05)\",\n selectedOptionBorder: \"rgba(224, 232, 255, 0.1)\",\n standby: \"#FFD641\"\n },\n shadows: {\n connectButton: \"0px 4px 12px rgba(0, 0, 0, 0.1)\",\n dialog: \"0px 8px 32px rgba(0, 0, 0, 0.32)\",\n profileDetailsAction: \"0px 2px 6px rgba(37, 41, 46, 0.04)\",\n selectedOption: \"0px 2px 6px rgba(0, 0, 0, 0.24)\",\n selectedWallet: \"0px 2px 6px rgba(0, 0, 0, 0.24)\",\n walletLogo: \"0px 2px 16px rgba(0, 0, 0, 0.16)\"\n }\n});\ndarkTheme.accentColors = accentColors;\n\nexport {\n darkTheme\n};\n","\"use client\";\n\n// src/locales/en_US.json\nvar en_US_default = `{\n \"connect_wallet\": {\n \"label\": \"Connect Wallet\",\n \"wrong_network\": {\n \"label\": \"Wrong network\"\n }\n },\n\n \"intro\": {\n \"title\": \"What is a Wallet?\",\n \"description\": \"A wallet is used to send, receive, store, and display digital assets. It's also a new way to log in, without needing to create new accounts and passwords on every website.\",\n \"digital_asset\": {\n \"title\": \"A Home for your Digital Assets\",\n \"description\": \"Wallets are used to send, receive, store, and display digital assets like Ethereum and NFTs.\"\n },\n \"login\": {\n \"title\": \"A New Way to Log In\",\n \"description\": \"Instead of creating new accounts and passwords on every website, just connect your wallet.\"\n },\n \"get\": {\n \"label\": \"Get a Wallet\"\n },\n \"learn_more\": {\n \"label\": \"Learn More\"\n }\n },\n\n \"sign_in\": {\n \"label\": \"Verify your account\",\n \"description\": \"To finish connecting, you must sign a message in your wallet to verify that you are the owner of this account.\",\n \"message\": {\n \"send\": \"Sign message\",\n \"preparing\": \"Preparing message...\",\n \"cancel\": \"Cancel\",\n \"preparing_error\": \"Error preparing message, please retry!\"\n },\n \"signature\": {\n \"waiting\": \"Waiting for signature...\",\n \"verifying\": \"Verifying signature...\",\n \"signing_error\": \"Error signing message, please retry!\",\n \"verifying_error\": \"Error verifying signature, please retry!\",\n \"oops_error\": \"Oops, something went wrong!\"\n }\n },\n\n \"connect\": {\n \"label\": \"Connect\",\n \"title\": \"Connect a Wallet\",\n \"new_to_ethereum\": {\n \"description\": \"New to Ethereum wallets?\",\n \"learn_more\": {\n \"label\": \"Learn More\"\n }\n },\n \"learn_more\": {\n \"label\": \"Learn more\"\n },\n \"recent\": \"Recent\",\n \"status\": {\n \"opening\": \"Opening %{wallet}...\",\n \"connecting\": \"Connecting\",\n \"connect_mobile\": \"Continue in %{wallet}\",\n \"not_installed\": \"%{wallet} is not installed\",\n \"not_available\": \"%{wallet} is not available\",\n \"confirm\": \"Confirm connection in the extension\",\n \"confirm_mobile\": \"Accept connection request in the wallet\"\n },\n \"secondary_action\": {\n \"get\": {\n \"description\": \"Don't have %{wallet}?\",\n \"label\": \"GET\"\n },\n \"install\": {\n \"label\": \"INSTALL\"\n },\n \"retry\": {\n \"label\": \"RETRY\"\n }\n },\n \"walletconnect\": {\n \"description\": {\n \"full\": \"Need the official WalletConnect modal?\",\n \"compact\": \"Need the WalletConnect modal?\"\n },\n \"open\": {\n \"label\": \"OPEN\"\n }\n }\n },\n\n \"connect_scan\": {\n \"title\": \"Scan with %{wallet}\",\n \"fallback_title\": \"Scan with your phone\"\n },\n\n \"connector_group\": {\n \"installed\": \"Installed\",\n \"recommended\": \"Recommended\",\n \"other\": \"Other\",\n \"popular\": \"Popular\",\n \"more\": \"More\",\n \"others\": \"Others\"\n },\n\n \"get\": {\n \"title\": \"Get a Wallet\",\n \"action\": {\n \"label\": \"GET\"\n },\n \"mobile\": {\n \"description\": \"Mobile Wallet\"\n },\n \"extension\": {\n \"description\": \"Browser Extension\"\n },\n \"mobile_and_extension\": {\n \"description\": \"Mobile Wallet and Extension\"\n },\n \"mobile_and_desktop\": {\n \"description\": \"Mobile and Desktop Wallet\"\n },\n \"looking_for\": {\n \"title\": \"Not what you're looking for?\",\n \"mobile\": {\n \"description\": \"Select a wallet on the main screen to get started with a different wallet provider.\"\n },\n \"desktop\": {\n \"compact_description\": \"Select a wallet on the main screen to get started with a different wallet provider.\",\n \"wide_description\": \"Select a wallet on the left to get started with a different wallet provider.\"\n }\n }\n },\n\n \"get_options\": {\n \"title\": \"Get started with %{wallet}\",\n \"short_title\": \"Get %{wallet}\",\n \"mobile\": {\n \"title\": \"%{wallet} for Mobile\",\n \"description\": \"Use the mobile wallet to explore the world of Ethereum.\",\n \"download\": {\n \"label\": \"Get the app\"\n }\n },\n \"extension\": {\n \"title\": \"%{wallet} for %{browser}\",\n \"description\": \"Access your wallet right from your favorite web browser.\",\n \"download\": {\n \"label\": \"Add to %{browser}\"\n }\n },\n \"desktop\": {\n \"title\": \"%{wallet} for %{platform}\",\n \"description\": \"Access your wallet natively from your powerful desktop.\",\n \"download\": {\n \"label\": \"Add to %{platform}\"\n }\n }\n },\n\n \"get_mobile\": {\n \"title\": \"Install %{wallet}\",\n \"description\": \"Scan with your phone to download on iOS or Android\",\n \"continue\": {\n \"label\": \"Continue\"\n }\n },\n\n \"get_instructions\": {\n \"mobile\": {\n \"connect\": {\n \"label\": \"Connect\"\n },\n \"learn_more\": {\n \"label\": \"Learn More\"\n }\n },\n \"extension\": {\n \"refresh\": {\n \"label\": \"Refresh\"\n },\n \"learn_more\": {\n \"label\": \"Learn More\"\n }\n },\n \"desktop\": {\n \"connect\": {\n \"label\": \"Connect\"\n },\n \"learn_more\": {\n \"label\": \"Learn More\"\n }\n }\n },\n\n \"chains\": {\n \"title\": \"Switch Networks\",\n \"wrong_network\": \"Wrong network detected, switch or disconnect to continue.\",\n \"confirm\": \"Confirm in Wallet\",\n \"switching_not_supported\": \"Your wallet does not support switching networks from %{appName}. Try switching networks from within your wallet instead.\",\n \"switching_not_supported_fallback\": \"Your wallet does not support switching networks from this app. Try switching networks from within your wallet instead.\",\n \"disconnect\": \"Disconnect\",\n \"connected\": \"Connected\"\n },\n\n \"profile\": {\n \"disconnect\": {\n \"label\": \"Disconnect\"\n },\n \"copy_address\": {\n \"label\": \"Copy Address\",\n \"copied\": \"Copied!\"\n },\n \"explorer\": {\n \"label\": \"View more on explorer\"\n },\n \"transactions\": {\n \"description\": \"%{appName} transactions will appear here...\",\n \"description_fallback\": \"Your transactions will appear here...\",\n \"recent\": {\n \"title\": \"Recent Transactions\"\n },\n \"clear\": {\n \"label\": \"Clear All\"\n }\n }\n },\n\n \"wallet_connectors\": {\n \"argent\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"Put Argent on your home screen for faster access to your wallet.\",\n \"title\": \"Open the Argent app\"\n },\n \"step2\": {\n \"description\": \"Create a wallet and username, or import an existing wallet.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the Scan QR button\"\n }\n }\n },\n\n \"best\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Best Wallet app\",\n \"description\": \"Add Best Wallet to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your homescreen, scan the code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"bifrost\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Bifrost Wallet on your home screen for quicker access.\",\n \"title\": \"Open the Bifrost Wallet app\"\n },\n \"step2\": {\n \"description\": \"Create or import a wallet using your recovery phrase.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the scan button\"\n }\n }\n },\n\n \"bitget\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Bitget Wallet on your home screen for quicker access.\",\n \"title\": \"Open the Bitget Wallet app\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the scan button\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Bitget Wallet to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Bitget Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"bitski\": {\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Bitski to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Bitski extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"bitverse\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Bitverse Wallet app\",\n \"description\": \"Add Bitverse Wallet to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your homescreen, scan the code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"bloom\": {\n \"desktop\": {\n \"step1\": {\n \"title\": \"Open the Bloom Wallet app\",\n \"description\": \"We recommend putting Bloom Wallet on your home screen for quicker access.\"\n },\n \"step2\": {\n \"description\": \"Create or import a wallet using your recovery phrase.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you have a wallet, click on Connect to connect via Bloom. A connection prompt in the app will appear for you to confirm the connection.\",\n \"title\": \"Click on Connect\"\n }\n }\n },\n\n \"bybit\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Bybit on your home screen for faster access to your wallet.\",\n \"title\": \"Open the Bybit app\"\n },\n \"step2\": {\n \"description\": \"You can easily backup your wallet using our backup feature on your phone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the scan button\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"description\": \"Click at the top right of your browser and pin Bybit Wallet for easy access.\",\n \"title\": \"Install the Bybit Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Create a new wallet or import an existing one.\",\n \"title\": \"Create or Import a wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up Bybit Wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"binance\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Binance on your home screen for faster access to your wallet.\",\n \"title\": \"Open the Binance app\"\n },\n \"step2\": {\n \"description\": \"You can easily backup your wallet using our backup feature on your phone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the WalletConnect button\"\n }\n }\n },\n\n \"coin98\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Coin98 Wallet on your home screen for faster access to your wallet.\",\n \"title\": \"Open the Coin98 Wallet app\"\n },\n \"step2\": {\n \"description\": \"You can easily backup your wallet using our backup feature on your phone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the WalletConnect button\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"description\": \"Click at the top right of your browser and pin Coin98 Wallet for easy access.\",\n \"title\": \"Install the Coin98 Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Create a new wallet or import an existing one.\",\n \"title\": \"Create or Import a wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up Coin98 Wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"coinbase\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Coinbase Wallet on your home screen for quicker access.\",\n \"title\": \"Open the Coinbase Wallet app\"\n },\n \"step2\": {\n \"description\": \"You can easily backup your wallet using the cloud backup feature.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the scan button\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Coinbase Wallet to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Coinbase Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"compass\": {\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Compass Wallet to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Compass Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"core\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Core on your home screen for faster access to your wallet.\",\n \"title\": \"Open the Core app\"\n },\n \"step2\": {\n \"description\": \"You can easily backup your wallet using our backup feature on your phone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the WalletConnect button\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Core to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Core extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"fox\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting FoxWallet on your home screen for quicker access.\",\n \"title\": \"Open the FoxWallet app\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the scan button\"\n }\n }\n },\n\n \"frontier\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Frontier Wallet on your home screen for quicker access.\",\n \"title\": \"Open the Frontier Wallet app\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the scan button\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Frontier Wallet to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Frontier Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"im_token\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the imToken app\",\n \"description\": \"Put imToken app on your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap Scanner Icon in top right corner\",\n \"description\": \"Choose New Connection, then scan the QR code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"iopay\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting ioPay on your home screen for faster access to your wallet.\",\n \"title\": \"Open the ioPay app\"\n },\n \"step2\": {\n \"description\": \"You can easily backup your wallet using our backup feature on your phone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the WalletConnect button\"\n }\n }\n },\n\n \"kaikas\": {\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Kaikas to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Kaikas extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n },\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Kaikas app\",\n \"description\": \"Put Kaikas app on your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap Scanner Icon in top right corner\",\n \"description\": \"Choose New Connection, then scan the QR code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"kaia\": {\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Kaia to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Kaia extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n },\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Kaia app\",\n \"description\": \"Put Kaia app on your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap Scanner Icon in top right corner\",\n \"description\": \"Choose New Connection, then scan the QR code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"kraken\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Kraken Wallet app\",\n \"description\": \"Add Kraken Wallet to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your homescreen, scan the code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"kresus\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Kresus Wallet app\",\n \"description\": \"Add Kresus Wallet to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your homescreen, scan the code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"magicEden\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Magic Eden extension\",\n \"description\": \"We recommend pinning Magic Eden to your taskbar for easier access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret recovery phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"metamask\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the MetaMask app\",\n \"description\": \"We recommend putting MetaMask on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the MetaMask extension\",\n \"description\": \"We recommend pinning MetaMask to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"nestwallet\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the NestWallet extension\",\n \"description\": \"We recommend pinning NestWallet to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"okx\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the OKX Wallet app\",\n \"description\": \"We recommend putting OKX Wallet on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the OKX Wallet extension\",\n \"description\": \"We recommend pinning OKX Wallet to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"omni\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Omni app\",\n \"description\": \"Add Omni to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your home screen, scan the code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"1inch\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"Put 1inch Wallet on your home screen for faster access to your wallet.\",\n \"title\": \"Open the 1inch Wallet app\"\n },\n \"step2\": {\n \"description\": \"Create a wallet and username, or import an existing wallet.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the Scan QR button\"\n }\n }\n },\n\n \"token_pocket\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the TokenPocket app\",\n \"description\": \"We recommend putting TokenPocket on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the TokenPocket extension\",\n \"description\": \"We recommend pinning TokenPocket to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"trust\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Trust Wallet app\",\n \"description\": \"Put Trust Wallet on your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap WalletConnect in Settings\",\n \"description\": \"Choose New Connection, then scan the QR code and confirm the prompt to connect.\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Trust Wallet extension\",\n \"description\": \"Click at the top right of your browser and pin Trust Wallet for easy access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up Trust Wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"uniswap\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Uniswap app\",\n \"description\": \"Add Uniswap Wallet to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your homescreen, scan the code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"zerion\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Zerion app\",\n \"description\": \"We recommend putting Zerion on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Zerion extension\",\n \"description\": \"We recommend pinning Zerion to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"rainbow\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Rainbow app\",\n \"description\": \"We recommend putting Rainbow on your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"You can easily backup your wallet using our backup feature on your phone.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n }\n },\n\n \"enkrypt\": {\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Enkrypt Wallet to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Enkrypt Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"frame\": {\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Frame to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install Frame & the companion extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"one_key\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the OneKey Wallet extension\",\n \"description\": \"We recommend pinning OneKey Wallet to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"paraswap\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the ParaSwap app\",\n \"description\": \"Add ParaSwap Wallet to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your homescreen, scan the code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"phantom\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Phantom extension\",\n \"description\": \"We recommend pinning Phantom to your taskbar for easier access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret recovery phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"rabby\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Rabby extension\",\n \"description\": \"We recommend pinning Rabby to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"ronin\": {\n \"qr_code\": {\n \"step1\": {\n \"description\": \"We recommend putting Ronin Wallet on your home screen for quicker access.\",\n \"title\": \"Open the Ronin Wallet app\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\",\n \"title\": \"Tap the scan button\"\n }\n },\n\n \"extension\": {\n \"step1\": {\n \"description\": \"We recommend pinning Ronin Wallet to your taskbar for quicker access to your wallet.\",\n \"title\": \"Install the Ronin Wallet extension\"\n },\n \"step2\": {\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\",\n \"title\": \"Create or Import a Wallet\"\n },\n \"step3\": {\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\",\n \"title\": \"Refresh your browser\"\n }\n }\n },\n\n \"ramper\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Ramper extension\",\n \"description\": \"We recommend pinning Ramper to your taskbar for easier access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"safeheron\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Core extension\",\n \"description\": \"We recommend pinning Safeheron to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"taho\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Taho extension\",\n \"description\": \"We recommend pinning Taho to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"talisman\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Talisman extension\",\n \"description\": \"We recommend pinning Talisman to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import an Ethereum Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your recovery phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"xdefi\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the XDEFI Wallet extension\",\n \"description\": \"We recommend pinning XDEFI Wallet to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"zeal\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Zeal app\",\n \"description\": \"Add Zeal Wallet to your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the QR icon and scan\",\n \"description\": \"Tap the QR icon on your homescreen, scan the code and confirm the prompt to connect.\"\n }\n },\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Zeal extension\",\n \"description\": \"We recommend pinning Zeal to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"safepal\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the SafePal Wallet extension\",\n \"description\": \"Click at the top right of your browser and pin SafePal Wallet for easy access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up SafePal Wallet, click below to refresh the browser and load up the extension.\"\n }\n },\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the SafePal Wallet app\",\n \"description\": \"Put SafePal Wallet on your home screen for faster access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap WalletConnect in Settings\",\n \"description\": \"Choose New Connection, then scan the QR code and confirm the prompt to connect.\"\n }\n }\n },\n\n \"desig\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the Desig extension\",\n \"description\": \"We recommend pinning Desig to your taskbar for easier access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n }\n },\n\n \"subwallet\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the SubWallet extension\",\n \"description\": \"We recommend pinning SubWallet to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your recovery phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n },\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the SubWallet app\",\n \"description\": \"We recommend putting SubWallet on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n }\n },\n\n \"clv\": {\n \"extension\": {\n \"step1\": {\n \"title\": \"Install the CLV Wallet extension\",\n \"description\": \"We recommend pinning CLV Wallet to your taskbar for quicker access to your wallet.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Refresh your browser\",\n \"description\": \"Once you set up your wallet, click below to refresh the browser and load up the extension.\"\n }\n },\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the CLV Wallet app\",\n \"description\": \"We recommend putting CLV Wallet on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Create or Import a Wallet\",\n \"description\": \"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n }\n },\n\n \"okto\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Okto app\",\n \"description\": \"Add Okto to your home screen for quick access\"\n },\n \"step2\": {\n \"title\": \"Create an MPC Wallet\",\n \"description\": \"Create an account and generate a wallet\"\n },\n \"step3\": {\n \"title\": \"Tap WalletConnect in Settings\",\n \"description\": \"Tap the Scan QR icon at the top right and confirm the prompt to connect.\"\n }\n }\n },\n\n \"ledger\": {\n \"desktop\": {\n \"step1\": {\n \"title\": \"Open the Ledger Live app\",\n \"description\": \"We recommend putting Ledger Live on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Set up your Ledger\",\n \"description\": \"Set up a new Ledger or connect to an existing one.\"\n },\n \"step3\": {\n \"title\": \"Connect\",\n \"description\": \"A connection prompt will appear for you to connect your wallet.\"\n }\n },\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Ledger Live app\",\n \"description\": \"We recommend putting Ledger Live on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Set up your Ledger\",\n \"description\": \"You can either sync with the desktop app or connect your Ledger.\"\n },\n \"step3\": {\n \"title\": \"Scan the code\",\n \"description\": \"Tap WalletConnect then Switch to Scanner. After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n }\n },\n\n \"valora\": {\n \"qr_code\": {\n \"step1\": {\n \"title\": \"Open the Valora app\",\n \"description\": \"We recommend putting Valora on your home screen for quicker access.\"\n },\n \"step2\": {\n \"title\": \"Create or import a wallet\",\n \"description\": \"Create a new wallet or import an existing one.\"\n },\n \"step3\": {\n \"title\": \"Tap the scan button\",\n \"description\": \"After you scan, a connection prompt will appear for you to connect your wallet.\"\n }\n }\n }\n }\n}\n`;\n\nexport {\n en_US_default\n};\n","function addFunctionSerializer(target, recipe) {\n // TODO: Update to \"__function_serializer__\" in future.\n // __recipe__ is the backwards compatible name\n Object.defineProperty(target, '__recipe__', {\n value: recipe,\n writable: false\n });\n return target;\n}\n\nexport { addFunctionSerializer };\n","import { addFunctionSerializer } from '../../functionSerializer/dist/vanilla-extract-css-functionSerializer.browser.esm.js';\n\n/**\n * @deprecated Use 'addFunctionSerializer' from '@vanilla-extract/css/functionSerializer'\n */\nvar addRecipe = addFunctionSerializer;\n\nexport { addRecipe };\n","import { addRecipe } from '@vanilla-extract/css/recipe';\n\nfunction createNormalizeValueFn(properties) {\n var {\n conditions\n } = properties;\n if (!conditions) {\n throw new Error('Styles have no conditions');\n }\n function normalizeValue(value) {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n if (!conditions.defaultCondition) {\n throw new Error('No default condition');\n }\n return {\n [conditions.defaultCondition]: value\n };\n }\n if (Array.isArray(value)) {\n if (!('responsiveArray' in conditions)) {\n throw new Error('Responsive arrays are not supported');\n }\n var returnValue = {};\n for (var index in conditions.responsiveArray) {\n if (value[index] != null) {\n returnValue[conditions.responsiveArray[index]] = value[index];\n }\n }\n return returnValue;\n }\n return value;\n }\n return addRecipe(normalizeValue, {\n importPath: '@vanilla-extract/sprinkles/createUtils',\n importName: 'createNormalizeValueFn',\n args: [{\n conditions: properties.conditions\n }]\n });\n}\nfunction createMapValueFn(properties) {\n var {\n conditions\n } = properties;\n if (!conditions) {\n throw new Error('Styles have no conditions');\n }\n var normalizeValue = createNormalizeValueFn(properties);\n function mapValue(value, mapFn) {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n if (!conditions.defaultCondition) {\n throw new Error('No default condition');\n }\n return mapFn(value, conditions.defaultCondition);\n }\n var normalizedObject = Array.isArray(value) ? normalizeValue(value) : value;\n var mappedObject = {};\n for (var _key in normalizedObject) {\n if (normalizedObject[_key] != null) {\n mappedObject[_key] = mapFn(normalizedObject[_key], _key);\n }\n }\n return mappedObject;\n }\n return addRecipe(mapValue, {\n importPath: '@vanilla-extract/sprinkles/createUtils',\n importName: 'createMapValueFn',\n args: [{\n conditions: properties.conditions\n }]\n });\n}\n\nexport { createMapValueFn, createNormalizeValueFn };\n","function toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : String(i);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\nvar createSprinkles = composeStyles => function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var sprinklesStyles = Object.assign({}, ...args.map(a => a.styles));\n var sprinklesKeys = Object.keys(sprinklesStyles);\n var shorthandNames = sprinklesKeys.filter(property => 'mappings' in sprinklesStyles[property]);\n var sprinklesFn = props => {\n var classNames = [];\n var shorthands = {};\n var nonShorthands = _objectSpread2({}, props);\n var hasShorthands = false;\n for (var shorthand of shorthandNames) {\n var value = props[shorthand];\n if (value != null) {\n var sprinkle = sprinklesStyles[shorthand];\n hasShorthands = true;\n for (var propMapping of sprinkle.mappings) {\n shorthands[propMapping] = value;\n if (nonShorthands[propMapping] == null) {\n delete nonShorthands[propMapping];\n }\n }\n }\n }\n var finalProps = hasShorthands ? _objectSpread2(_objectSpread2({}, shorthands), nonShorthands) : props;\n var _loop = function _loop() {\n var propValue = finalProps[prop];\n var sprinkle = sprinklesStyles[prop];\n try {\n if (sprinkle.mappings) {\n // Skip shorthands\n return 1; // continue\n }\n if (typeof propValue === 'string' || typeof propValue === 'number') {\n if (process.env.NODE_ENV !== 'production') {\n if (!sprinkle.values[propValue].defaultClass) {\n throw new Error();\n }\n }\n classNames.push(sprinkle.values[propValue].defaultClass);\n } else if (Array.isArray(propValue)) {\n for (var responsiveIndex = 0; responsiveIndex < propValue.length; responsiveIndex++) {\n var responsiveValue = propValue[responsiveIndex];\n if (responsiveValue != null) {\n var conditionName = sprinkle.responsiveArray[responsiveIndex];\n if (process.env.NODE_ENV !== 'production') {\n if (!sprinkle.values[responsiveValue].conditions[conditionName]) {\n throw new Error();\n }\n }\n classNames.push(sprinkle.values[responsiveValue].conditions[conditionName]);\n }\n }\n } else {\n for (var _conditionName in propValue) {\n // Conditional style\n var _value = propValue[_conditionName];\n if (_value != null) {\n if (process.env.NODE_ENV !== 'production') {\n if (!sprinkle.values[_value].conditions[_conditionName]) {\n throw new Error();\n }\n }\n classNames.push(sprinkle.values[_value].conditions[_conditionName]);\n }\n }\n }\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n class SprinklesError extends Error {\n constructor(message) {\n super(message);\n this.name = 'SprinklesError';\n }\n }\n var format = v => typeof v === 'string' ? \"\\\"\".concat(v, \"\\\"\") : v;\n var invalidPropValue = (prop, value, possibleValues) => {\n throw new SprinklesError(\"\\\"\".concat(prop, \"\\\" has no value \").concat(format(value), \". Possible values are \").concat(Object.keys(possibleValues).map(format).join(', ')));\n };\n if (!sprinkle) {\n throw new SprinklesError(\"\\\"\".concat(prop, \"\\\" is not a valid sprinkle\"));\n }\n if (typeof propValue === 'string' || typeof propValue === 'number') {\n if (!(propValue in sprinkle.values)) {\n invalidPropValue(prop, propValue, sprinkle.values);\n }\n if (!sprinkle.values[propValue].defaultClass) {\n throw new SprinklesError(\"\\\"\".concat(prop, \"\\\" has no default condition. You must specify which conditions to target explicitly. Possible options are \").concat(Object.keys(sprinkle.values[propValue].conditions).map(format).join(', ')));\n }\n }\n if (typeof propValue === 'object') {\n if (!('conditions' in sprinkle.values[Object.keys(sprinkle.values)[0]])) {\n throw new SprinklesError(\"\\\"\".concat(prop, \"\\\" is not a conditional property\"));\n }\n if (Array.isArray(propValue)) {\n if (!('responsiveArray' in sprinkle)) {\n throw new SprinklesError(\"\\\"\".concat(prop, \"\\\" does not support responsive arrays\"));\n }\n var breakpointCount = sprinkle.responsiveArray.length;\n if (breakpointCount < propValue.length) {\n throw new SprinklesError(\"\\\"\".concat(prop, \"\\\" only supports up to \").concat(breakpointCount, \" breakpoints. You passed \").concat(propValue.length));\n }\n for (var _responsiveValue of propValue) {\n if (!sprinkle.values[_responsiveValue]) {\n invalidPropValue(prop, _responsiveValue, sprinkle.values);\n }\n }\n } else {\n for (var _conditionName2 in propValue) {\n var _value2 = propValue[_conditionName2];\n if (_value2 != null) {\n if (!sprinkle.values[_value2]) {\n invalidPropValue(prop, _value2, sprinkle.values);\n }\n if (!sprinkle.values[_value2].conditions[_conditionName2]) {\n throw new SprinklesError(\"\\\"\".concat(prop, \"\\\" has no condition named \").concat(format(_conditionName2), \". Possible values are \").concat(Object.keys(sprinkle.values[_value2].conditions).map(format).join(', ')));\n }\n }\n }\n }\n }\n }\n throw e;\n }\n };\n for (var prop in finalProps) {\n if (_loop()) continue;\n }\n return composeStyles(classNames.join(' '));\n };\n return Object.assign(sprinklesFn, {\n properties: new Set(sprinklesKeys)\n });\n};\n\nexport { createSprinkles as c };\n","import { c as createSprinkles$1 } from '../../dist/createSprinkles-74286718.esm.js';\n\nvar composeStyles = classList => classList;\nvar createSprinkles = function createSprinkles() {\n return createSprinkles$1(composeStyles)(...arguments);\n};\n\n/** @deprecated - Use `createSprinkles` */\nvar createAtomsFn = createSprinkles;\n\nexport { createAtomsFn, createSprinkles };\n","export const version = '2.7.20';\n//# sourceMappingURL=version.js.map","import { version } from './version.js';\nexport const getContractAddress = (address) => address;\nexport const getUrl = (url) => url;\nexport const getVersion = () => `viem@${version}`;\n//# sourceMappingURL=utils.js.map","import { getVersion } from './utils.js';\nexport class BaseError extends Error {\n constructor(shortMessage, args = {}) {\n super();\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ViemError'\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: getVersion()\n });\n const details = args.cause instanceof BaseError\n ? args.cause.details\n : args.cause?.message\n ? args.cause.message\n : args.details;\n const docsPath = args.cause instanceof BaseError\n ? args.cause.docsPath || args.docsPath\n : args.docsPath;\n this.message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsPath\n ? [\n `Docs: https://viem.sh${docsPath}${args.docsSlug ? `#${args.docsSlug}` : ''}`,\n ]\n : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: ${this.version}`,\n ].join('\\n');\n if (args.cause)\n this.cause = args.cause;\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = args.metaMessages;\n this.shortMessage = shortMessage;\n }\n walk(fn) {\n return walk(this, fn);\n }\n}\nfunction walk(err, fn) {\n if (fn?.(err))\n return err;\n if (err && typeof err === 'object' && 'cause' in err)\n return walk(err.cause, fn);\n return fn ? null : err;\n}\n//# sourceMappingURL=base.js.map","import { BaseError } from './base.js';\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({ max, min, signed, size, value, }) {\n super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'IntegerOutOfRangeError'\n });\n }\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes) {\n super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidBytesBooleanError'\n });\n }\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex) {\n super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidHexBooleanError'\n });\n }\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value) {\n super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidHexValueError'\n });\n }\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }) {\n super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'SizeOverflowError'\n });\n }\n}\n//# sourceMappingURL=encoding.js.map","import { BaseError } from './base.js';\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({ offset, position, size, }) {\n super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \"${offset}\" is out-of-bounds (size: ${size}).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'SliceOffsetOutOfBoundsError'\n });\n }\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'SizeExceedsPaddingSizeError'\n });\n }\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidBytesLengthError'\n });\n }\n}\n//# sourceMappingURL=data.js.map","import { SizeExceedsPaddingSizeError, } from '../../errors/data.js';\nexport function pad(hexOrBytes, { dir, size = 32 } = {}) {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size });\n return padBytes(hexOrBytes, { dir, size });\n}\nexport function padHex(hex_, { dir, size = 32 } = {}) {\n if (size === null)\n return hex_;\n const hex = hex_.replace('0x', '');\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n });\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`;\n}\nexport function padBytes(bytes, { dir, size = 32 } = {}) {\n if (size === null)\n return bytes;\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n });\n const paddedBytes = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right';\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n//# sourceMappingURL=pad.js.map","export function isHex(value, { strict = true } = {}) {\n if (!value)\n return false;\n if (typeof value !== 'string')\n return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');\n}\n//# sourceMappingURL=isHex.js.map","import { isHex } from './isHex.js';\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value) {\n if (isHex(value, { strict: false }))\n return Math.ceil((value.length - 2) / 2);\n return value.length;\n}\n//# sourceMappingURL=size.js.map","export function trim(hexOrBytes, { dir = 'left' } = {}) {\n let data = typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes;\n let sliceLength = 0;\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++;\n else\n break;\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength);\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right')\n data = `${data}0`;\n return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n }\n return data;\n}\n//# sourceMappingURL=trim.js.map","import { BaseError } from '../../errors/base.js';\nimport { isHex } from '../data/isHex.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nimport { numberToHex, } from './toHex.js';\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts);\n if (typeof value === 'boolean')\n return boolToBytes(value, opts);\n if (isHex(value))\n return hexToBytes(value, opts);\n return stringToBytes(value, opts);\n}\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value, opts = {}) {\n const bytes = new Uint8Array(1);\n bytes[0] = Number(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { size: opts.size });\n }\n return bytes;\n}\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n};\nfunction charCodeToBase16(char) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero;\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10);\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10);\n return undefined;\n}\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = pad(hex, { dir: 'right', size: opts.size });\n }\n let hexString = hex.slice(2);\n if (hexString.length % 2)\n hexString = `0${hexString}`;\n const length = hexString.length / 2;\n const bytes = new Uint8Array(length);\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++));\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++));\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight;\n }\n return bytes;\n}\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(value, opts) {\n const hex = numberToHex(value, opts);\n return hexToBytes(hex);\n}\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(value, opts = {}) {\n const bytes = encoder.encode(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { dir: 'right', size: opts.size });\n }\n return bytes;\n}\n//# sourceMappingURL=toBytes.js.map","import { InvalidHexBooleanError, SizeOverflowError, } from '../../errors/encoding.js';\nimport { size as size_ } from '../data/size.js';\nimport { trim } from '../data/trim.js';\nimport { hexToBytes } from './toBytes.js';\nexport function assertSize(hexOrBytes, { size }) {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n });\n}\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex(hex, toOrOpts) {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n const to = opts.to;\n if (to === 'number')\n return hexToNumber(hex, opts);\n if (to === 'bigint')\n return hexToBigInt(hex, opts);\n if (to === 'string')\n return hexToString(hex, opts);\n if (to === 'boolean')\n return hexToBool(hex, opts);\n return hexToBytes(hex, opts);\n}\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex, opts = {}) {\n const { signed } = opts;\n if (opts.size)\n assertSize(hex, { size: opts.size });\n const value = BigInt(hex);\n if (!signed)\n return value;\n const size = (hex.length - 2) / 2;\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n if (value <= max)\n return value;\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n;\n}\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = trim(hex);\n }\n if (trim(hex) === '0x00')\n return false;\n if (trim(hex) === '0x01')\n return true;\n throw new InvalidHexBooleanError(hex);\n}\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex, opts = {}) {\n return Number(hexToBigInt(hex, opts));\n}\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex, opts = {}) {\n let bytes = hexToBytes(hex);\n if (opts.size) {\n assertSize(bytes, { size: opts.size });\n bytes = trim(bytes, { dir: 'right' });\n }\n return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromHex.js.map","import { IntegerOutOfRangeError, } from '../../errors/encoding.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts);\n if (typeof value === 'string') {\n return stringToHex(value, opts);\n }\n if (typeof value === 'boolean')\n return boolToHex(value, opts);\n return bytesToHex(value, opts);\n}\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value, opts = {}) {\n const hex = `0x${Number(value)}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value, opts = {}) {\n let string = '';\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]];\n }\n const hex = `0x${string}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { dir: 'right', size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(value_, opts = {}) {\n const { signed, size } = opts;\n const value = BigInt(value_);\n let maxValue;\n if (size) {\n if (signed)\n maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n else\n maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n }\n else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n }\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0;\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : '';\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n });\n }\n const hex = `0x${(signed && value < 0\n ? (1n << BigInt(size * 8)) + BigInt(value)\n : value).toString(16)}`;\n if (size)\n return pad(hex, { size });\n return hex;\n}\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_, opts = {}) {\n const value = encoder.encode(value_);\n return bytesToHex(value, opts);\n}\n//# sourceMappingURL=toHex.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/addChain\n * - JSON-RPC Methods: [`eth_addEthereumChain`](https://eips.ethereum.org/EIPS/eip-3085)\n *\n * @param client - Client to use\n * @param parameters - {@link AddChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { optimism } from 'viem/chains'\n * import { addChain } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * transport: custom(window.ethereum),\n * })\n * await addChain(client, { chain: optimism })\n */\nexport async function addChain(client, { chain }) {\n const { id, name, nativeCurrency, rpcUrls, blockExplorers } = chain;\n await client.request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n chainName: name,\n nativeCurrency,\n rpcUrls: rpcUrls.default.http,\n blockExplorerUrls: blockExplorers\n ? Object.values(blockExplorers).map(({ url }) => url)\n : undefined,\n },\n ],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=addChain.js.map","import { InvalidDefinitionTypeError, } from '../../errors/abi.js';\nexport function formatAbiItem(abiItem, { includeName = false } = {}) {\n if (abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error')\n throw new InvalidDefinitionTypeError(abiItem.type);\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`;\n}\nexport function formatAbiParams(params, { includeName = false } = {}) {\n if (!params)\n return '';\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',');\n}\nfunction formatAbiParam(param, { includeName }) {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(param.components, { includeName })})${param.type.slice('tuple'.length)}`;\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '');\n}\n//# sourceMappingURL=formatAbiItem.js.map","import { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js';\nimport { size } from '../utils/data/size.js';\nimport { BaseError } from './base.js';\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }) {\n super([\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiConstructorNotFoundError'\n });\n }\n}\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }) {\n super([\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiConstructorParamsNotFoundError'\n });\n }\n}\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }) {\n super([\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'), { metaMessages: [`Data: ${data} (${size} bytes)`] });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiDecodingDataSizeInvalidError'\n });\n }\n}\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n constructor({ data, params, size, }) {\n super([`Data size of ${size} bytes is too small for given parameters.`].join('\\n'), {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiDecodingDataSizeTooSmallError'\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nexport class AbiDecodingOffsetOutOfBoundsError extends BaseError {\n constructor({ offset, position }) {\n super(`Offset at \"${offset}\" is out-of-bounds (current position: \"${position}\").`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiDecodingOffsetOutOfBoundsError'\n });\n }\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiDecodingZeroDataError'\n });\n }\n}\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({ expectedLength, givenLength, type, }) {\n super([\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiEncodingArrayLengthMismatchError'\n });\n }\n}\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }) {\n super(`Size of bytes \"${value}\" (bytes${size(value)}) does not match expected size (bytes${expectedSize}).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiEncodingBytesSizeMismatchError'\n });\n }\n}\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({ expectedLength, givenLength, }) {\n super([\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiEncodingLengthMismatchError'\n });\n }\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName, { docsPath }) {\n super([\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiErrorInputsNotFoundError'\n });\n }\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(errorName, { docsPath } = {}) {\n super([\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiErrorNotFoundError'\n });\n }\n}\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiErrorSignatureNotFoundError'\n });\n Object.defineProperty(this, \"signature\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.signature = signature;\n }\n}\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiEventSignatureEmptyTopicsError'\n });\n }\n}\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiEventSignatureNotFoundError'\n });\n }\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(eventName, { docsPath } = {}) {\n super([\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiEventNotFoundError'\n });\n }\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(functionName, { docsPath } = {}) {\n super([\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiFunctionNotFoundError'\n });\n }\n}\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName, { docsPath }) {\n super([\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiFunctionOutputsNotFoundError'\n });\n }\n}\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiFunctionSignatureNotFoundError'\n });\n }\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(x, y) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiItemAmbiguityError'\n });\n }\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, givenSize, }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'BytesSizeMismatchError'\n });\n }\n}\nexport class DecodeLogDataMismatch extends BaseError {\n constructor({ abiItem, data, params, size, }) {\n super([\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'), {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'DecodeLogDataMismatch'\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n constructor({ abiItem, param, }) {\n super([\n `Expected a topic for indexed event parameter${param.name ? ` \"${param.name}\"` : ''} on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'DecodeLogTopicsMismatch'\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n }\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type, { docsPath }) {\n super([\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'), { docsPath });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidAbiEncodingType'\n });\n }\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type, { docsPath }) {\n super([\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'), { docsPath });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidAbiDecodingType'\n });\n }\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidArrayError'\n });\n }\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type) {\n super([\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidDefinitionTypeError'\n });\n }\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type) {\n super(`Type \"${type}\" is not supported for packed encoding.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'UnsupportedPackedAbiType'\n });\n }\n}\n//# sourceMappingURL=abi.js.map","export function concat(values) {\n if (typeof values[0] === 'string')\n return concatHex(values);\n return concatBytes(values);\n}\nexport function concatBytes(values) {\n let length = 0;\n for (const arr of values) {\n length += arr.length;\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const arr of values) {\n result.set(arr, offset);\n offset += arr.length;\n }\n return result;\n}\nexport function concatHex(values) {\n return `0x${values.reduce((acc, x) => acc + x.replace('0x', ''), '')}`;\n}\n//# sourceMappingURL=concat.js.map","import { BaseError } from './base.js';\nexport class InvalidAddressError extends BaseError {\n constructor({ address }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidAddressError'\n });\n }\n}\n//# sourceMappingURL=address.js.map","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n constructor(size) {\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize)\n this.delete(this.keys().next().value);\n return this;\n }\n}\n//# sourceMappingURL=lru.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","import { keccak_256 } from '@noble/hashes/sha3';\nimport { isHex } from '../data/isHex.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { toHex } from '../encoding/toHex.js';\nexport function keccak256(value, to_) {\n const to = to_ || 'hex';\n const bytes = keccak_256(isHex(value, { strict: false }) ? toBytes(value) : value);\n if (to === 'bytes')\n return bytes;\n return toHex(bytes);\n}\n//# sourceMappingURL=keccak256.js.map","import { InvalidAddressError } from '../../errors/address.js';\nimport { stringToBytes, } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { isAddress } from './isAddress.js';\nexport function checksumAddress(address_, chainId) {\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase();\n const hash = keccak256(stringToBytes(hexAddress), 'bytes');\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split('');\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase();\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase();\n }\n }\n return `0x${address.join('')}`;\n}\nexport function getAddress(address, chainId) {\n if (!isAddress(address))\n throw new InvalidAddressError({ address });\n return checksumAddress(address, chainId);\n}\n//# sourceMappingURL=getAddress.js.map","import { LruMap } from '../lru.js';\nimport { checksumAddress } from './getAddress.js';\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/;\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function isAddress(address, { strict = true } = {}) {\n if (isAddressCache.has(address))\n return isAddressCache.get(address);\n const result = (() => {\n if (!addressRegex.test(address))\n return false;\n if (address.toLowerCase() === address)\n return true;\n if (strict)\n return checksumAddress(address) === address;\n return true;\n })();\n isAddressCache.set(address, result);\n return result;\n}\n//# sourceMappingURL=isAddress.js.map","import { SliceOffsetOutOfBoundsError, } from '../../errors/data.js';\nimport { isHex } from './isHex.js';\nimport { size } from './size.js';\n/**\n * @description Returns a section of the hex or byte array given a start/end bytes offset.\n *\n * @param value The hex or byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function slice(value, start, end, { strict } = {}) {\n if (isHex(value, { strict: false }))\n return sliceHex(value, start, end, {\n strict,\n });\n return sliceBytes(value, start, end, {\n strict,\n });\n}\nfunction assertStartOffset(value, start) {\n if (typeof start === 'number' && start > 0 && start > size(value) - 1)\n throw new SliceOffsetOutOfBoundsError({\n offset: start,\n position: 'start',\n size: size(value),\n });\n}\nfunction assertEndOffset(value, start, end) {\n if (typeof start === 'number' &&\n typeof end === 'number' &&\n size(value) !== end - start) {\n throw new SliceOffsetOutOfBoundsError({\n offset: end,\n position: 'end',\n size: size(value),\n });\n }\n}\n/**\n * @description Returns a section of the byte array given a start/end bytes offset.\n *\n * @param value The byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceBytes(value_, start, end, { strict } = {}) {\n assertStartOffset(value_, start);\n const value = value_.slice(start, end);\n if (strict)\n assertEndOffset(value, start, end);\n return value;\n}\n/**\n * @description Returns a section of the hex value given a start/end bytes offset.\n *\n * @param value The hex value to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceHex(value_, start, end, { strict } = {}) {\n assertStartOffset(value_, start);\n const value = `0x${value_\n .replace('0x', '')\n .slice((start ?? 0) * 2, (end ?? value_.length) * 2)}`;\n if (strict)\n assertEndOffset(value, start, end);\n return value;\n}\n//# sourceMappingURL=slice.js.map","import { AbiEncodingArrayLengthMismatchError, AbiEncodingBytesSizeMismatchError, AbiEncodingLengthMismatchError, InvalidAbiEncodingTypeError, InvalidArrayError, } from '../../errors/abi.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { concat } from '../data/concat.js';\nimport { padHex } from '../data/pad.js';\nimport { size } from '../data/size.js';\nimport { slice } from '../data/slice.js';\nimport { boolToHex, numberToHex, stringToHex, } from '../encoding/toHex.js';\n/**\n * @description Encodes a list of primitive values into an ABI-encoded hex value.\n *\n * - Docs: https://viem.sh/docs/abi/encodeAbiParameters#encodeabiparameters\n *\n * Generates ABI encoded data using the [ABI specification](https://docs.soliditylang.org/en/latest/abi-spec), given a set of ABI parameters (inputs/outputs) and their corresponding values.\n *\n * @param params - a set of ABI Parameters (params), that can be in the shape of the inputs or outputs attribute of an ABI Item.\n * @param values - a set of values (values) that correspond to the given params.\n * @example\n * ```typescript\n * import { encodeAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * [\n * { name: 'x', type: 'string' },\n * { name: 'y', type: 'uint' },\n * { name: 'z', type: 'bool' }\n * ],\n * ['wagmi', 420n, true]\n * )\n * ```\n *\n * You can also pass in Human Readable parameters with the parseAbiParameters utility.\n *\n * @example\n * ```typescript\n * import { encodeAbiParameters, parseAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * parseAbiParameters('string x, uint y, bool z'),\n * ['wagmi', 420n, true]\n * )\n * ```\n */\nexport function encodeAbiParameters(params, values) {\n if (params.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: params.length,\n givenLength: values.length,\n });\n // Prepare the parameters to determine dynamic types to encode.\n const preparedParams = prepareParams({\n params: params,\n values,\n });\n const data = encodeParams(preparedParams);\n if (data.length === 0)\n return '0x';\n return data;\n}\nfunction prepareParams({ params, values, }) {\n const preparedParams = [];\n for (let i = 0; i < params.length; i++) {\n preparedParams.push(prepareParam({ param: params[i], value: values[i] }));\n }\n return preparedParams;\n}\nfunction prepareParam({ param, value, }) {\n const arrayComponents = getArrayComponents(param.type);\n if (arrayComponents) {\n const [length, type] = arrayComponents;\n return encodeArray(value, { length, param: { ...param, type } });\n }\n if (param.type === 'tuple') {\n return encodeTuple(value, {\n param: param,\n });\n }\n if (param.type === 'address') {\n return encodeAddress(value);\n }\n if (param.type === 'bool') {\n return encodeBool(value);\n }\n if (param.type.startsWith('uint') || param.type.startsWith('int')) {\n const signed = param.type.startsWith('int');\n return encodeNumber(value, { signed });\n }\n if (param.type.startsWith('bytes')) {\n return encodeBytes(value, { param });\n }\n if (param.type === 'string') {\n return encodeString(value);\n }\n throw new InvalidAbiEncodingTypeError(param.type, {\n docsPath: '/docs/contract/encodeAbiParameters',\n });\n}\nfunction encodeParams(preparedParams) {\n // 1. Compute the size of the static part of the parameters.\n let staticSize = 0;\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i];\n if (dynamic)\n staticSize += 32;\n else\n staticSize += size(encoded);\n }\n // 2. Split the parameters into static and dynamic parts.\n const staticParams = [];\n const dynamicParams = [];\n let dynamicSize = 0;\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i];\n if (dynamic) {\n staticParams.push(numberToHex(staticSize + dynamicSize, { size: 32 }));\n dynamicParams.push(encoded);\n dynamicSize += size(encoded);\n }\n else {\n staticParams.push(encoded);\n }\n }\n // 3. Concatenate static and dynamic parts.\n return concat([...staticParams, ...dynamicParams]);\n}\nfunction encodeAddress(value) {\n if (!isAddress(value))\n throw new InvalidAddressError({ address: value });\n return { dynamic: false, encoded: padHex(value.toLowerCase()) };\n}\nfunction encodeArray(value, { length, param, }) {\n const dynamic = length === null;\n if (!Array.isArray(value))\n throw new InvalidArrayError(value);\n if (!dynamic && value.length !== length)\n throw new AbiEncodingArrayLengthMismatchError({\n expectedLength: length,\n givenLength: value.length,\n type: `${param.type}[${length}]`,\n });\n let dynamicChild = false;\n const preparedParams = [];\n for (let i = 0; i < value.length; i++) {\n const preparedParam = prepareParam({ param, value: value[i] });\n if (preparedParam.dynamic)\n dynamicChild = true;\n preparedParams.push(preparedParam);\n }\n if (dynamic || dynamicChild) {\n const data = encodeParams(preparedParams);\n if (dynamic) {\n const length = numberToHex(preparedParams.length, { size: 32 });\n return {\n dynamic: true,\n encoded: preparedParams.length > 0 ? concat([length, data]) : length,\n };\n }\n if (dynamicChild)\n return { dynamic: true, encoded: data };\n }\n return {\n dynamic: false,\n encoded: concat(preparedParams.map(({ encoded }) => encoded)),\n };\n}\nfunction encodeBytes(value, { param }) {\n const [, paramSize] = param.type.split('bytes');\n const bytesSize = size(value);\n if (!paramSize) {\n let value_ = value;\n // If the size is not divisible by 32 bytes, pad the end\n // with empty bytes to the ceiling 32 bytes.\n if (bytesSize % 32 !== 0)\n value_ = padHex(value_, {\n dir: 'right',\n size: Math.ceil((value.length - 2) / 2 / 32) * 32,\n });\n return {\n dynamic: true,\n encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_]),\n };\n }\n if (bytesSize !== parseInt(paramSize))\n throw new AbiEncodingBytesSizeMismatchError({\n expectedSize: parseInt(paramSize),\n value,\n });\n return { dynamic: false, encoded: padHex(value, { dir: 'right' }) };\n}\nfunction encodeBool(value) {\n return { dynamic: false, encoded: padHex(boolToHex(value)) };\n}\nfunction encodeNumber(value, { signed }) {\n return {\n dynamic: false,\n encoded: numberToHex(value, {\n size: 32,\n signed,\n }),\n };\n}\nfunction encodeString(value) {\n const hexValue = stringToHex(value);\n const partsLength = Math.ceil(size(hexValue) / 32);\n const parts = [];\n for (let i = 0; i < partsLength; i++) {\n parts.push(padHex(slice(hexValue, i * 32, (i + 1) * 32), {\n dir: 'right',\n }));\n }\n return {\n dynamic: true,\n encoded: concat([\n padHex(numberToHex(size(hexValue), { size: 32 })),\n ...parts,\n ]),\n };\n}\nfunction encodeTuple(value, { param }) {\n let dynamic = false;\n const preparedParams = [];\n for (let i = 0; i < param.components.length; i++) {\n const param_ = param.components[i];\n const index = Array.isArray(value) ? i : param_.name;\n const preparedParam = prepareParam({\n param: param_,\n value: value[index],\n });\n preparedParams.push(preparedParam);\n if (preparedParam.dynamic)\n dynamic = true;\n }\n return {\n dynamic,\n encoded: dynamic\n ? encodeParams(preparedParams)\n : concat(preparedParams.map(({ encoded }) => encoded)),\n };\n}\nexport function getArrayComponents(type) {\n const matches = type.match(/^(.*)\\[(\\d+)?\\]$/);\n return matches\n ? // Return `null` if the array is dynamic.\n [matches[2] ? Number(matches[2]) : null, matches[1]]\n : undefined;\n}\n//# sourceMappingURL=encodeAbiParameters.js.map","import { AbiConstructorNotFoundError, AbiConstructorParamsNotFoundError, } from '../../errors/abi.js';\nimport { concatHex } from '../data/concat.js';\nimport { encodeAbiParameters, } from './encodeAbiParameters.js';\nconst docsPath = '/docs/contract/encodeDeployData';\nexport function encodeDeployData(parameters) {\n const { abi, args, bytecode } = parameters;\n if (!args || args.length === 0)\n return bytecode;\n const description = abi.find((x) => 'type' in x && x.type === 'constructor');\n if (!description)\n throw new AbiConstructorNotFoundError({ docsPath });\n if (!('inputs' in description))\n throw new AbiConstructorParamsNotFoundError({ docsPath });\n if (!description.inputs || description.inputs.length === 0)\n throw new AbiConstructorParamsNotFoundError({ docsPath });\n const data = encodeAbiParameters(description.inputs, args);\n return concatHex([bytecode, data]);\n}\n//# sourceMappingURL=encodeDeployData.js.map","export function parseAccount(account) {\n if (typeof account === 'string')\n return { address: account, type: 'json-rpc' };\n return account;\n}\n//# sourceMappingURL=parseAccount.js.map","import { BaseError } from './base.js';\nexport class AccountNotFoundError extends BaseError {\n constructor({ docsPath } = {}) {\n super([\n 'Could not find an Account to execute with this Action.',\n 'Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the WalletClient.',\n ].join('\\n'), {\n docsPath,\n docsSlug: 'account',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AccountNotFoundError'\n });\n }\n}\n//# sourceMappingURL=account.js.map","import { BaseError } from './base.js';\nexport class ChainDoesNotSupportContract extends BaseError {\n constructor({ blockNumber, chain, contract, }) {\n super(`Chain \"${chain.name}\" does not support contract \"${contract.name}\".`, {\n metaMessages: [\n 'This could be due to any of the following:',\n ...(blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n ? [\n `- The contract \"${contract.name}\" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`,\n ]\n : [\n `- The chain does not have the contract \"${contract.name}\" configured.`,\n ]),\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ChainDoesNotSupportContract'\n });\n }\n}\nexport class ChainMismatchError extends BaseError {\n constructor({ chain, currentChainId, }) {\n super(`The current chain of the wallet (id: ${currentChainId}) does not match the target chain for the transaction (id: ${chain.id} – ${chain.name}).`, {\n metaMessages: [\n `Current Chain ID: ${currentChainId}`,\n `Expected Chain ID: ${chain.id} – ${chain.name}`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ChainMismatchError'\n });\n }\n}\nexport class ChainNotFoundError extends BaseError {\n constructor() {\n super([\n 'No chain was provided to the request.',\n 'Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient.',\n ].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ChainNotFoundError'\n });\n }\n}\nexport class ClientChainNotConfiguredError extends BaseError {\n constructor() {\n super('No chain was provided to the Client.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ClientChainNotConfiguredError'\n });\n }\n}\nexport class InvalidChainIdError extends BaseError {\n constructor({ chainId }) {\n super(typeof chainId === 'number'\n ? `Chain ID \"${chainId}\" is invalid.`\n : 'Chain ID is invalid.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidChainIdError'\n });\n }\n}\n//# sourceMappingURL=chain.js.map","import { ChainMismatchError, ChainNotFoundError, } from '../../errors/chain.js';\nexport function assertCurrentChain({ chain, currentChainId, }) {\n if (!chain)\n throw new ChainNotFoundError();\n if (currentChainId !== chain.id)\n throw new ChainMismatchError({ chain, currentChainId });\n}\n//# sourceMappingURL=assertCurrentChain.js.map","export const etherUnits = {\n gwei: 9,\n wei: 18,\n};\nexport const gweiUnits = {\n ether: -9,\n wei: 9,\n};\nexport const weiUnits = {\n ether: -18,\n gwei: -9,\n};\n//# sourceMappingURL=unit.js.map","/**\n * Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value, decimals) {\n let display = value.toString();\n const negative = display.startsWith('-');\n if (negative)\n display = display.slice(1);\n display = display.padStart(decimals, '0');\n let [integer, fraction] = [\n display.slice(0, display.length - decimals),\n display.slice(display.length - decimals),\n ];\n fraction = fraction.replace(/(0+)$/, '');\n return `${negative ? '-' : ''}${integer || '0'}${fraction ? `.${fraction}` : ''}`;\n}\n//# sourceMappingURL=formatUnits.js.map","import { gweiUnits } from '../../constants/unit.js';\nimport { formatUnits } from './formatUnits.js';\n/**\n * Converts numerical wei to a string representation of gwei.\n *\n * - Docs: https://viem.sh/docs/utilities/formatGwei\n *\n * @example\n * import { formatGwei } from 'viem'\n *\n * formatGwei(1000000000n)\n * // '1'\n */\nexport function formatGwei(wei, unit = 'wei') {\n return formatUnits(wei, gweiUnits[unit]);\n}\n//# sourceMappingURL=formatGwei.js.map","import { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nexport class ExecutionRevertedError extends BaseError {\n constructor({ cause, message, } = {}) {\n const reason = message\n ?.replace('execution reverted: ', '')\n ?.replace('execution reverted', '');\n super(`Execution reverted ${reason ? `with reason: ${reason}` : 'for an unknown reason'}.`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ExecutionRevertedError'\n });\n }\n}\nObject.defineProperty(ExecutionRevertedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 3\n});\nObject.defineProperty(ExecutionRevertedError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /execution reverted/\n});\nexport class FeeCapTooHighError extends BaseError {\n constructor({ cause, maxFeePerGas, } = {}) {\n super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''}) cannot be higher than the maximum allowed value (2^256-1).`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'FeeCapTooHigh'\n });\n }\n}\nObject.defineProperty(FeeCapTooHighError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /max fee per gas higher than 2\\^256-1|fee cap higher than 2\\^256-1/\n});\nexport class FeeCapTooLowError extends BaseError {\n constructor({ cause, maxFeePerGas, } = {}) {\n super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)}` : ''} gwei) cannot be lower than the block base fee.`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'FeeCapTooLow'\n });\n }\n}\nObject.defineProperty(FeeCapTooLowError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/\n});\nexport class NonceTooHighError extends BaseError {\n constructor({ cause, nonce } = {}) {\n super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}is higher than the next one expected.`, { cause });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'NonceTooHighError'\n });\n }\n}\nObject.defineProperty(NonceTooHighError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /nonce too high/\n});\nexport class NonceTooLowError extends BaseError {\n constructor({ cause, nonce } = {}) {\n super([\n `Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}is lower than the current nonce of the account.`,\n 'Try increasing the nonce or find the latest nonce with `getTransactionCount`.',\n ].join('\\n'), { cause });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'NonceTooLowError'\n });\n }\n}\nObject.defineProperty(NonceTooLowError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /nonce too low|transaction already imported|already known/\n});\nexport class NonceMaxValueError extends BaseError {\n constructor({ cause, nonce } = {}) {\n super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}exceeds the maximum allowed nonce.`, { cause });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'NonceMaxValueError'\n });\n }\n}\nObject.defineProperty(NonceMaxValueError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /nonce has max value/\n});\nexport class InsufficientFundsError extends BaseError {\n constructor({ cause } = {}) {\n super([\n 'The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.',\n ].join('\\n'), {\n cause,\n metaMessages: [\n 'This error could arise when the account does not have enough funds to:',\n ' - pay for the total gas fee,',\n ' - pay for the value to send.',\n ' ',\n 'The cost of the transaction is calculated as `gas * gas fee + value`, where:',\n ' - `gas` is the amount of gas needed for transaction to execute,',\n ' - `gas fee` is the gas fee,',\n ' - `value` is the amount of ether to send to the recipient.',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InsufficientFundsError'\n });\n }\n}\nObject.defineProperty(InsufficientFundsError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /insufficient funds/\n});\nexport class IntrinsicGasTooHighError extends BaseError {\n constructor({ cause, gas } = {}) {\n super(`The amount of gas ${gas ? `(${gas}) ` : ''}provided for the transaction exceeds the limit allowed for the block.`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'IntrinsicGasTooHighError'\n });\n }\n}\nObject.defineProperty(IntrinsicGasTooHighError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /intrinsic gas too high|gas limit reached/\n});\nexport class IntrinsicGasTooLowError extends BaseError {\n constructor({ cause, gas } = {}) {\n super(`The amount of gas ${gas ? `(${gas}) ` : ''}provided for the transaction is too low.`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'IntrinsicGasTooLowError'\n });\n }\n}\nObject.defineProperty(IntrinsicGasTooLowError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /intrinsic gas too low/\n});\nexport class TransactionTypeNotSupportedError extends BaseError {\n constructor({ cause }) {\n super('The transaction type is not supported for this chain.', {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'TransactionTypeNotSupportedError'\n });\n }\n}\nObject.defineProperty(TransactionTypeNotSupportedError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /transaction type not valid/\n});\nexport class TipAboveFeeCapError extends BaseError {\n constructor({ cause, maxPriorityFeePerGas, maxFeePerGas, } = {}) {\n super([\n `The provided tip (\\`maxPriorityFeePerGas\\`${maxPriorityFeePerGas\n ? ` = ${formatGwei(maxPriorityFeePerGas)} gwei`\n : ''}) cannot be higher than the fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''}).`,\n ].join('\\n'), {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'TipAboveFeeCapError'\n });\n }\n}\nObject.defineProperty(TipAboveFeeCapError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /max priority fee per gas higher than max fee per gas|tip higher than fee cap/\n});\nexport class UnknownNodeError extends BaseError {\n constructor({ cause }) {\n super(`An error occurred while executing: ${cause?.shortMessage}`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'UnknownNodeError'\n });\n }\n}\n//# sourceMappingURL=node.js.map","import { etherUnits } from '../../constants/unit.js';\nimport { formatUnits } from './formatUnits.js';\n/**\n * Converts numerical wei to a string representation of ether.\n *\n * - Docs: https://viem.sh/docs/utilities/formatEther\n *\n * @example\n * import { formatEther } from 'viem'\n *\n * formatEther(1000000000000000000n)\n * // '1'\n */\nexport function formatEther(wei, unit = 'wei') {\n return formatUnits(wei, etherUnits[unit]);\n}\n//# sourceMappingURL=formatEther.js.map","import { formatEther } from '../utils/unit/formatEther.js';\nimport { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nexport function prettyPrint(args) {\n const entries = Object.entries(args)\n .map(([key, value]) => {\n if (value === undefined || value === false)\n return null;\n return [key, value];\n })\n .filter(Boolean);\n const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0);\n return entries\n .map(([key, value]) => ` ${`${key}:`.padEnd(maxLength + 1)} ${value}`)\n .join('\\n');\n}\nexport class FeeConflictError extends BaseError {\n constructor() {\n super([\n 'Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.',\n 'Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others.',\n ].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'FeeConflictError'\n });\n }\n}\nexport class InvalidLegacyVError extends BaseError {\n constructor({ v }) {\n super(`Invalid \\`v\\` value \"${v}\". Expected 27 or 28.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidLegacyVError'\n });\n }\n}\nexport class InvalidSerializableTransactionError extends BaseError {\n constructor({ transaction }) {\n super('Cannot infer a transaction type from provided transaction.', {\n metaMessages: [\n 'Provided Transaction:',\n '{',\n prettyPrint(transaction),\n '}',\n '',\n 'To infer the type, either provide:',\n '- a `type` to the Transaction, or',\n '- an EIP-1559 Transaction with `maxFeePerGas`, or',\n '- an EIP-2930 Transaction with `gasPrice` & `accessList`, or',\n '- a Legacy Transaction with `gasPrice`',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidSerializableTransactionError'\n });\n }\n}\nexport class InvalidSerializedTransactionTypeError extends BaseError {\n constructor({ serializedType }) {\n super(`Serialized transaction type \"${serializedType}\" is invalid.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidSerializedTransactionType'\n });\n Object.defineProperty(this, \"serializedType\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.serializedType = serializedType;\n }\n}\nexport class InvalidSerializedTransactionError extends BaseError {\n constructor({ attributes, serializedTransaction, type, }) {\n const missing = Object.entries(attributes)\n .map(([key, value]) => (typeof value === 'undefined' ? key : undefined))\n .filter(Boolean);\n super(`Invalid serialized transaction of type \"${type}\" was provided.`, {\n metaMessages: [\n `Serialized Transaction: \"${serializedTransaction}\"`,\n missing.length > 0 ? `Missing Attributes: ${missing.join(', ')}` : '',\n ].filter(Boolean),\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidSerializedTransactionError'\n });\n Object.defineProperty(this, \"serializedTransaction\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"type\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.serializedTransaction = serializedTransaction;\n this.type = type;\n }\n}\nexport class InvalidStorageKeySizeError extends BaseError {\n constructor({ storageKey }) {\n super(`Size for storage key \"${storageKey}\" is invalid. Expected 32 bytes. Got ${Math.floor((storageKey.length - 2) / 2)} bytes.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidStorageKeySizeError'\n });\n }\n}\nexport class TransactionExecutionError extends BaseError {\n constructor(cause, { account, docsPath, chain, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, }) {\n const prettyArgs = prettyPrint({\n chain: chain && `${chain?.name} (id: ${chain?.id})`,\n from: account?.address,\n to,\n value: typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice: typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas: typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n });\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Request Arguments:',\n prettyArgs,\n ].filter(Boolean),\n });\n Object.defineProperty(this, \"cause\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'TransactionExecutionError'\n });\n this.cause = cause;\n }\n}\nexport class TransactionNotFoundError extends BaseError {\n constructor({ blockHash, blockNumber, blockTag, hash, index, }) {\n let identifier = 'Transaction';\n if (blockTag && index !== undefined)\n identifier = `Transaction at block time \"${blockTag}\" at index \"${index}\"`;\n if (blockHash && index !== undefined)\n identifier = `Transaction at block hash \"${blockHash}\" at index \"${index}\"`;\n if (blockNumber && index !== undefined)\n identifier = `Transaction at block number \"${blockNumber}\" at index \"${index}\"`;\n if (hash)\n identifier = `Transaction with hash \"${hash}\"`;\n super(`${identifier} could not be found.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'TransactionNotFoundError'\n });\n }\n}\nexport class TransactionReceiptNotFoundError extends BaseError {\n constructor({ hash }) {\n super(`Transaction receipt with hash \"${hash}\" could not be found. The Transaction may not be processed on a block yet.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'TransactionReceiptNotFoundError'\n });\n }\n}\nexport class WaitForTransactionReceiptTimeoutError extends BaseError {\n constructor({ hash }) {\n super(`Timed out while waiting for transaction with hash \"${hash}\" to be confirmed.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'WaitForTransactionReceiptTimeoutError'\n });\n }\n}\n//# sourceMappingURL=transaction.js.map","export const stringify = (value, replacer, space) => JSON.stringify(value, (key, value_) => {\n const value = typeof value_ === 'bigint' ? value_.toString() : value_;\n return typeof replacer === 'function' ? replacer(key, value) : value;\n}, space);\n//# sourceMappingURL=stringify.js.map","import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class HttpRequestError extends BaseError {\n constructor({ body, details, headers, status, url, }) {\n super('HTTP request failed.', {\n details,\n metaMessages: [\n status && `Status: ${status}`,\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean),\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'HttpRequestError'\n });\n Object.defineProperty(this, \"body\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"headers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"status\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"url\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.body = body;\n this.headers = headers;\n this.status = status;\n this.url = url;\n }\n}\nexport class WebSocketRequestError extends BaseError {\n constructor({ body, details, url, }) {\n super('WebSocket request failed.', {\n details,\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'WebSocketRequestError'\n });\n }\n}\nexport class RpcRequestError extends BaseError {\n constructor({ body, error, url, }) {\n super('RPC Request failed.', {\n cause: error,\n details: error.message,\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'RpcRequestError'\n });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.code = error.code;\n }\n}\nexport class TimeoutError extends BaseError {\n constructor({ body, url, }) {\n super('The request took too long to respond.', {\n details: 'The request timed out.',\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'TimeoutError'\n });\n }\n}\n//# sourceMappingURL=request.js.map","import { BaseError } from './base.js';\nimport { RpcRequestError } from './request.js';\nconst unknownErrorCode = -1;\nexport class RpcError extends BaseError {\n constructor(cause, { code, docsPath, metaMessages, shortMessage }) {\n super(shortMessage, {\n cause,\n docsPath,\n metaMessages: metaMessages || cause?.metaMessages,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'RpcError'\n });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = cause.name;\n this.code = (cause instanceof RpcRequestError ? cause.code : code ?? unknownErrorCode);\n }\n}\nexport class ProviderRpcError extends RpcError {\n constructor(cause, options) {\n super(cause, options);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ProviderRpcError'\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = options.data;\n }\n}\nexport class ParseRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: ParseRpcError.code,\n shortMessage: 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ParseRpcError'\n });\n }\n}\nObject.defineProperty(ParseRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32700\n});\nexport class InvalidRequestRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InvalidRequestRpcError.code,\n shortMessage: 'JSON is not a valid request object.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidRequestRpcError'\n });\n }\n}\nObject.defineProperty(InvalidRequestRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32600\n});\nexport class MethodNotFoundRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: MethodNotFoundRpcError.code,\n shortMessage: 'The method does not exist / is not available.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'MethodNotFoundRpcError'\n });\n }\n}\nObject.defineProperty(MethodNotFoundRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32601\n});\nexport class InvalidParamsRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InvalidParamsRpcError.code,\n shortMessage: [\n 'Invalid parameters were provided to the RPC method.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidParamsRpcError'\n });\n }\n}\nObject.defineProperty(InvalidParamsRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32602\n});\nexport class InternalRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InternalRpcError.code,\n shortMessage: 'An internal error was received.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InternalRpcError'\n });\n }\n}\nObject.defineProperty(InternalRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32603\n});\nexport class InvalidInputRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InvalidInputRpcError.code,\n shortMessage: [\n 'Missing or invalid parameters.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'InvalidInputRpcError'\n });\n }\n}\nObject.defineProperty(InvalidInputRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32000\n});\nexport class ResourceNotFoundRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: ResourceNotFoundRpcError.code,\n shortMessage: 'Requested resource not found.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ResourceNotFoundRpcError'\n });\n }\n}\nObject.defineProperty(ResourceNotFoundRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32001\n});\nexport class ResourceUnavailableRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: ResourceUnavailableRpcError.code,\n shortMessage: 'Requested resource not available.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ResourceUnavailableRpcError'\n });\n }\n}\nObject.defineProperty(ResourceUnavailableRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32002\n});\nexport class TransactionRejectedRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: TransactionRejectedRpcError.code,\n shortMessage: 'Transaction creation failed.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'TransactionRejectedRpcError'\n });\n }\n}\nObject.defineProperty(TransactionRejectedRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32003\n});\nexport class MethodNotSupportedRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: MethodNotSupportedRpcError.code,\n shortMessage: 'Method is not implemented.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'MethodNotSupportedRpcError'\n });\n }\n}\nObject.defineProperty(MethodNotSupportedRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32004\n});\nexport class LimitExceededRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: LimitExceededRpcError.code,\n shortMessage: 'Request exceeds defined limit.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'LimitExceededRpcError'\n });\n }\n}\nObject.defineProperty(LimitExceededRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32005\n});\nexport class JsonRpcVersionUnsupportedError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: JsonRpcVersionUnsupportedError.code,\n shortMessage: 'Version of JSON-RPC protocol is not supported.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'JsonRpcVersionUnsupportedError'\n });\n }\n}\nObject.defineProperty(JsonRpcVersionUnsupportedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32006\n});\nexport class UserRejectedRequestError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UserRejectedRequestError.code,\n shortMessage: 'User rejected the request.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'UserRejectedRequestError'\n });\n }\n}\nObject.defineProperty(UserRejectedRequestError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4001\n});\nexport class UnauthorizedProviderError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UnauthorizedProviderError.code,\n shortMessage: 'The requested method and/or account has not been authorized by the user.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'UnauthorizedProviderError'\n });\n }\n}\nObject.defineProperty(UnauthorizedProviderError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4100\n});\nexport class UnsupportedProviderMethodError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UnsupportedProviderMethodError.code,\n shortMessage: 'The Provider does not support the requested method.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'UnsupportedProviderMethodError'\n });\n }\n}\nObject.defineProperty(UnsupportedProviderMethodError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4200\n});\nexport class ProviderDisconnectedError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: ProviderDisconnectedError.code,\n shortMessage: 'The Provider is disconnected from all chains.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ProviderDisconnectedError'\n });\n }\n}\nObject.defineProperty(ProviderDisconnectedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4900\n});\nexport class ChainDisconnectedError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: ChainDisconnectedError.code,\n shortMessage: 'The Provider is not connected to the requested chain.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ChainDisconnectedError'\n });\n }\n}\nObject.defineProperty(ChainDisconnectedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4901\n});\nexport class SwitchChainError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: SwitchChainError.code,\n shortMessage: 'An error occurred when attempting to switch chain.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'SwitchChainError'\n });\n }\n}\nObject.defineProperty(SwitchChainError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4902\n});\nexport class UnknownRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n shortMessage: 'An unknown RPC error occurred.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'UnknownRpcError'\n });\n }\n}\n//# sourceMappingURL=rpc.js.map","import { BaseError } from '../../errors/base.js';\nimport { ExecutionRevertedError, FeeCapTooHighError, FeeCapTooLowError, InsufficientFundsError, IntrinsicGasTooHighError, IntrinsicGasTooLowError, NonceMaxValueError, NonceTooHighError, NonceTooLowError, TipAboveFeeCapError, TransactionTypeNotSupportedError, UnknownNodeError, } from '../../errors/node.js';\nimport { RpcRequestError } from '../../errors/request.js';\nimport { InvalidInputRpcError, TransactionRejectedRpcError, } from '../../errors/rpc.js';\nexport function containsNodeError(err) {\n return (err instanceof TransactionRejectedRpcError ||\n err instanceof InvalidInputRpcError ||\n (err instanceof RpcRequestError && err.code === ExecutionRevertedError.code));\n}\nexport function getNodeError(err, args) {\n const message = (err.details || '').toLowerCase();\n const executionRevertedError = err instanceof BaseError\n ? err.walk((e) => e.code === ExecutionRevertedError.code)\n : err;\n if (executionRevertedError instanceof BaseError) {\n return new ExecutionRevertedError({\n cause: err,\n message: executionRevertedError.details,\n });\n }\n if (ExecutionRevertedError.nodeMessage.test(message))\n return new ExecutionRevertedError({\n cause: err,\n message: err.details,\n });\n if (FeeCapTooHighError.nodeMessage.test(message))\n return new FeeCapTooHighError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n });\n if (FeeCapTooLowError.nodeMessage.test(message))\n return new FeeCapTooLowError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n });\n if (NonceTooHighError.nodeMessage.test(message))\n return new NonceTooHighError({ cause: err, nonce: args?.nonce });\n if (NonceTooLowError.nodeMessage.test(message))\n return new NonceTooLowError({ cause: err, nonce: args?.nonce });\n if (NonceMaxValueError.nodeMessage.test(message))\n return new NonceMaxValueError({ cause: err, nonce: args?.nonce });\n if (InsufficientFundsError.nodeMessage.test(message))\n return new InsufficientFundsError({ cause: err });\n if (IntrinsicGasTooHighError.nodeMessage.test(message))\n return new IntrinsicGasTooHighError({ cause: err, gas: args?.gas });\n if (IntrinsicGasTooLowError.nodeMessage.test(message))\n return new IntrinsicGasTooLowError({ cause: err, gas: args?.gas });\n if (TransactionTypeNotSupportedError.nodeMessage.test(message))\n return new TransactionTypeNotSupportedError({ cause: err });\n if (TipAboveFeeCapError.nodeMessage.test(message))\n return new TipAboveFeeCapError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n maxPriorityFeePerGas: args?.maxPriorityFeePerGas,\n });\n return new UnknownNodeError({\n cause: err,\n });\n}\n//# sourceMappingURL=getNodeError.js.map","import { UnknownNodeError } from '../../errors/node.js';\nimport { TransactionExecutionError, } from '../../errors/transaction.js';\nimport { getNodeError, } from './getNodeError.js';\nexport function getTransactionError(err, { docsPath, ...args }) {\n const cause = (() => {\n const cause = getNodeError(err, args);\n if (cause instanceof UnknownNodeError)\n return err;\n return cause;\n })();\n return new TransactionExecutionError(cause, {\n docsPath,\n ...args,\n });\n}\n//# sourceMappingURL=getTransactionError.js.map","/**\n * @description Picks out the keys from `value` that exist in the formatter..\n */\nexport function extract(value_, { format }) {\n if (!format)\n return {};\n const value = {};\n function extract_(formatted) {\n const keys = Object.keys(formatted);\n for (const key of keys) {\n if (key in value_)\n value[key] = value_[key];\n if (formatted[key] &&\n typeof formatted[key] === 'object' &&\n !Array.isArray(formatted[key]))\n extract_(formatted[key]);\n }\n }\n const formatted = format(value_ || {});\n extract_(formatted);\n return value;\n}\n//# sourceMappingURL=extract.js.map","import { numberToHex } from '../encoding/toHex.js';\nimport { defineFormatter } from './formatter.js';\nexport const rpcTransactionType = {\n legacy: '0x0',\n eip2930: '0x1',\n eip1559: '0x2',\n eip4844: '0x3',\n};\nexport function formatTransactionRequest(transactionRequest) {\n return {\n ...transactionRequest,\n gas: typeof transactionRequest.gas !== 'undefined'\n ? numberToHex(transactionRequest.gas)\n : undefined,\n gasPrice: typeof transactionRequest.gasPrice !== 'undefined'\n ? numberToHex(transactionRequest.gasPrice)\n : undefined,\n maxFeePerGas: typeof transactionRequest.maxFeePerGas !== 'undefined'\n ? numberToHex(transactionRequest.maxFeePerGas)\n : undefined,\n maxPriorityFeePerGas: typeof transactionRequest.maxPriorityFeePerGas !== 'undefined'\n ? numberToHex(transactionRequest.maxPriorityFeePerGas)\n : undefined,\n nonce: typeof transactionRequest.nonce !== 'undefined'\n ? numberToHex(transactionRequest.nonce)\n : undefined,\n type: typeof transactionRequest.type !== 'undefined'\n ? rpcTransactionType[transactionRequest.type]\n : undefined,\n value: typeof transactionRequest.value !== 'undefined'\n ? numberToHex(transactionRequest.value)\n : undefined,\n };\n}\nexport const defineTransactionRequest = /*#__PURE__*/ defineFormatter('transactionRequest', formatTransactionRequest);\n//# sourceMappingURL=transactionRequest.js.map","/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction(client, action, \n// Some minifiers drop `Function.prototype.name`, meaning that `action.name`\n// will not work. For that case, the consumer needs to pass the name explicitly.\nname) {\n return (params) => client[action.name || name]?.(params) ?? action(client, params);\n}\n//# sourceMappingURL=getAction.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { FeeCapTooHighError, TipAboveFeeCapError, } from '../../errors/node.js';\nimport { FeeConflictError, } from '../../errors/transaction.js';\nimport { isAddress } from '../address/isAddress.js';\nexport function assertRequest(args) {\n const { account: account_, gasPrice, maxFeePerGas, maxPriorityFeePerGas, to, } = args;\n const account = account_ ? parseAccount(account_) : undefined;\n if (account && !isAddress(account.address))\n throw new InvalidAddressError({ address: account.address });\n if (to && !isAddress(to))\n throw new InvalidAddressError({ address: to });\n if (typeof gasPrice !== 'undefined' &&\n (typeof maxFeePerGas !== 'undefined' ||\n typeof maxPriorityFeePerGas !== 'undefined'))\n throw new FeeConflictError();\n if (maxFeePerGas && maxFeePerGas > 2n ** 256n - 1n)\n throw new FeeCapTooHighError({ maxFeePerGas });\n if (maxPriorityFeePerGas &&\n maxFeePerGas &&\n maxPriorityFeePerGas > maxFeePerGas)\n throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas });\n}\n//# sourceMappingURL=assertRequest.js.map","import { hexToNumber, } from '../../utils/encoding/fromHex.js';\n/**\n * Returns the chain ID associated with the current network.\n *\n * - Docs: https://viem.sh/docs/actions/public/getChainId\n * - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)\n *\n * @param client - Client to use\n * @returns The current chain ID. {@link GetChainIdReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getChainId } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const chainId = await getChainId(client)\n * // 1\n */\nexport async function getChainId(client) {\n const chainIdHex = await client.request({\n method: 'eth_chainId',\n });\n return hexToNumber(chainIdHex);\n}\n//# sourceMappingURL=getChainId.js.map","import { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nexport class BaseFeeScalarError extends BaseError {\n constructor() {\n super('`baseFeeMultiplier` must be greater than 1.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'BaseFeeScalarError'\n });\n }\n}\nexport class Eip1559FeesNotSupportedError extends BaseError {\n constructor() {\n super('Chain does not support EIP-1559 fees.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Eip1559FeesNotSupportedError'\n });\n }\n}\nexport class MaxFeePerGasTooLowError extends BaseError {\n constructor({ maxPriorityFeePerGas }) {\n super(`\\`maxFeePerGas\\` cannot be less than the \\`maxPriorityFeePerGas\\` (${formatGwei(maxPriorityFeePerGas)} gwei).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'MaxFeePerGasTooLowError'\n });\n }\n}\n//# sourceMappingURL=fee.js.map","import { BaseError } from './base.js';\nexport class BlockNotFoundError extends BaseError {\n constructor({ blockHash, blockNumber, }) {\n let identifier = 'Block';\n if (blockHash)\n identifier = `Block at hash \"${blockHash}\"`;\n if (blockNumber)\n identifier = `Block at number \"${blockNumber}\"`;\n super(`${identifier} could not be found.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'BlockNotFoundError'\n });\n }\n}\n//# sourceMappingURL=block.js.map","import { hexToNumber } from '../encoding/fromHex.js';\nimport { defineFormatter } from './formatter.js';\nexport const transactionType = {\n '0x0': 'legacy',\n '0x1': 'eip2930',\n '0x2': 'eip1559',\n '0x3': 'eip4844',\n};\nexport function formatTransaction(transaction) {\n const transaction_ = {\n ...transaction,\n blockHash: transaction.blockHash ? transaction.blockHash : null,\n blockNumber: transaction.blockNumber\n ? BigInt(transaction.blockNumber)\n : null,\n chainId: transaction.chainId ? hexToNumber(transaction.chainId) : undefined,\n gas: transaction.gas ? BigInt(transaction.gas) : undefined,\n gasPrice: transaction.gasPrice ? BigInt(transaction.gasPrice) : undefined,\n maxFeePerBlobGas: transaction.maxFeePerBlobGas\n ? BigInt(transaction.maxFeePerBlobGas)\n : undefined,\n maxFeePerGas: transaction.maxFeePerGas\n ? BigInt(transaction.maxFeePerGas)\n : undefined,\n maxPriorityFeePerGas: transaction.maxPriorityFeePerGas\n ? BigInt(transaction.maxPriorityFeePerGas)\n : undefined,\n nonce: transaction.nonce ? hexToNumber(transaction.nonce) : undefined,\n to: transaction.to ? transaction.to : null,\n transactionIndex: transaction.transactionIndex\n ? Number(transaction.transactionIndex)\n : null,\n type: transaction.type\n ? transactionType[transaction.type]\n : undefined,\n typeHex: transaction.type ? transaction.type : undefined,\n value: transaction.value ? BigInt(transaction.value) : undefined,\n v: transaction.v ? BigInt(transaction.v) : undefined,\n };\n transaction_.yParity = (() => {\n // If `yParity` is provided, we will use it.\n if (transaction.yParity)\n return Number(transaction.yParity);\n // If no `yParity` provided, try derive from `v`.\n if (typeof transaction_.v === 'bigint') {\n if (transaction_.v === 0n || transaction_.v === 27n)\n return 0;\n if (transaction_.v === 1n || transaction_.v === 28n)\n return 1;\n if (transaction_.v >= 35n)\n return transaction_.v % 2n === 0n ? 1 : 0;\n }\n return undefined;\n })();\n if (transaction_.type === 'legacy') {\n delete transaction_.accessList;\n delete transaction_.maxFeePerBlobGas;\n delete transaction_.maxFeePerGas;\n delete transaction_.maxPriorityFeePerGas;\n delete transaction_.yParity;\n }\n if (transaction_.type === 'eip2930') {\n delete transaction_.maxFeePerBlobGas;\n delete transaction_.maxFeePerGas;\n delete transaction_.maxPriorityFeePerGas;\n }\n if (transaction_.type === 'eip1559') {\n delete transaction_.maxFeePerBlobGas;\n }\n return transaction_;\n}\nexport const defineTransaction = /*#__PURE__*/ defineFormatter('transaction', formatTransaction);\n//# sourceMappingURL=transaction.js.map","import { defineFormatter } from './formatter.js';\nimport { formatTransaction } from './transaction.js';\nexport function formatBlock(block) {\n const transactions = block.transactions?.map((transaction) => {\n if (typeof transaction === 'string')\n return transaction;\n return formatTransaction(transaction);\n });\n return {\n ...block,\n baseFeePerGas: block.baseFeePerGas ? BigInt(block.baseFeePerGas) : null,\n blobGasUsed: block.blobGasUsed ? BigInt(block.blobGasUsed) : undefined,\n difficulty: block.difficulty ? BigInt(block.difficulty) : undefined,\n excessBlobGas: block.excessBlobGas\n ? BigInt(block.excessBlobGas)\n : undefined,\n gasLimit: block.gasLimit ? BigInt(block.gasLimit) : undefined,\n gasUsed: block.gasUsed ? BigInt(block.gasUsed) : undefined,\n hash: block.hash ? block.hash : null,\n logsBloom: block.logsBloom ? block.logsBloom : null,\n nonce: block.nonce ? block.nonce : null,\n number: block.number ? BigInt(block.number) : null,\n size: block.size ? BigInt(block.size) : undefined,\n timestamp: block.timestamp ? BigInt(block.timestamp) : undefined,\n transactions,\n totalDifficulty: block.totalDifficulty\n ? BigInt(block.totalDifficulty)\n : null,\n };\n}\nexport const defineBlock = /*#__PURE__*/ defineFormatter('block', formatBlock);\n//# sourceMappingURL=block.js.map","import { BlockNotFoundError, } from '../../errors/block.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatBlock, } from '../../utils/formatters/block.js';\n/**\n * Returns information about a block at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlock\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`.\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockParameters}\n * @returns Information about the block. {@link GetBlockReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlock } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await getBlock(client)\n */\nexport async function getBlock(client, { blockHash, blockNumber, blockTag: blockTag_, includeTransactions: includeTransactions_, } = {}) {\n const blockTag = blockTag_ ?? 'latest';\n const includeTransactions = includeTransactions_ ?? false;\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n let block = null;\n if (blockHash) {\n block = await client.request({\n method: 'eth_getBlockByHash',\n params: [blockHash, includeTransactions],\n });\n }\n else {\n block = await client.request({\n method: 'eth_getBlockByNumber',\n params: [blockNumberHex || blockTag, includeTransactions],\n });\n }\n if (!block)\n throw new BlockNotFoundError({ blockHash, blockNumber });\n const format = client.chain?.formatters?.block?.format || formatBlock;\n return format(block);\n}\n//# sourceMappingURL=getBlock.js.map","/**\n * Returns the current price of gas (in wei).\n *\n * - Docs: https://viem.sh/docs/actions/public/getGasPrice\n * - JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice)\n *\n * @param client - Client to use\n * @returns The gas price (in wei). {@link GetGasPriceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getGasPrice } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gasPrice = await getGasPrice(client)\n */\nexport async function getGasPrice(client) {\n const gasPrice = await client.request({\n method: 'eth_gasPrice',\n });\n return BigInt(gasPrice);\n}\n//# sourceMappingURL=getGasPrice.js.map","import { Eip1559FeesNotSupportedError, } from '../../errors/fee.js';\nimport { hexToBigInt, } from '../../utils/encoding/fromHex.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getBlock } from './getBlock.js';\nimport { getGasPrice } from './getGasPrice.js';\n/**\n * Returns an estimate for the max priority fee per gas (in wei) for a\n * transaction to be likely included in the next block.\n * Defaults to [`chain.fees.defaultPriorityFee`](/docs/clients/chains#fees-defaultpriorityfee) if set.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas\n *\n * @param client - Client to use\n * @returns An estimate (in wei) for the max priority fee per gas. {@link EstimateMaxPriorityFeePerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateMaxPriorityFeePerGas } from 'viem/actions'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const maxPriorityFeePerGas = await estimateMaxPriorityFeePerGas(client)\n * // 10000000n\n */\nexport async function estimateMaxPriorityFeePerGas(client, args) {\n return internal_estimateMaxPriorityFeePerGas(client, args);\n}\nexport async function internal_estimateMaxPriorityFeePerGas(client, args) {\n const { block: block_, chain = client.chain, request } = args || {};\n if (typeof chain?.fees?.defaultPriorityFee === 'function') {\n const block = block_ || (await getAction(client, getBlock, 'getBlock')({}));\n return chain.fees.defaultPriorityFee({\n block,\n client,\n request,\n });\n }\n if (typeof chain?.fees?.defaultPriorityFee !== 'undefined')\n return chain?.fees?.defaultPriorityFee;\n try {\n const maxPriorityFeePerGasHex = await client.request({\n method: 'eth_maxPriorityFeePerGas',\n });\n return hexToBigInt(maxPriorityFeePerGasHex);\n }\n catch {\n // If the RPC Provider does not support `eth_maxPriorityFeePerGas`\n // fall back to calculating it manually via `gasPrice - baseFeePerGas`.\n // See: https://github.com/ethereum/pm/issues/328#:~:text=eth_maxPriorityFeePerGas%20after%20London%20will%20effectively%20return%20eth_gasPrice%20%2D%20baseFee\n const [block, gasPrice] = await Promise.all([\n block_\n ? Promise.resolve(block_)\n : getAction(client, getBlock, 'getBlock')({}),\n getAction(client, getGasPrice, 'getGasPrice')({}),\n ]);\n if (typeof block.baseFeePerGas !== 'bigint')\n throw new Eip1559FeesNotSupportedError();\n const maxPriorityFeePerGas = gasPrice - block.baseFeePerGas;\n if (maxPriorityFeePerGas < 0n)\n return 0n;\n return maxPriorityFeePerGas;\n }\n}\n//# sourceMappingURL=estimateMaxPriorityFeePerGas.js.map","import { BaseFeeScalarError, Eip1559FeesNotSupportedError, } from '../../errors/fee.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { internal_estimateMaxPriorityFeePerGas, } from './estimateMaxPriorityFeePerGas.js';\nimport { getBlock } from './getBlock.js';\nimport { getGasPrice } from './getGasPrice.js';\n/**\n * Returns an estimate for the fees per gas (in wei) for a\n * transaction to be likely included in the next block.\n * Defaults to [`chain.fees.estimateFeesPerGas`](/docs/clients/chains#fees-estimatefeespergas) if set.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateFeesPerGas\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateFeesPerGasParameters}\n * @returns An estimate (in wei) for the fees per gas. {@link EstimateFeesPerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateFeesPerGas } from 'viem/actions'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const maxPriorityFeePerGas = await estimateFeesPerGas(client)\n * // { maxFeePerGas: ..., maxPriorityFeePerGas: ... }\n */\nexport async function estimateFeesPerGas(client, args) {\n return internal_estimateFeesPerGas(client, args);\n}\nexport async function internal_estimateFeesPerGas(client, args) {\n const { block: block_, chain = client.chain, request, type = 'eip1559', } = args || {};\n const baseFeeMultiplier = await (async () => {\n if (typeof chain?.fees?.baseFeeMultiplier === 'function')\n return chain.fees.baseFeeMultiplier({\n block: block_,\n client,\n request,\n });\n return chain?.fees?.baseFeeMultiplier ?? 1.2;\n })();\n if (baseFeeMultiplier < 1)\n throw new BaseFeeScalarError();\n const decimals = baseFeeMultiplier.toString().split('.')[1]?.length ?? 0;\n const denominator = 10 ** decimals;\n const multiply = (base) => (base * BigInt(Math.ceil(baseFeeMultiplier * denominator))) /\n BigInt(denominator);\n const block = block_\n ? block_\n : await getAction(client, getBlock, 'getBlock')({});\n if (typeof chain?.fees?.estimateFeesPerGas === 'function')\n return chain.fees.estimateFeesPerGas({\n block: block_,\n client,\n multiply,\n request,\n type,\n });\n if (type === 'eip1559') {\n if (typeof block.baseFeePerGas !== 'bigint')\n throw new Eip1559FeesNotSupportedError();\n const maxPriorityFeePerGas = typeof request?.maxPriorityFeePerGas === 'bigint'\n ? request.maxPriorityFeePerGas\n : await internal_estimateMaxPriorityFeePerGas(client, {\n block: block,\n chain,\n request,\n });\n const baseFeePerGas = multiply(block.baseFeePerGas);\n const maxFeePerGas = request?.maxFeePerGas ?? baseFeePerGas + maxPriorityFeePerGas;\n return {\n maxFeePerGas,\n maxPriorityFeePerGas,\n };\n }\n const gasPrice = request?.gasPrice ??\n multiply(await getAction(client, getGasPrice, 'getGasPrice')({}));\n return {\n gasPrice,\n };\n}\n//# sourceMappingURL=estimateFeesPerGas.js.map","import { formatEther } from '../utils/unit/formatEther.js';\nimport { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nimport { prettyPrint } from './transaction.js';\nexport class EstimateGasExecutionError extends BaseError {\n constructor(cause, { account, docsPath, chain, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, }) {\n const prettyArgs = prettyPrint({\n from: account?.address,\n to,\n value: typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice: typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas: typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n });\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Estimate Gas Arguments:',\n prettyArgs,\n ].filter(Boolean),\n });\n Object.defineProperty(this, \"cause\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'EstimateGasExecutionError'\n });\n this.cause = cause;\n }\n}\n//# sourceMappingURL=estimateGas.js.map","import { EstimateGasExecutionError, } from '../../errors/estimateGas.js';\nimport { UnknownNodeError } from '../../errors/node.js';\nimport { getNodeError, } from './getNodeError.js';\nexport function getEstimateGasError(err, { docsPath, ...args }) {\n const cause = (() => {\n const cause = getNodeError(err, args);\n if (cause instanceof UnknownNodeError)\n return err;\n return cause;\n })();\n return new EstimateGasExecutionError(cause, {\n docsPath,\n ...args,\n });\n}\n//# sourceMappingURL=getEstimateGasError.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { getEstimateGasError, } from '../../utils/errors/getEstimateGasError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\nimport { prepareTransactionRequest, } from '../wallet/prepareTransactionRequest.js';\n/**\n * Estimates the gas necessary to complete a transaction without submitting it to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateGas\n * - JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas)\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseEther } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateGas } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gasEstimate = await estimateGas(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: parseEther('1'),\n * })\n */\nexport async function estimateGas(client, args) {\n const account_ = args.account ?? client.account;\n const account = account_ ? parseAccount(account_) : undefined;\n try {\n const { accessList, blockNumber, blockTag, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, ...rest } = account?.type === 'local'\n ? (await prepareTransactionRequest(client, args))\n : args;\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined;\n const block = blockNumberHex || blockTag;\n assertRequest(args);\n const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n const format = chainFormat || formatTransactionRequest;\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n from: account?.address,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n });\n const balance = await client.request({\n method: 'eth_estimateGas',\n params: block ? [request, block] : [request],\n });\n return BigInt(balance);\n }\n catch (err) {\n throw getEstimateGasError(err, {\n ...args,\n account,\n chain: client.chain,\n });\n }\n}\n//# sourceMappingURL=estimateGas.js.map","import { hexToNumber, } from '../../utils/encoding/fromHex.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has broadcast / sent.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionCount\n * - JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionCountParameters}\n * @returns The number of transactions an account has sent. {@link GetTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionCount } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionCount = await getTransactionCount(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function getTransactionCount(client, { address, blockTag = 'latest', blockNumber }) {\n const count = await client.request({\n method: 'eth_getTransactionCount',\n params: [address, blockNumber ? numberToHex(blockNumber) : blockTag],\n });\n return hexToNumber(count);\n}\n//# sourceMappingURL=getTransactionCount.js.map","import { InvalidSerializableTransactionError, } from '../../errors/transaction.js';\nexport function getTransactionType(transaction) {\n if (transaction.type)\n return transaction.type;\n if (typeof transaction.maxFeePerGas !== 'undefined' ||\n typeof transaction.maxPriorityFeePerGas !== 'undefined')\n return 'eip1559';\n if (typeof transaction.gasPrice !== 'undefined') {\n if (typeof transaction.accessList !== 'undefined')\n return 'eip2930';\n return 'legacy';\n }\n throw new InvalidSerializableTransactionError({ transaction });\n}\n//# sourceMappingURL=getTransactionType.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { internal_estimateFeesPerGas, } from '../../actions/public/estimateFeesPerGas.js';\nimport { estimateGas, } from '../../actions/public/estimateGas.js';\nimport { getBlock, } from '../../actions/public/getBlock.js';\nimport { getTransactionCount, } from '../../actions/public/getTransactionCount.js';\nimport {} from '../../errors/account.js';\nimport { Eip1559FeesNotSupportedError, MaxFeePerGasTooLowError, } from '../../errors/fee.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { assertRequest } from '../../utils/transaction/assertRequest.js';\nimport { getTransactionType } from '../../utils/transaction/getTransactionType.js';\n/**\n * Prepares a transaction request for signing.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest\n *\n * @param args - {@link PrepareTransactionRequestParameters}\n * @returns The transaction request. {@link PrepareTransactionRequestReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { prepareTransactionRequest } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await prepareTransactionRequest(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareTransactionRequest } from 'viem/actions'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await prepareTransactionRequest(client, {\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n */\nexport async function prepareTransactionRequest(client, args) {\n const { account: account_ = client.account, chain, gas, nonce, parameters = ['fees', 'gas', 'nonce', 'type'], type, } = args;\n const account = account_ ? parseAccount(account_) : undefined;\n const block = await getAction(client, getBlock, 'getBlock')({ blockTag: 'latest' });\n const request = { ...args, ...(account ? { from: account?.address } : {}) };\n if (parameters.includes('nonce') && typeof nonce === 'undefined' && account)\n request.nonce = await getAction(client, getTransactionCount, 'getTransactionCount')({\n address: account.address,\n blockTag: 'pending',\n });\n if ((parameters.includes('fees') || parameters.includes('type')) &&\n typeof type === 'undefined') {\n try {\n request.type = getTransactionType(request);\n }\n catch {\n // infer type from block\n request.type =\n typeof block.baseFeePerGas === 'bigint' ? 'eip1559' : 'legacy';\n }\n }\n if (parameters.includes('fees')) {\n if (request.type === 'eip1559') {\n // EIP-1559 fees\n const { maxFeePerGas, maxPriorityFeePerGas } = await internal_estimateFeesPerGas(client, {\n block: block,\n chain,\n request: request,\n });\n if (typeof args.maxPriorityFeePerGas === 'undefined' &&\n args.maxFeePerGas &&\n args.maxFeePerGas < maxPriorityFeePerGas)\n throw new MaxFeePerGasTooLowError({\n maxPriorityFeePerGas,\n });\n request.maxPriorityFeePerGas = maxPriorityFeePerGas;\n request.maxFeePerGas = maxFeePerGas;\n }\n else {\n // Legacy fees\n if (typeof args.maxFeePerGas !== 'undefined' ||\n typeof args.maxPriorityFeePerGas !== 'undefined')\n throw new Eip1559FeesNotSupportedError();\n const { gasPrice: gasPrice_ } = await internal_estimateFeesPerGas(client, {\n block: block,\n chain,\n request: request,\n type: 'legacy',\n });\n request.gasPrice = gasPrice_;\n }\n }\n if (parameters.includes('gas') && typeof gas === 'undefined')\n request.gas = await getAction(client, estimateGas, 'estimateGas')({\n ...request,\n account: account\n ? { address: account.address, type: 'json-rpc' }\n : undefined,\n });\n assertRequest(request);\n delete request.parameters;\n return request;\n}\n//# sourceMappingURL=prepareTransactionRequest.js.map","/**\n * Sends a **signed** transaction to the network\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction\n * - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n *\n * @param client - Client to use\n * @param parameters - {@link SendRawTransactionParameters}\n * @returns The transaction hash. {@link SendRawTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendRawTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n *\n * const hash = await sendRawTransaction(client, {\n * serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'\n * })\n */\nexport async function sendRawTransaction(client, { serializedTransaction }) {\n return client.request({\n method: 'eth_sendRawTransaction',\n params: [serializedTransaction],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=sendRawTransaction.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../errors/account.js';\nimport { assertCurrentChain, } from '../../utils/chain/assertCurrentChain.js';\nimport { getTransactionError, } from '../../utils/errors/getTransactionError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\nimport { getChainId } from '../public/getChainId.js';\nimport { prepareTransactionRequest, } from './prepareTransactionRequest.js';\nimport { sendRawTransaction, } from './sendRawTransaction.js';\n/**\n * Creates, signs, and sends a new transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/sending-transactions\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction)\n * - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction)\n *\n * @param client - Client to use\n * @param parameters - {@link SendTransactionParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link SendTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const hash = await sendTransaction(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: 1000000000000000000n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const hash = await sendTransaction(client, {\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: 1000000000000000000n,\n * })\n */\nexport async function sendTransaction(client, args) {\n const { account: account_ = client.account, chain = client.chain, accessList, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, ...rest } = args;\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/sendTransaction',\n });\n const account = parseAccount(account_);\n try {\n assertRequest(args);\n let chainId;\n if (chain !== null) {\n chainId = await getAction(client, getChainId, 'getChainId')({});\n assertCurrentChain({\n currentChainId: chainId,\n chain,\n });\n }\n if (account.type === 'local') {\n // Prepare the request for signing (assign appropriate fees, etc.)\n const request = await getAction(client, prepareTransactionRequest, 'prepareTransactionRequest')({\n account,\n accessList,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n ...rest,\n });\n if (!chainId)\n chainId = await getAction(client, getChainId, 'getChainId')({});\n const serializer = chain?.serializers?.transaction;\n const serializedTransaction = (await account.signTransaction({\n ...request,\n chainId,\n }, { serializer }));\n return await getAction(client, sendRawTransaction, 'sendRawTransaction')({\n serializedTransaction,\n });\n }\n const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n const format = chainFormat || formatTransactionRequest;\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n accessList,\n data,\n from: account.address,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n });\n return await client.request({\n method: 'eth_sendTransaction',\n params: [request],\n }, { retryCount: 0 });\n }\n catch (err) {\n throw getTransactionError(err, {\n ...args,\n account,\n chain: args.chain || undefined,\n });\n }\n}\n//# sourceMappingURL=sendTransaction.js.map","import { encodeDeployData } from '../../utils/abi/encodeDeployData.js';\nimport { sendTransaction, } from './sendTransaction.js';\n/**\n * Deploys a contract to the network, given bytecode and constructor arguments.\n *\n * - Docs: https://viem.sh/docs/contract/deployContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/deploying-contracts\n *\n * @param client - Client to use\n * @param parameters - {@link DeployContractParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link DeployContractReturnType}\n *\n * @example\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { deployContract } from 'viem/contract'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const hash = await deployContract(client, {\n * abi: [],\n * account: '0x…,\n * bytecode: '0x608060405260405161083e38038061083e833981016040819052610...',\n * })\n */\nexport function deployContract(walletClient, parameters) {\n const { abi, args, bytecode, ...request } = parameters;\n const calldata = encodeDeployData({ abi, args, bytecode });\n return sendTransaction(walletClient, {\n ...request,\n data: calldata,\n });\n}\n//# sourceMappingURL=deployContract.js.map","/* [Multicall3](https://github.com/mds1/multicall) */\nexport const multicall3Abi = [\n {\n inputs: [\n {\n components: [\n {\n name: 'target',\n type: 'address',\n },\n {\n name: 'allowFailure',\n type: 'bool',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n ],\n name: 'calls',\n type: 'tuple[]',\n },\n ],\n name: 'aggregate3',\n outputs: [\n {\n components: [\n {\n name: 'success',\n type: 'bool',\n },\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'returnData',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n];\nconst universalResolverErrors = [\n {\n inputs: [],\n name: 'ResolverNotFound',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverWildcardNotSupported',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverNotContract',\n type: 'error',\n },\n {\n inputs: [\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'ResolverError',\n type: 'error',\n },\n {\n inputs: [\n {\n components: [\n {\n name: 'status',\n type: 'uint16',\n },\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'errors',\n type: 'tuple[]',\n },\n ],\n name: 'HttpError',\n type: 'error',\n },\n];\nexport const universalResolverResolveAbi = [\n ...universalResolverErrors,\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n { name: 'gateways', type: 'string[]' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n];\nexport const universalResolverReverseAbi = [\n ...universalResolverErrors,\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'bytes', name: 'reverseName' },\n { type: 'string[]', name: 'gateways' },\n ],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n];\nexport const textResolverAbi = [\n {\n name: 'text',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'key', type: 'string' },\n ],\n outputs: [{ name: '', type: 'string' }],\n },\n];\nexport const addressResolverAbi = [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [{ name: '', type: 'address' }],\n },\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'coinType', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes' }],\n },\n];\n// ERC-1271\n// isValidSignature(bytes32 hash, bytes signature) → bytes4 magicValue\nexport const smartAccountAbi = [\n {\n name: 'isValidSignature',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'hash', type: 'bytes32' },\n { name: 'signature', type: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4' }],\n },\n];\n// ERC-6492 - universal deployless signature validator contract\n// constructor(address _signer, bytes32 _hash, bytes _signature) → bytes4 returnValue\n// returnValue is either 0x1 (valid) or 0x0 (invalid)\nexport const universalSignatureValidatorAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: '_signer',\n type: 'address',\n },\n {\n internalType: 'bytes32',\n name: '_hash',\n type: 'bytes32',\n },\n {\n internalType: 'bytes',\n name: '_signature',\n type: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n];\n/** [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) */\nexport const erc20Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n];\n/**\n * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error)\n * for tokens (ie. Maker) that use bytes32 instead of string.\n */\nexport const erc20Abi_bytes32 = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n];\n/** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */\nexport const erc721Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n name: 'approved',\n type: 'bool',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'getApproved',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'operator',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'ownerOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'id',\n type: 'uint256',\n },\n {\n name: 'data',\n type: 'bytes',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'operator',\n type: 'address',\n },\n {\n name: 'approved',\n type: 'bool',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenURI',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'tokeId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n];\n/** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */\nexport const erc4626Abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'asset',\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'convertToAssets',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'convertToShares',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'deposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxDeposit',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxMint',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxRedeem',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxWithdraw',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'mint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewDeposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewMint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewRedeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewWithdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'redeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAssets',\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n];\n//# sourceMappingURL=abis.js.map","import { BaseError } from './base.js';\nexport class NegativeOffsetError extends BaseError {\n constructor({ offset }) {\n super(`Offset \\`${offset}\\` cannot be negative.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'NegativeOffsetError'\n });\n }\n}\nexport class PositionOutOfBoundsError extends BaseError {\n constructor({ length, position }) {\n super(`Position \\`${position}\\` is out of bounds (\\`0 < position < ${length}\\`).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'PositionOutOfBoundsError'\n });\n }\n}\nexport class RecursiveReadLimitExceededError extends BaseError {\n constructor({ count, limit }) {\n super(`Recursive read limit of \\`${limit}\\` exceeded (recursive read count: \\`${count}\\`).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'RecursiveReadLimitExceededError'\n });\n }\n}\n//# sourceMappingURL=cursor.js.map","import { NegativeOffsetError, PositionOutOfBoundsError, RecursiveReadLimitExceededError, } from '../errors/cursor.js';\nconst staticCursor = {\n bytes: new Uint8Array(),\n dataView: new DataView(new ArrayBuffer(0)),\n position: 0,\n positionReadCount: new Map(),\n recursiveReadCount: 0,\n recursiveReadLimit: Infinity,\n assertReadLimit() {\n if (this.recursiveReadCount >= this.recursiveReadLimit)\n throw new RecursiveReadLimitExceededError({\n count: this.recursiveReadCount + 1,\n limit: this.recursiveReadLimit,\n });\n },\n assertPosition(position) {\n if (position < 0 || position > this.bytes.length - 1)\n throw new PositionOutOfBoundsError({\n length: this.bytes.length,\n position,\n });\n },\n decrementPosition(offset) {\n if (offset < 0)\n throw new NegativeOffsetError({ offset });\n const position = this.position - offset;\n this.assertPosition(position);\n this.position = position;\n },\n getReadCount(position) {\n return this.positionReadCount.get(position || this.position) || 0;\n },\n incrementPosition(offset) {\n if (offset < 0)\n throw new NegativeOffsetError({ offset });\n const position = this.position + offset;\n this.assertPosition(position);\n this.position = position;\n },\n inspectByte(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position);\n return this.bytes[position];\n },\n inspectBytes(length, position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + length - 1);\n return this.bytes.subarray(position, position + length);\n },\n inspectUint8(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position);\n return this.bytes[position];\n },\n inspectUint16(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + 1);\n return this.dataView.getUint16(position);\n },\n inspectUint24(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + 2);\n return ((this.dataView.getUint16(position) << 8) +\n this.dataView.getUint8(position + 2));\n },\n inspectUint32(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + 3);\n return this.dataView.getUint32(position);\n },\n pushByte(byte) {\n this.assertPosition(this.position);\n this.bytes[this.position] = byte;\n this.position++;\n },\n pushBytes(bytes) {\n this.assertPosition(this.position + bytes.length - 1);\n this.bytes.set(bytes, this.position);\n this.position += bytes.length;\n },\n pushUint8(value) {\n this.assertPosition(this.position);\n this.bytes[this.position] = value;\n this.position++;\n },\n pushUint16(value) {\n this.assertPosition(this.position + 1);\n this.dataView.setUint16(this.position, value);\n this.position += 2;\n },\n pushUint24(value) {\n this.assertPosition(this.position + 2);\n this.dataView.setUint16(this.position, value >> 8);\n this.dataView.setUint8(this.position + 2, value & ~4294967040);\n this.position += 3;\n },\n pushUint32(value) {\n this.assertPosition(this.position + 3);\n this.dataView.setUint32(this.position, value);\n this.position += 4;\n },\n readByte() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectByte();\n this.position++;\n return value;\n },\n readBytes(length, size) {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectBytes(length);\n this.position += size ?? length;\n return value;\n },\n readUint8() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint8();\n this.position += 1;\n return value;\n },\n readUint16() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint16();\n this.position += 2;\n return value;\n },\n readUint24() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint24();\n this.position += 3;\n return value;\n },\n readUint32() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint32();\n this.position += 4;\n return value;\n },\n setPosition(position) {\n const oldPosition = this.position;\n this.assertPosition(position);\n this.position = position;\n return () => (this.position = oldPosition);\n },\n _touch() {\n if (this.recursiveReadLimit === Infinity)\n return;\n const count = this.getReadCount();\n this.positionReadCount.set(this.position, count + 1);\n if (count > 0)\n this.recursiveReadCount++;\n },\n};\nexport function createCursor(bytes, { recursiveReadLimit = 8192 } = {}) {\n const cursor = Object.create(staticCursor);\n cursor.bytes = bytes;\n cursor.dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n cursor.positionReadCount = new Map();\n cursor.recursiveReadLimit = recursiveReadLimit;\n return cursor;\n}\n//# sourceMappingURL=cursor.js.map","import { InvalidBytesBooleanError } from '../../errors/encoding.js';\nimport { trim } from '../data/trim.js';\nimport { assertSize, hexToBigInt, hexToNumber, } from './fromHex.js';\nimport { bytesToHex } from './toHex.js';\n/**\n * Decodes a byte array into a UTF-8 string, hex value, number, bigint or boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes\n * - Example: https://viem.sh/docs/utilities/fromBytes#usage\n *\n * @param bytes Byte array to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(new Uint8Array([1, 164]), 'number')\n * // 420\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(\n * new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]),\n * 'string'\n * )\n * // 'Hello world'\n */\nexport function fromBytes(bytes, toOrOpts) {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n const to = opts.to;\n if (to === 'number')\n return bytesToNumber(bytes, opts);\n if (to === 'bigint')\n return bytesToBigInt(bytes, opts);\n if (to === 'boolean')\n return bytesToBool(bytes, opts);\n if (to === 'string')\n return bytesToString(bytes, opts);\n return bytesToHex(bytes, opts);\n}\n/**\n * Decodes a byte array into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobigint\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { bytesToBigInt } from 'viem'\n * const data = bytesToBigInt(new Uint8Array([1, 164]))\n * // 420n\n */\nexport function bytesToBigInt(bytes, opts = {}) {\n if (typeof opts.size !== 'undefined')\n assertSize(bytes, { size: opts.size });\n const hex = bytesToHex(bytes, opts);\n return hexToBigInt(hex, opts);\n}\n/**\n * Decodes a byte array into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobool\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { bytesToBool } from 'viem'\n * const data = bytesToBool(new Uint8Array([1]))\n * // true\n */\nexport function bytesToBool(bytes_, opts = {}) {\n let bytes = bytes_;\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size });\n bytes = trim(bytes);\n }\n if (bytes.length > 1 || bytes[0] > 1)\n throw new InvalidBytesBooleanError(bytes);\n return Boolean(bytes[0]);\n}\n/**\n * Decodes a byte array into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestonumber\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { bytesToNumber } from 'viem'\n * const data = bytesToNumber(new Uint8Array([1, 164]))\n * // 420\n */\nexport function bytesToNumber(bytes, opts = {}) {\n if (typeof opts.size !== 'undefined')\n assertSize(bytes, { size: opts.size });\n const hex = bytesToHex(bytes, opts);\n return hexToNumber(hex, opts);\n}\n/**\n * Decodes a byte array into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestostring\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { bytesToString } from 'viem'\n * const data = bytesToString(new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // 'Hello world'\n */\nexport function bytesToString(bytes_, opts = {}) {\n let bytes = bytes_;\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size });\n bytes = trim(bytes, { dir: 'right' });\n }\n return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromBytes.js.map","import { AbiDecodingDataSizeTooSmallError, AbiDecodingZeroDataError, InvalidAbiDecodingTypeError, } from '../../errors/abi.js';\nimport { checksumAddress, } from '../address/getAddress.js';\nimport { createCursor } from '../cursor.js';\nimport { size } from '../data/size.js';\nimport { sliceBytes } from '../data/slice.js';\nimport { trim } from '../data/trim.js';\nimport { bytesToBigInt, bytesToBool, bytesToNumber, bytesToString, } from '../encoding/fromBytes.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { getArrayComponents } from './encodeAbiParameters.js';\nexport function decodeAbiParameters(params, data) {\n const bytes = typeof data === 'string' ? hexToBytes(data) : data;\n const cursor = createCursor(bytes);\n if (size(bytes) === 0 && params.length > 0)\n throw new AbiDecodingZeroDataError();\n if (size(data) && size(data) < 32)\n throw new AbiDecodingDataSizeTooSmallError({\n data: typeof data === 'string' ? data : bytesToHex(data),\n params: params,\n size: size(data),\n });\n let consumed = 0;\n const values = [];\n for (let i = 0; i < params.length; ++i) {\n const param = params[i];\n cursor.setPosition(consumed);\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: 0,\n });\n consumed += consumed_;\n values.push(data);\n }\n return values;\n}\nfunction decodeParameter(cursor, param, { staticPosition }) {\n const arrayComponents = getArrayComponents(param.type);\n if (arrayComponents) {\n const [length, type] = arrayComponents;\n return decodeArray(cursor, { ...param, type }, { length, staticPosition });\n }\n if (param.type === 'tuple')\n return decodeTuple(cursor, param, { staticPosition });\n if (param.type === 'address')\n return decodeAddress(cursor);\n if (param.type === 'bool')\n return decodeBool(cursor);\n if (param.type.startsWith('bytes'))\n return decodeBytes(cursor, param, { staticPosition });\n if (param.type.startsWith('uint') || param.type.startsWith('int'))\n return decodeNumber(cursor, param);\n if (param.type === 'string')\n return decodeString(cursor, { staticPosition });\n throw new InvalidAbiDecodingTypeError(param.type, {\n docsPath: '/docs/contract/decodeAbiParameters',\n });\n}\n////////////////////////////////////////////////////////////////////\n// Type Decoders\nconst sizeOfLength = 32;\nconst sizeOfOffset = 32;\nfunction decodeAddress(cursor) {\n const value = cursor.readBytes(32);\n return [checksumAddress(bytesToHex(sliceBytes(value, -20))), 32];\n}\nfunction decodeArray(cursor, param, { length, staticPosition }) {\n // If the length of the array is not known in advance (dynamic array),\n // this means we will need to wonder off to the pointer and decode.\n if (!length) {\n // Dealing with a dynamic type, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset;\n const startOfData = start + sizeOfLength;\n // Get the length of the array from the offset.\n cursor.setPosition(start);\n const length = bytesToNumber(cursor.readBytes(sizeOfLength));\n // Check if the array has any dynamic children.\n const dynamicChild = hasDynamicChild(param);\n let consumed = 0;\n const value = [];\n for (let i = 0; i < length; ++i) {\n // If any of the children is dynamic, then all elements will be offset pointer, thus size of one slot (32 bytes).\n // Otherwise, elements will be the size of their encoding (consumed bytes).\n cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed));\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: startOfData,\n });\n consumed += consumed_;\n value.push(data);\n }\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n }\n // If the length of the array is known in advance,\n // and the length of an element deeply nested in the array is not known,\n // we need to decode the offset of the array data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset;\n const value = [];\n for (let i = 0; i < length; ++i) {\n // Move cursor along to the next slot (next offset pointer).\n cursor.setPosition(start + i * 32);\n const [data] = decodeParameter(cursor, param, {\n staticPosition: start,\n });\n value.push(data);\n }\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n }\n // If the length of the array is known in advance and the array is deeply static,\n // then we can just decode each element in sequence.\n let consumed = 0;\n const value = [];\n for (let i = 0; i < length; ++i) {\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: staticPosition + consumed,\n });\n consumed += consumed_;\n value.push(data);\n }\n return [value, consumed];\n}\nfunction decodeBool(cursor) {\n return [bytesToBool(cursor.readBytes(32), { size: 32 }), 32];\n}\nfunction decodeBytes(cursor, param, { staticPosition }) {\n const [_, size] = param.type.split('bytes');\n if (!size) {\n // Dealing with dynamic types, so get the offset of the bytes data.\n const offset = bytesToNumber(cursor.readBytes(32));\n // Set position of the cursor to start of bytes data.\n cursor.setPosition(staticPosition + offset);\n const length = bytesToNumber(cursor.readBytes(32));\n // If there is no length, we have zero data.\n if (length === 0) {\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return ['0x', 32];\n }\n const data = cursor.readBytes(length);\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [bytesToHex(data), 32];\n }\n const value = bytesToHex(cursor.readBytes(parseInt(size), 32));\n return [value, 32];\n}\nfunction decodeNumber(cursor, param) {\n const signed = param.type.startsWith('int');\n const size = parseInt(param.type.split('int')[1] || '256');\n const value = cursor.readBytes(32);\n return [\n size > 48\n ? bytesToBigInt(value, { signed })\n : bytesToNumber(value, { signed }),\n 32,\n ];\n}\nfunction decodeTuple(cursor, param, { staticPosition }) {\n // Tuples can have unnamed components (i.e. they are arrays), so we must\n // determine whether the tuple is named or unnamed. In the case of a named\n // tuple, the value will be an object where each property is the name of the\n // component. In the case of an unnamed tuple, the value will be an array.\n const hasUnnamedChild = param.components.length === 0 || param.components.some(({ name }) => !name);\n // Initialize the value to an object or an array, depending on whether the\n // tuple is named or unnamed.\n const value = hasUnnamedChild ? [] : {};\n let consumed = 0;\n // If the tuple has a dynamic child, we must first decode the offset to the\n // tuple data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the tuple data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n // Start is the static position of referencing slot + offset.\n const start = staticPosition + offset;\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i];\n cursor.setPosition(start + consumed);\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition: start,\n });\n consumed += consumed_;\n value[hasUnnamedChild ? i : component?.name] = data;\n }\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n }\n // If the tuple has static children, we can just decode each component\n // in sequence.\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i];\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition,\n });\n value[hasUnnamedChild ? i : component?.name] = data;\n consumed += consumed_;\n }\n return [value, consumed];\n}\nfunction decodeString(cursor, { staticPosition }) {\n // Get offset to start of string data.\n const offset = bytesToNumber(cursor.readBytes(32));\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset;\n cursor.setPosition(start);\n const length = bytesToNumber(cursor.readBytes(32));\n // If there is no length, we have zero data (empty string).\n if (length === 0) {\n cursor.setPosition(staticPosition + 32);\n return ['', 32];\n }\n const data = cursor.readBytes(length, 32);\n const value = bytesToString(trim(data));\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n}\nfunction hasDynamicChild(param) {\n const { type } = param;\n if (type === 'string')\n return true;\n if (type === 'bytes')\n return true;\n if (type.endsWith('[]'))\n return true;\n if (type === 'tuple')\n return param.components?.some(hasDynamicChild);\n const arrayComponents = getArrayComponents(param.type);\n if (arrayComponents &&\n hasDynamicChild({ ...param, type: arrayComponents[1] }))\n return true;\n return false;\n}\n//# sourceMappingURL=decodeAbiParameters.js.map","// TODO: This looks cool. Need to check the performance of `new RegExp` versus defined inline though.\n// https://twitter.com/GabrielVergnaud/status/1622906834343366657\nexport function execTyped(regex, string) {\n const match = regex.exec(string);\n return match?.groups;\n}\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex = /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\nexport const isTupleRegex = /^\\(.+?\\).*?$/;\n//# sourceMappingURL=regex.js.map","import { execTyped } from '../regex.js';\n// https://regexr.com/7f7rv\nconst tupleRegex = /^tuple(?(\\[(\\d*)\\])*)$/;\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * const result = formatAbiParameter({ type: 'address', name: 'from' })\n * // ^? const result: 'address from'\n */\nexport function formatAbiParameter(abiParameter) {\n let type = abiParameter.type;\n if (tupleRegex.test(abiParameter.type) && 'components' in abiParameter) {\n type = '(';\n const length = abiParameter.components.length;\n for (let i = 0; i < length; i++) {\n const component = abiParameter.components[i];\n type += formatAbiParameter(component);\n if (i < length - 1)\n type += ', ';\n }\n const result = execTyped(tupleRegex, abiParameter.type);\n type += `)${result?.array ?? ''}`;\n return formatAbiParameter({\n ...abiParameter,\n type,\n });\n }\n // Add `indexed` to type if in `abiParameter`\n if ('indexed' in abiParameter && abiParameter.indexed)\n type = `${type} indexed`;\n // Return human-readable ABI parameter\n if (abiParameter.name)\n return `${type} ${abiParameter.name}`;\n return type;\n}\n//# sourceMappingURL=formatAbiParameter.js.map","import { formatAbiParameter, } from './formatAbiParameter.js';\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameters.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * const result = formatAbiParameters([\n * // ^? const result: 'address from, uint256 tokenId'\n * { type: 'address', name: 'from' },\n * { type: 'uint256', name: 'tokenId' },\n * ])\n */\nexport function formatAbiParameters(abiParameters) {\n let params = '';\n const length = abiParameters.length;\n for (let i = 0; i < length; i++) {\n const abiParameter = abiParameters[i];\n params += formatAbiParameter(abiParameter);\n if (i !== length - 1)\n params += ', ';\n }\n return params;\n}\n//# sourceMappingURL=formatAbiParameters.js.map","import { formatAbiParameters, } from './formatAbiParameters.js';\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport function formatAbiItem(abiItem) {\n if (abiItem.type === 'function')\n return `function ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})${abiItem.stateMutability && abiItem.stateMutability !== 'nonpayable'\n ? ` ${abiItem.stateMutability}`\n : ''}${abiItem.outputs.length\n ? ` returns (${formatAbiParameters(abiItem.outputs)})`\n : ''}`;\n else if (abiItem.type === 'event')\n return `event ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})`;\n else if (abiItem.type === 'error')\n return `error ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})`;\n else if (abiItem.type === 'constructor')\n return `constructor(${formatAbiParameters(abiItem.inputs)})${abiItem.stateMutability === 'payable' ? ' payable' : ''}`;\n else if (abiItem.type === 'fallback')\n return 'fallback()';\n return 'receive() external payable';\n}\n//# sourceMappingURL=formatAbiItem.js.map","import { toBytes } from '../encoding/toBytes.js';\nimport { keccak256 } from './keccak256.js';\nconst hash = (value) => keccak256(toBytes(value));\nexport function hashSignature(sig) {\n return hash(sig);\n}\n//# sourceMappingURL=hashSignature.js.map","import { BaseError } from '../../errors/base.js';\nexport function normalizeSignature(signature) {\n let active = true;\n let current = '';\n let level = 0;\n let result = '';\n let valid = false;\n for (let i = 0; i < signature.length; i++) {\n const char = signature[i];\n // If the character is a separator, we want to reactivate.\n if (['(', ')', ','].includes(char))\n active = true;\n // If the character is a \"level\" token, we want to increment/decrement.\n if (char === '(')\n level++;\n if (char === ')')\n level--;\n // If we aren't active, we don't want to mutate the result.\n if (!active)\n continue;\n // If level === 0, we are at the definition level.\n if (level === 0) {\n if (char === ' ' && ['event', 'function', ''].includes(result))\n result = '';\n else {\n result += char;\n // If we are at the end of the definition, we must be finished.\n if (char === ')') {\n valid = true;\n break;\n }\n }\n continue;\n }\n // Ignore spaces\n if (char === ' ') {\n // If the previous character is a separator, and the current section isn't empty, we want to deactivate.\n if (signature[i - 1] !== ',' && current !== ',' && current !== ',(') {\n current = '';\n active = false;\n }\n continue;\n }\n result += char;\n current += char;\n }\n if (!valid)\n throw new BaseError('Unable to normalize signature.');\n return result;\n}\n//# sourceMappingURL=normalizeSignature.js.map","import { formatAbiItem } from 'abitype';\nimport { normalizeSignature, } from './normalizeSignature.js';\n/**\n * Returns the signature for a given function or event definition.\n *\n * @example\n * const signature = toSignature('function ownerOf(uint256 tokenId)')\n * // 'ownerOf(uint256)'\n *\n * @example\n * const signature_3 = toSignature({\n * name: 'ownerOf',\n * type: 'function',\n * inputs: [{ name: 'tokenId', type: 'uint256' }],\n * outputs: [],\n * stateMutability: 'view',\n * })\n * // 'ownerOf(uint256)'\n */\nexport const toSignature = (def) => {\n const def_ = (() => {\n if (typeof def === 'string')\n return def;\n return formatAbiItem(def);\n })();\n return normalizeSignature(def_);\n};\n//# sourceMappingURL=toSignature.js.map","import { hashSignature } from './hashSignature.js';\nimport { toSignature } from './toSignature.js';\n/**\n * Returns the hash (of the function/event signature) for a given event or function definition.\n */\nexport function toSignatureHash(fn) {\n return hashSignature(toSignature(fn));\n}\n//# sourceMappingURL=toSignatureHash.js.map","import { toSignatureHash, } from './toSignatureHash.js';\n/**\n * Returns the event selector for a given event definition.\n *\n * @example\n * const selector = toEventSelector('Transfer(address indexed from, address indexed to, uint256 amount)')\n * // 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n */\nexport const toEventSelector = toSignatureHash;\n//# sourceMappingURL=toEventSelector.js.map","import { slice } from '../data/slice.js';\nimport { toSignatureHash, } from './toSignatureHash.js';\n/**\n * Returns the function selector for a given function definition.\n *\n * @example\n * const selector = toFunctionSelector('function ownerOf(uint256 tokenId)')\n * // 0x6352211e\n */\nexport const toFunctionSelector = (fn) => slice(toSignatureHash(fn), 0, 4);\n//# sourceMappingURL=toFunctionSelector.js.map","import {} from 'abitype';\nimport { AbiItemAmbiguityError } from '../../errors/abi.js';\nimport { isHex } from '../../utils/data/isHex.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { toEventSelector } from '../hash/toEventSelector.js';\nimport { toFunctionSelector, } from '../hash/toFunctionSelector.js';\nexport function getAbiItem(parameters) {\n const { abi, args = [], name } = parameters;\n const isSelector = isHex(name, { strict: false });\n const abiItems = abi.filter((abiItem) => {\n if (isSelector) {\n if (abiItem.type === 'function')\n return toFunctionSelector(abiItem) === name;\n if (abiItem.type === 'event')\n return toEventSelector(abiItem) === name;\n return false;\n }\n return 'name' in abiItem && abiItem.name === name;\n });\n if (abiItems.length === 0)\n return undefined;\n if (abiItems.length === 1)\n return abiItems[0];\n let matchedAbiItem = undefined;\n for (const abiItem of abiItems) {\n if (!('inputs' in abiItem))\n continue;\n if (!args || args.length === 0) {\n if (!abiItem.inputs || abiItem.inputs.length === 0)\n return abiItem;\n continue;\n }\n if (!abiItem.inputs)\n continue;\n if (abiItem.inputs.length === 0)\n continue;\n if (abiItem.inputs.length !== args.length)\n continue;\n const matched = args.every((arg, index) => {\n const abiParameter = 'inputs' in abiItem && abiItem.inputs[index];\n if (!abiParameter)\n return false;\n return isArgOfType(arg, abiParameter);\n });\n if (matched) {\n // Check for ambiguity against already matched parameters (e.g. `address` vs `bytes20`).\n if (matchedAbiItem &&\n 'inputs' in matchedAbiItem &&\n matchedAbiItem.inputs) {\n const ambiguousTypes = getAmbiguousTypes(abiItem.inputs, matchedAbiItem.inputs, args);\n if (ambiguousTypes)\n throw new AbiItemAmbiguityError({\n abiItem,\n type: ambiguousTypes[0],\n }, {\n abiItem: matchedAbiItem,\n type: ambiguousTypes[1],\n });\n }\n matchedAbiItem = abiItem;\n }\n }\n if (matchedAbiItem)\n return matchedAbiItem;\n return abiItems[0];\n}\nexport function isArgOfType(arg, abiParameter) {\n const argType = typeof arg;\n const abiParameterType = abiParameter.type;\n switch (abiParameterType) {\n case 'address':\n return isAddress(arg, { strict: false });\n case 'bool':\n return argType === 'boolean';\n case 'function':\n return argType === 'string';\n case 'string':\n return argType === 'string';\n default: {\n if (abiParameterType === 'tuple' && 'components' in abiParameter)\n return Object.values(abiParameter.components).every((component, index) => {\n return isArgOfType(Object.values(arg)[index], component);\n });\n // `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n // https://regexr.com/6v8hp\n if (/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(abiParameterType))\n return argType === 'number' || argType === 'bigint';\n // `bytes`: binary type of `M` bytes, `0 < M <= 32`\n // https://regexr.com/6va55\n if (/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(abiParameterType))\n return argType === 'string' || arg instanceof Uint8Array;\n // fixed-length (`[M]`) and dynamic (`[]`) arrays\n // https://regexr.com/6va6i\n if (/[a-z]+[1-9]{0,3}(\\[[0-9]{0,}\\])+$/.test(abiParameterType)) {\n return (Array.isArray(arg) &&\n arg.every((x) => isArgOfType(x, {\n ...abiParameter,\n // Pop off `[]` or `[M]` from end of type\n type: abiParameterType.replace(/(\\[[0-9]{0,}\\])$/, ''),\n })));\n }\n return false;\n }\n }\n}\nexport function getAmbiguousTypes(sourceParameters, targetParameters, args) {\n for (const parameterIndex in sourceParameters) {\n const sourceParameter = sourceParameters[parameterIndex];\n const targetParameter = targetParameters[parameterIndex];\n if (sourceParameter.type === 'tuple' &&\n targetParameter.type === 'tuple' &&\n 'components' in sourceParameter &&\n 'components' in targetParameter)\n return getAmbiguousTypes(sourceParameter.components, targetParameter.components, args[parameterIndex]);\n const types = [sourceParameter.type, targetParameter.type];\n const ambiguous = (() => {\n if (types.includes('address') && types.includes('bytes20'))\n return true;\n if (types.includes('address') && types.includes('string'))\n return isAddress(args[parameterIndex], { strict: false });\n if (types.includes('address') && types.includes('bytes'))\n return isAddress(args[parameterIndex], { strict: false });\n return false;\n })();\n if (ambiguous)\n return types;\n }\n return;\n}\n//# sourceMappingURL=getAbiItem.js.map","import { AbiFunctionNotFoundError, AbiFunctionOutputsNotFoundError, } from '../../errors/abi.js';\nimport { decodeAbiParameters, } from './decodeAbiParameters.js';\nimport { getAbiItem } from './getAbiItem.js';\nconst docsPath = '/docs/contract/decodeFunctionResult';\nexport function decodeFunctionResult(parameters) {\n const { abi, args, functionName, data } = parameters;\n let abiItem = abi[0];\n if (functionName) {\n const item = getAbiItem({ abi, args, name: functionName });\n if (!item)\n throw new AbiFunctionNotFoundError(functionName, { docsPath });\n abiItem = item;\n }\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath });\n if (!abiItem.outputs)\n throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath });\n const values = decodeAbiParameters(abiItem.outputs, data);\n if (values && values.length > 1)\n return values;\n if (values && values.length === 1)\n return values[0];\n return undefined;\n}\n//# sourceMappingURL=decodeFunctionResult.js.map","import { AbiFunctionNotFoundError, } from '../../errors/abi.js';\nimport { concatHex } from '../data/concat.js';\nimport { toFunctionSelector, } from '../hash/toFunctionSelector.js';\nimport { encodeAbiParameters, } from './encodeAbiParameters.js';\nimport { formatAbiItem } from './formatAbiItem.js';\nimport { getAbiItem } from './getAbiItem.js';\nconst docsPath = '/docs/contract/encodeFunctionData';\nexport function encodeFunctionData(parameters) {\n const { abi, args, functionName } = parameters;\n let abiItem = abi[0];\n if (functionName) {\n const item = getAbiItem({\n abi,\n args,\n name: functionName,\n });\n if (!item)\n throw new AbiFunctionNotFoundError(functionName, { docsPath });\n abiItem = item;\n }\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath });\n const definition = formatAbiItem(abiItem);\n const signature = toFunctionSelector(definition);\n const data = 'inputs' in abiItem && abiItem.inputs\n ? encodeAbiParameters(abiItem.inputs, args ?? [])\n : undefined;\n return concatHex([signature, data ?? '0x']);\n}\n//# sourceMappingURL=encodeFunctionData.js.map","import { ChainDoesNotSupportContract, } from '../../errors/chain.js';\nexport function getChainContractAddress({ blockNumber, chain, contract: name, }) {\n const contract = chain?.contracts?.[name];\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain,\n contract: { name },\n });\n if (blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber)\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain,\n contract: {\n name,\n blockCreated: contract.blockCreated,\n },\n });\n return contract.address;\n}\n//# sourceMappingURL=getChainContractAddress.js.map","// https://docs.soliditylang.org/en/v0.8.16/control-structures.html#panic-via-assert-and-error-via-require\nexport const panicReasons = {\n 1: 'An `assert` condition failed.',\n 17: 'Arithmetic operation resulted in underflow or overflow.',\n 18: 'Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).',\n 33: 'Attempted to convert to an invalid type.',\n 34: 'Attempted to access a storage byte array that is incorrectly encoded.',\n 49: 'Performed `.pop()` on an empty array',\n 50: 'Array index is out of bounds.',\n 65: 'Allocated too much memory or created an array which is too large.',\n 81: 'Attempted to call a zero-initialized variable of internal function type.',\n};\nexport const solidityError = {\n inputs: [\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'Error',\n type: 'error',\n};\nexport const solidityPanic = {\n inputs: [\n {\n name: 'reason',\n type: 'uint256',\n },\n ],\n name: 'Panic',\n type: 'error',\n};\n//# sourceMappingURL=solidity.js.map","import { solidityError, solidityPanic } from '../../constants/solidity.js';\nimport { AbiDecodingZeroDataError, AbiErrorSignatureNotFoundError, } from '../../errors/abi.js';\nimport { slice } from '../data/slice.js';\nimport { toFunctionSelector, } from '../hash/toFunctionSelector.js';\nimport { decodeAbiParameters, } from './decodeAbiParameters.js';\nimport { formatAbiItem } from './formatAbiItem.js';\nexport function decodeErrorResult(parameters) {\n const { abi, data } = parameters;\n const signature = slice(data, 0, 4);\n if (signature === '0x')\n throw new AbiDecodingZeroDataError();\n const abi_ = [...(abi || []), solidityError, solidityPanic];\n const abiItem = abi_.find((x) => x.type === 'error' && signature === toFunctionSelector(formatAbiItem(x)));\n if (!abiItem)\n throw new AbiErrorSignatureNotFoundError(signature, {\n docsPath: '/docs/contract/decodeErrorResult',\n });\n return {\n abiItem,\n args: 'inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0\n ? decodeAbiParameters(abiItem.inputs, slice(data, 4))\n : undefined,\n errorName: abiItem.name,\n };\n}\n//# sourceMappingURL=decodeErrorResult.js.map","import { stringify } from '../stringify.js';\nexport function formatAbiItemWithArgs({ abiItem, args, includeFunctionName = true, includeName = false, }) {\n if (!('name' in abiItem))\n return;\n if (!('inputs' in abiItem))\n return;\n if (!abiItem.inputs)\n return;\n return `${includeFunctionName ? abiItem.name : ''}(${abiItem.inputs\n .map((input, i) => `${includeName && input.name ? `${input.name}: ` : ''}${typeof args[i] === 'object' ? stringify(args[i]) : args[i]}`)\n .join(', ')})`;\n}\n//# sourceMappingURL=formatAbiItemWithArgs.js.map","import { BaseError } from './base.js';\nexport class AccountStateConflictError extends BaseError {\n constructor({ address }) {\n super(`State for account \"${address}\" is set multiple times.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AccountStateConflictError'\n });\n }\n}\nexport class StateAssignmentConflictError extends BaseError {\n constructor() {\n super('state and stateDiff are set on the same account.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'StateAssignmentConflictError'\n });\n }\n}\nexport function prettyStateMapping(stateMapping) {\n return stateMapping.reduce((pretty, { slot, value }) => {\n return `${pretty} ${slot}: ${value}\\n`;\n }, '');\n}\nexport function prettyStateOverride(stateOverride) {\n return stateOverride\n .reduce((pretty, { address, ...state }) => {\n let val = `${pretty} ${address}:\\n`;\n if (state.nonce)\n val += ` nonce: ${state.nonce}\\n`;\n if (state.balance)\n val += ` balance: ${state.balance}\\n`;\n if (state.code)\n val += ` code: ${state.code}\\n`;\n if (state.state) {\n val += ' state:\\n';\n val += prettyStateMapping(state.state);\n }\n if (state.stateDiff) {\n val += ' stateDiff:\\n';\n val += prettyStateMapping(state.stateDiff);\n }\n return val;\n }, ' State Override:\\n')\n .slice(0, -1);\n}\n//# sourceMappingURL=stateOverride.js.map","import { parseAccount } from '../accounts/utils/parseAccount.js';\nimport { panicReasons } from '../constants/solidity.js';\nimport { decodeErrorResult, } from '../utils/abi/decodeErrorResult.js';\nimport { formatAbiItem } from '../utils/abi/formatAbiItem.js';\nimport { formatAbiItemWithArgs } from '../utils/abi/formatAbiItemWithArgs.js';\nimport { getAbiItem } from '../utils/abi/getAbiItem.js';\nimport { formatEther } from '../utils/unit/formatEther.js';\nimport { formatGwei } from '../utils/unit/formatGwei.js';\nimport { AbiErrorSignatureNotFoundError } from './abi.js';\nimport { BaseError } from './base.js';\nimport { prettyStateOverride } from './stateOverride.js';\nimport { prettyPrint } from './transaction.js';\nimport { getContractAddress } from './utils.js';\nexport class CallExecutionError extends BaseError {\n constructor(cause, { account: account_, docsPath, chain, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride, }) {\n const account = account_ ? parseAccount(account_) : undefined;\n let prettyArgs = prettyPrint({\n from: account?.address,\n to,\n value: typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice: typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas: typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n });\n if (stateOverride) {\n prettyArgs += `\\n${prettyStateOverride(stateOverride)}`;\n }\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Raw Call Arguments:',\n prettyArgs,\n ].filter(Boolean),\n });\n Object.defineProperty(this, \"cause\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'CallExecutionError'\n });\n this.cause = cause;\n }\n}\nexport class ContractFunctionExecutionError extends BaseError {\n constructor(cause, { abi, args, contractAddress, docsPath, functionName, sender, }) {\n const abiItem = getAbiItem({ abi, args, name: functionName });\n const formattedArgs = abiItem\n ? formatAbiItemWithArgs({\n abiItem,\n args,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined;\n const functionWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined;\n const prettyArgs = prettyPrint({\n address: contractAddress && getContractAddress(contractAddress),\n function: functionWithParams,\n args: formattedArgs &&\n formattedArgs !== '()' &&\n `${[...Array(functionName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`,\n sender,\n });\n super(cause.shortMessage ||\n `An unknown error occurred while executing the contract function \"${functionName}\".`, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Contract Call:',\n prettyArgs,\n ].filter(Boolean),\n });\n Object.defineProperty(this, \"abi\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"args\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"cause\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"contractAddress\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"formattedArgs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"functionName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"sender\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ContractFunctionExecutionError'\n });\n this.abi = abi;\n this.args = args;\n this.cause = cause;\n this.contractAddress = contractAddress;\n this.functionName = functionName;\n this.sender = sender;\n }\n}\nexport class ContractFunctionRevertedError extends BaseError {\n constructor({ abi, data, functionName, message, }) {\n let cause;\n let decodedData = undefined;\n let metaMessages;\n let reason;\n if (data && data !== '0x') {\n try {\n decodedData = decodeErrorResult({ abi, data });\n const { abiItem, errorName, args: errorArgs } = decodedData;\n if (errorName === 'Error') {\n reason = errorArgs[0];\n }\n else if (errorName === 'Panic') {\n const [firstArg] = errorArgs;\n reason = panicReasons[firstArg];\n }\n else {\n const errorWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined;\n const formattedArgs = abiItem && errorArgs\n ? formatAbiItemWithArgs({\n abiItem,\n args: errorArgs,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined;\n metaMessages = [\n errorWithParams ? `Error: ${errorWithParams}` : '',\n formattedArgs && formattedArgs !== '()'\n ? ` ${[...Array(errorName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`\n : '',\n ];\n }\n }\n catch (err) {\n cause = err;\n }\n }\n else if (message)\n reason = message;\n let signature;\n if (cause instanceof AbiErrorSignatureNotFoundError) {\n signature = cause.signature;\n metaMessages = [\n `Unable to decode signature \"${signature}\" as it was not found on the provided ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ];\n }\n super((reason && reason !== 'execution reverted') || signature\n ? [\n `The contract function \"${functionName}\" reverted with the following ${signature ? 'signature' : 'reason'}:`,\n reason || signature,\n ].join('\\n')\n : `The contract function \"${functionName}\" reverted.`, {\n cause,\n metaMessages,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ContractFunctionRevertedError'\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"reason\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"signature\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = decodedData;\n this.reason = reason;\n this.signature = signature;\n }\n}\nexport class ContractFunctionZeroDataError extends BaseError {\n constructor({ functionName }) {\n super(`The contract function \"${functionName}\" returned no data (\"0x\").`, {\n metaMessages: [\n 'This could be due to any of the following:',\n ` - The contract does not have the function \"${functionName}\",`,\n ' - The parameters passed to the contract function may be invalid, or',\n ' - The address is not a contract.',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ContractFunctionZeroDataError'\n });\n }\n}\nexport class RawContractError extends BaseError {\n constructor({ data, message, }) {\n super(message || '');\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 3\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'RawContractError'\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = data;\n }\n}\n//# sourceMappingURL=contract.js.map","import { panicReasons } from '../../constants/solidity.js';\nimport { BaseError } from '../../errors/base.js';\nimport { ContractFunctionRevertedError } from '../../errors/contract.js';\n/*\n * @description Checks if error is a valid null result UniversalResolver error\n */\nexport function isNullUniversalResolverError(err, callType) {\n if (!(err instanceof BaseError))\n return false;\n const cause = err.walk((e) => e instanceof ContractFunctionRevertedError);\n if (!(cause instanceof ContractFunctionRevertedError))\n return false;\n if (cause.data?.errorName === 'ResolverNotFound')\n return true;\n if (cause.data?.errorName === 'ResolverWildcardNotSupported')\n return true;\n if (cause.data?.errorName === 'ResolverNotContract')\n return true;\n if (cause.data?.errorName === 'ResolverError')\n return true;\n if (cause.data?.errorName === 'HttpError')\n return true;\n // Backwards compatibility for older UniversalResolver contracts\n if (cause.reason?.includes('Wildcard on non-extended resolvers is not supported'))\n return true;\n // No primary name set for address.\n if (callType === 'reverse' && cause.reason === panicReasons[50])\n return true;\n return false;\n}\n//# sourceMappingURL=errors.js.map","import { isHex } from '../data/isHex.js';\nexport function encodedLabelToLabelhash(label) {\n if (label.length !== 66)\n return null;\n if (label.indexOf('[') !== 0)\n return null;\n if (label.indexOf(']') !== 65)\n return null;\n const hash = `0x${label.slice(1, 65)}`;\n if (!isHex(hash))\n return null;\n return hash;\n}\n//# sourceMappingURL=encodedLabelToLabelhash.js.map","import { concat } from '../data/concat.js';\nimport { stringToBytes, toBytes, } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { encodedLabelToLabelhash, } from './encodedLabelToLabelhash.js';\n/**\n * @description Hashes ENS name\n *\n * - Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `namehash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * namehash('wevm.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @link https://eips.ethereum.org/EIPS/eip-137\n */\nexport function namehash(name) {\n let result = new Uint8Array(32).fill(0);\n if (!name)\n return bytesToHex(result);\n const labels = name.split('.');\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashFromEncodedLabel = encodedLabelToLabelhash(labels[i]);\n const hashed = hashFromEncodedLabel\n ? toBytes(hashFromEncodedLabel)\n : keccak256(stringToBytes(labels[i]), 'bytes');\n result = keccak256(concat([result, hashed]), 'bytes');\n }\n return bytesToHex(result);\n}\n//# sourceMappingURL=namehash.js.map","export function encodeLabelhash(hash) {\n return `[${hash.slice(2)}]`;\n}\n//# sourceMappingURL=encodeLabelhash.js.map","import { stringToBytes, } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { encodedLabelToLabelhash, } from './encodedLabelToLabelhash.js';\n/**\n * @description Hashes ENS label\n *\n * - Since ENS labels prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS labels](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `labelhash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label) {\n const result = new Uint8Array(32).fill(0);\n if (!label)\n return bytesToHex(result);\n return encodedLabelToLabelhash(label) || keccak256(stringToBytes(label));\n}\n//# sourceMappingURL=labelhash.js.map","import { stringToBytes, } from '../encoding/toBytes.js';\nimport { encodeLabelhash, } from './encodeLabelhash.js';\nimport { labelhash } from './labelhash.js';\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n */\nexport function packetToBytes(packet) {\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '');\n if (value.length === 0)\n return new Uint8Array(1);\n const bytes = new Uint8Array(stringToBytes(value).byteLength + 2);\n let offset = 0;\n const list = value.split('.');\n for (let i = 0; i < list.length; i++) {\n let encoded = stringToBytes(list[i]);\n // if the length is > 255, make the encoded label value a labelhash\n // this is compatible with the universal resolver\n if (encoded.byteLength > 255)\n encoded = stringToBytes(encodeLabelhash(labelhash(list[i])));\n bytes[offset] = encoded.length;\n bytes.set(encoded, offset + 1);\n offset += encoded.length + 1;\n }\n if (bytes.byteLength !== offset + 1)\n return bytes.slice(0, offset + 1);\n return bytes;\n}\n//# sourceMappingURL=packetToBytes.js.map","import { AbiDecodingZeroDataError } from '../../errors/abi.js';\nimport { BaseError } from '../../errors/base.js';\nimport { ContractFunctionExecutionError, ContractFunctionRevertedError, ContractFunctionZeroDataError, RawContractError, } from '../../errors/contract.js';\nimport { InternalRpcError } from '../../errors/rpc.js';\nconst EXECUTION_REVERTED_ERROR_CODE = 3;\nexport function getContractError(err, { abi, address, args, docsPath, functionName, sender, }) {\n const { code, data, message, shortMessage } = (err instanceof RawContractError\n ? err\n : err instanceof BaseError\n ? err.walk((err) => 'data' in err) || err.walk()\n : {});\n const cause = (() => {\n if (err instanceof AbiDecodingZeroDataError)\n return new ContractFunctionZeroDataError({ functionName });\n if ([EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&\n (data || message || shortMessage)) {\n return new ContractFunctionRevertedError({\n abi,\n data: typeof data === 'object' ? data.data : data,\n functionName,\n message: shortMessage ?? message,\n });\n }\n return err;\n })();\n return new ContractFunctionExecutionError(cause, {\n abi,\n args,\n contractAddress: address,\n docsPath,\n functionName,\n sender,\n });\n}\n//# sourceMappingURL=getContractError.js.map","export const aggregate3Signature = '0x82ad56cb';\n//# sourceMappingURL=contract.js.map","import { CallExecutionError, } from '../../errors/contract.js';\nimport { UnknownNodeError } from '../../errors/node.js';\nimport { getNodeError, } from './getNodeError.js';\nexport function getCallError(err, { docsPath, ...args }) {\n const cause = (() => {\n const cause = getNodeError(err, args);\n if (cause instanceof UnknownNodeError)\n return err;\n return cause;\n })();\n return new CallExecutionError(cause, {\n docsPath,\n ...args,\n });\n}\n//# sourceMappingURL=getCallError.js.map","const schedulerCache = /*#__PURE__*/ new Map();\nexport function createBatchScheduler({ fn, id, shouldSplitBatch, wait = 0, sort, }) {\n const exec = async () => {\n const scheduler = getScheduler();\n flush();\n const args = scheduler.map(({ args }) => args);\n if (args.length === 0)\n return;\n fn(args)\n .then((data) => {\n if (sort && Array.isArray(data))\n data.sort(sort);\n for (let i = 0; i < scheduler.length; i++) {\n const { pendingPromise } = scheduler[i];\n pendingPromise.resolve?.([data[i], data]);\n }\n })\n .catch((err) => {\n for (let i = 0; i < scheduler.length; i++) {\n const { pendingPromise } = scheduler[i];\n pendingPromise.reject?.(err);\n }\n });\n };\n const flush = () => schedulerCache.delete(id);\n const getBatchedArgs = () => getScheduler().map(({ args }) => args);\n const getScheduler = () => schedulerCache.get(id) || [];\n const setScheduler = (item) => schedulerCache.set(id, [...getScheduler(), item]);\n return {\n flush,\n async schedule(args) {\n const pendingPromise = {};\n const promise = new Promise((resolve, reject) => {\n pendingPromise.resolve = resolve;\n pendingPromise.reject = reject;\n });\n const split = shouldSplitBatch?.([...getBatchedArgs(), args]);\n if (split)\n exec();\n const hasActiveScheduler = getScheduler().length > 0;\n if (hasActiveScheduler) {\n setScheduler({ args, pendingPromise });\n return promise;\n }\n setScheduler({ args, pendingPromise });\n setTimeout(exec, wait);\n return promise;\n },\n };\n}\n//# sourceMappingURL=createBatchScheduler.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { multicall3Abi } from '../../constants/abis.js';\nimport { aggregate3Signature } from '../../constants/contract.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { BaseError } from '../../errors/base.js';\nimport { ChainDoesNotSupportContract, ClientChainNotConfiguredError, } from '../../errors/chain.js';\nimport { RawContractError, } from '../../errors/contract.js';\nimport { InvalidBytesLengthError, } from '../../errors/data.js';\nimport { AccountStateConflictError, StateAssignmentConflictError, } from '../../errors/stateOverride.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { isAddress } from '../../utils/address/isAddress.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { getCallError, } from '../../utils/errors/getCallError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { createBatchScheduler, } from '../../utils/promise/createBatchScheduler.js';\nimport { assertRequest } from '../../utils/transaction/assertRequest.js';\n/**\n * Executes a new message call immediately without submitting a transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/call\n * - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)\n *\n * @param client - Client to use\n * @param parameters - {@link CallParameters}\n * @returns The call data. {@link CallReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { call } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const data = await call(client, {\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * })\n */\nexport async function call(client, args) {\n const { account: account_ = client.account, batch = Boolean(client.batch?.multicall), blockNumber, blockTag = 'latest', accessList, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride, ...rest } = args;\n const account = account_ ? parseAccount(account_) : undefined;\n try {\n assertRequest(args);\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined;\n const block = blockNumberHex || blockTag;\n const rpcStateOverride = parseStateOverride(stateOverride);\n const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n const format = chainFormat || formatTransactionRequest;\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n from: account?.address,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n });\n if (batch && shouldPerformMulticall({ request }) && !rpcStateOverride) {\n try {\n return await scheduleMulticall(client, {\n ...request,\n blockNumber,\n blockTag,\n });\n }\n catch (err) {\n if (!(err instanceof ClientChainNotConfiguredError) &&\n !(err instanceof ChainDoesNotSupportContract))\n throw err;\n }\n }\n const response = await client.request({\n method: 'eth_call',\n params: rpcStateOverride\n ? [request, block, rpcStateOverride]\n : [request, block],\n });\n if (response === '0x')\n return { data: undefined };\n return { data: response };\n }\n catch (err) {\n const data = getRevertErrorData(err);\n const { offchainLookup, offchainLookupSignature } = await import('../../utils/ccip.js');\n if (data?.slice(0, 10) === offchainLookupSignature && to) {\n return { data: await offchainLookup(client, { data, to }) };\n }\n throw getCallError(err, {\n ...args,\n account,\n chain: client.chain,\n });\n }\n}\n// We only want to perform a scheduled multicall if:\n// - The request has calldata,\n// - The request has a target address,\n// - The target address is not already the aggregate3 signature,\n// - The request has no other properties (`nonce`, `gas`, etc cannot be sent with a multicall).\nfunction shouldPerformMulticall({ request }) {\n const { data, to, ...request_ } = request;\n if (!data)\n return false;\n if (data.startsWith(aggregate3Signature))\n return false;\n if (!to)\n return false;\n if (Object.values(request_).filter((x) => typeof x !== 'undefined').length > 0)\n return false;\n return true;\n}\nasync function scheduleMulticall(client, args) {\n const { batchSize = 1024, wait = 0 } = typeof client.batch?.multicall === 'object' ? client.batch.multicall : {};\n const { blockNumber, blockTag = 'latest', data, multicallAddress: multicallAddress_, to, } = args;\n let multicallAddress = multicallAddress_;\n if (!multicallAddress) {\n if (!client.chain)\n throw new ClientChainNotConfiguredError();\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n });\n }\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined;\n const block = blockNumberHex || blockTag;\n const { schedule } = createBatchScheduler({\n id: `${client.uid}.${block}`,\n wait,\n shouldSplitBatch(args) {\n const size = args.reduce((size, { data }) => size + (data.length - 2), 0);\n return size > batchSize * 2;\n },\n fn: async (requests) => {\n const calls = requests.map((request) => ({\n allowFailure: true,\n callData: request.data,\n target: request.to,\n }));\n const calldata = encodeFunctionData({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n });\n const data = await client.request({\n method: 'eth_call',\n params: [\n {\n data: calldata,\n to: multicallAddress,\n },\n block,\n ],\n });\n return decodeFunctionResult({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n data: data || '0x',\n });\n },\n });\n const [{ returnData, success }] = await schedule({ data, to });\n if (!success)\n throw new RawContractError({ data: returnData });\n if (returnData === '0x')\n return { data: undefined };\n return { data: returnData };\n}\nexport function getRevertErrorData(err) {\n if (!(err instanceof BaseError))\n return undefined;\n const error = err.walk();\n return typeof error.data === 'object' ? error.data.data : error.data;\n}\nexport function parseStateMapping(stateMapping) {\n if (!stateMapping || stateMapping.length === 0)\n return undefined;\n return stateMapping.reduce((acc, { slot, value }) => {\n if (slot.length !== 66)\n throw new InvalidBytesLengthError({\n size: slot.length,\n targetSize: 66,\n type: 'hex',\n });\n if (value.length !== 66)\n throw new InvalidBytesLengthError({\n size: value.length,\n targetSize: 66,\n type: 'hex',\n });\n acc[slot] = value;\n return acc;\n }, {});\n}\nexport function parseAccountStateOverride(args) {\n const { balance, nonce, state, stateDiff, code } = args;\n const rpcAccountStateOverride = {};\n if (code !== undefined) {\n rpcAccountStateOverride.code = code;\n }\n if (balance !== undefined) {\n rpcAccountStateOverride.balance = numberToHex(balance, { size: 32 });\n }\n if (nonce !== undefined) {\n rpcAccountStateOverride.nonce = numberToHex(nonce, { size: 8 });\n }\n if (state !== undefined) {\n rpcAccountStateOverride.state = parseStateMapping(state);\n }\n if (stateDiff !== undefined) {\n if (rpcAccountStateOverride.state)\n throw new StateAssignmentConflictError();\n rpcAccountStateOverride.stateDiff = parseStateMapping(stateDiff);\n }\n return rpcAccountStateOverride;\n}\nexport function parseStateOverride(args) {\n if (!args)\n return undefined;\n const rpcStateOverride = {};\n for (const { address, ...accountState } of args) {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address });\n if (rpcStateOverride[address])\n throw new AccountStateConflictError({ address: address });\n rpcStateOverride[address] = parseAccountStateOverride(accountState);\n }\n return rpcStateOverride;\n}\n//# sourceMappingURL=call.js.map","import { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { call } from './call.js';\n/**\n * Calls a read-only function on a contract, and returns the response.\n *\n * - Docs: https://viem.sh/docs/contract/readContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/reading-contracts\n *\n * A \"read-only\" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link ReadContractParameters}\n * @returns The response from the contract. Type is inferred. {@link ReadContractReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { readContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await readContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // 424122n\n */\nexport async function readContract(client, parameters) {\n const { abi, address, args, functionName, ...rest } = parameters;\n const calldata = encodeFunctionData({\n abi,\n args,\n functionName,\n });\n try {\n const { data } = await getAction(client, call, 'call')({\n ...rest,\n data: calldata,\n to: address,\n });\n return decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n });\n }\n catch (error) {\n throw getContractError(error, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/readContract',\n functionName,\n });\n }\n}\n//# sourceMappingURL=readContract.js.map","import { addressResolverAbi, universalResolverResolveAbi, } from '../../constants/abis.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { trim } from '../../utils/data/trim.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { namehash } from '../../utils/ens/namehash.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets address for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAddress\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAddressParameters}\n * @returns Address for ENS name or `null` if not found. {@link GetEnsAddressReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAddress, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAddress = await getEnsAddress(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(client, { blockNumber, blockTag, coinType, name, gatewayUrls, strict, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n try {\n const functionData = encodeFunctionData({\n abi: addressResolverAbi,\n functionName: 'addr',\n ...(coinType != null\n ? { args: [namehash(name), BigInt(coinType)] }\n : { args: [namehash(name)] }),\n });\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolve',\n args: [toHex(packetToBytes(name)), functionData],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const res = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters);\n if (res[0] === '0x')\n return null;\n const address = decodeFunctionResult({\n abi: addressResolverAbi,\n args: coinType != null ? [namehash(name), BigInt(coinType)] : undefined,\n functionName: 'addr',\n data: res[0],\n });\n if (address === '0x')\n return null;\n if (trim(address) === '0x00')\n return null;\n return address;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err, 'resolve'))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsAddress.js.map","import { BaseError } from './base.js';\nexport class EnsAvatarInvalidMetadataError extends BaseError {\n constructor({ data }) {\n super('Unable to extract image from metadata. The metadata may be malformed or invalid.', {\n metaMessages: [\n '- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.',\n '',\n `Provided data: ${JSON.stringify(data)}`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'EnsAvatarInvalidMetadataError'\n });\n }\n}\nexport class EnsAvatarInvalidNftUriError extends BaseError {\n constructor({ reason }) {\n super(`ENS NFT avatar URI is invalid. ${reason}`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'EnsAvatarInvalidNftUriError'\n });\n }\n}\nexport class EnsAvatarUriResolutionError extends BaseError {\n constructor({ uri }) {\n super(`Unable to resolve ENS avatar URI \"${uri}\". The URI may be malformed, invalid, or does not respond with a valid image.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'EnsAvatarUriResolutionError'\n });\n }\n}\nexport class EnsAvatarUnsupportedNamespaceError extends BaseError {\n constructor({ namespace }) {\n super(`ENS NFT avatar namespace \"${namespace}\" is not supported. Must be \"erc721\" or \"erc1155\".`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'EnsAvatarUnsupportedNamespaceError'\n });\n }\n}\n//# sourceMappingURL=ens.js.map","import { readContract, } from '../../../actions/public/readContract.js';\nimport { EnsAvatarInvalidMetadataError, EnsAvatarInvalidNftUriError, EnsAvatarUnsupportedNamespaceError, EnsAvatarUriResolutionError, } from '../../../errors/ens.js';\nconst networkRegex = /(?https?:\\/\\/[^\\/]*|ipfs:\\/|ipns:\\/|ar:\\/)?(?\\/)?(?ipfs\\/|ipns\\/)?(?[\\w\\-.]+)(?\\/.*)?/;\nconst ipfsHashRegex = /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\\/(?[\\w\\-.]+))?(?\\/.*)?$/;\nconst base64Regex = /^data:([a-zA-Z\\-/+]*);base64,([^\"].*)/;\nconst dataURIRegex = /^data:([a-zA-Z\\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;\nexport async function isImageUri(uri) {\n try {\n const res = await fetch(uri, { method: 'HEAD' });\n // retrieve content type header to check if content is image\n if (res.status === 200) {\n const contentType = res.headers.get('content-type');\n return contentType?.startsWith('image/');\n }\n return false;\n }\n catch (error) {\n // if error is not cors related then fail\n if (typeof error === 'object' && typeof error.response !== 'undefined') {\n return false;\n }\n // fail in NodeJS, since the error is not cors but any other network issue\n // biome-ignore lint/suspicious/noPrototypeBuiltins:\n if (!globalThis.hasOwnProperty('Image'))\n return false;\n // in case of cors, use image api to validate if given url is an actual image\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => {\n resolve(true);\n };\n img.onerror = () => {\n resolve(false);\n };\n img.src = uri;\n });\n }\n}\nexport function getGateway(custom, defaultGateway) {\n if (!custom)\n return defaultGateway;\n if (custom.endsWith('/'))\n return custom.slice(0, -1);\n return custom;\n}\nexport function resolveAvatarUri({ uri, gatewayUrls, }) {\n const isEncoded = base64Regex.test(uri);\n if (isEncoded)\n return { uri, isOnChain: true, isEncoded };\n const ipfsGateway = getGateway(gatewayUrls?.ipfs, 'https://ipfs.io');\n const arweaveGateway = getGateway(gatewayUrls?.arweave, 'https://arweave.net');\n const networkRegexMatch = uri.match(networkRegex);\n const { protocol, subpath, target, subtarget = '', } = networkRegexMatch?.groups || {};\n const isIPNS = protocol === 'ipns:/' || subpath === 'ipns/';\n const isIPFS = protocol === 'ipfs:/' || subpath === 'ipfs/' || ipfsHashRegex.test(uri);\n if (uri.startsWith('http') && !isIPNS && !isIPFS) {\n let replacedUri = uri;\n if (gatewayUrls?.arweave)\n replacedUri = uri.replace(/https:\\/\\/arweave.net/g, gatewayUrls?.arweave);\n return { uri: replacedUri, isOnChain: false, isEncoded: false };\n }\n if ((isIPNS || isIPFS) && target) {\n return {\n uri: `${ipfsGateway}/${isIPNS ? 'ipns' : 'ipfs'}/${target}${subtarget}`,\n isOnChain: false,\n isEncoded: false,\n };\n }\n if (protocol === 'ar:/' && target) {\n return {\n uri: `${arweaveGateway}/${target}${subtarget || ''}`,\n isOnChain: false,\n isEncoded: false,\n };\n }\n let parsedUri = uri.replace(dataURIRegex, '');\n if (parsedUri.startsWith(' res.json());\n const image = await parseAvatarUri({\n gatewayUrls,\n uri: getJsonImage(res),\n });\n return image;\n }\n catch {\n throw new EnsAvatarUriResolutionError({ uri });\n }\n}\nexport async function parseAvatarUri({ gatewayUrls, uri, }) {\n const { uri: resolvedURI, isOnChain } = resolveAvatarUri({ uri, gatewayUrls });\n if (isOnChain)\n return resolvedURI;\n // check if resolvedURI is an image, if it is return the url\n const isImage = await isImageUri(resolvedURI);\n if (isImage)\n return resolvedURI;\n throw new EnsAvatarUriResolutionError({ uri });\n}\nexport function parseNftUri(uri_) {\n let uri = uri_;\n // parse valid nft spec (CAIP-22/CAIP-29)\n // @see: https://github.com/ChainAgnostic/CAIPs/tree/master/CAIPs\n if (uri.startsWith('did:nft:')) {\n // convert DID to CAIP\n uri = uri.replace('did:nft:', '').replace(/_/g, '/');\n }\n const [reference, asset_namespace, tokenID] = uri.split('/');\n const [eip_namespace, chainID] = reference.split(':');\n const [erc_namespace, contractAddress] = asset_namespace.split(':');\n if (!eip_namespace || eip_namespace.toLowerCase() !== 'eip155')\n throw new EnsAvatarInvalidNftUriError({ reason: 'Only EIP-155 supported' });\n if (!chainID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Chain ID not found' });\n if (!contractAddress)\n throw new EnsAvatarInvalidNftUriError({\n reason: 'Contract address not found',\n });\n if (!tokenID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Token ID not found' });\n if (!erc_namespace)\n throw new EnsAvatarInvalidNftUriError({ reason: 'ERC namespace not found' });\n return {\n chainID: parseInt(chainID),\n namespace: erc_namespace.toLowerCase(),\n contractAddress: contractAddress,\n tokenID,\n };\n}\nexport async function getNftTokenUri(client, { nft }) {\n if (nft.namespace === 'erc721') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'tokenURI',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'tokenId', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'tokenURI',\n args: [BigInt(nft.tokenID)],\n });\n }\n if (nft.namespace === 'erc1155') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'uri',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: '_id', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'uri',\n args: [BigInt(nft.tokenID)],\n });\n }\n throw new EnsAvatarUnsupportedNamespaceError({ namespace: nft.namespace });\n}\n//# sourceMappingURL=utils.js.map","import { getJsonImage, getMetadataAvatarUri, getNftTokenUri, parseAvatarUri, parseNftUri, resolveAvatarUri, } from './utils.js';\nexport async function parseAvatarRecord(client, { gatewayUrls, record, }) {\n if (/eip155:/i.test(record))\n return parseNftAvatarUri(client, { gatewayUrls, record });\n return parseAvatarUri({ uri: record, gatewayUrls });\n}\nasync function parseNftAvatarUri(client, { gatewayUrls, record, }) {\n // parse NFT URI into properties\n const nft = parseNftUri(record);\n // fetch tokenURI from the NFT contract\n const nftUri = await getNftTokenUri(client, { nft });\n // resolve the URI from the fetched tokenURI\n const { uri: resolvedNftUri, isOnChain, isEncoded, } = resolveAvatarUri({ uri: nftUri, gatewayUrls });\n // if the resolved URI is on chain, return the data\n if (isOnChain &&\n (resolvedNftUri.includes('data:application/json;base64,') ||\n resolvedNftUri.startsWith('{'))) {\n const encodedJson = isEncoded\n ? // if it is encoded, decode it\n atob(resolvedNftUri.replace('data:application/json;base64,', ''))\n : // if it isn't encoded assume it is a JSON string, but it could be anything (it will error if it is)\n resolvedNftUri;\n const decoded = JSON.parse(encodedJson);\n return parseAvatarUri({ uri: getJsonImage(decoded), gatewayUrls });\n }\n let uriTokenId = nft.tokenID;\n if (nft.namespace === 'erc1155')\n uriTokenId = uriTokenId.replace('0x', '').padStart(64, '0');\n return getMetadataAvatarUri({\n gatewayUrls,\n uri: resolvedNftUri.replace(/(?:0x)?{id}/, uriTokenId),\n });\n}\n//# sourceMappingURL=parseAvatarRecord.js.map","import { textResolverAbi, universalResolverResolveAbi, } from '../../constants/abis.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { namehash } from '../../utils/ens/namehash.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets a text record for specified ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsTextParameters}\n * @returns Address for ENS resolver. {@link GetEnsTextReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsText, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const twitterRecord = await getEnsText(client, {\n * name: normalize('wevm.eth'),\n * key: 'com.twitter',\n * })\n * // 'wagmi_sh'\n */\nexport async function getEnsText(client, { blockNumber, blockTag, name, key, gatewayUrls, strict, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolve',\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: textResolverAbi,\n functionName: 'text',\n args: [namehash(name), key],\n }),\n ],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const res = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters);\n if (res[0] === '0x')\n return null;\n const record = decodeFunctionResult({\n abi: textResolverAbi,\n functionName: 'text',\n data: res[0],\n });\n return record === '' ? null : record;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err, 'resolve'))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsText.js.map","import { parseAvatarRecord, } from '../../utils/ens/avatar/parseAvatarRecord.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getEnsText, } from './getEnsText.js';\n/**\n * Gets the avatar of an ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAvatarParameters}\n * @returns Avatar URI or `null` if not found. {@link GetEnsAvatarReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAvatar, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAvatar = await getEnsAvatar(client, {\n * name: normalize('wevm.eth'),\n * })\n * // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio'\n */\nexport async function getEnsAvatar(client, { blockNumber, blockTag, assetGatewayUrls, name, gatewayUrls, strict, universalResolverAddress, }) {\n const record = await getAction(client, getEnsText, 'getEnsText')({\n blockNumber,\n blockTag,\n key: 'avatar',\n name,\n universalResolverAddress,\n gatewayUrls,\n strict,\n });\n if (!record)\n return null;\n try {\n return await parseAvatarRecord(client, {\n record,\n gatewayUrls: assetGatewayUrls,\n });\n }\n catch {\n return null;\n }\n}\n//# sourceMappingURL=getEnsAvatar.js.map","import { universalResolverReverseAbi } from '../../constants/abis.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets primary name for specified address.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsName\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `reverse(bytes)` on ENS Universal Resolver Contract to \"reverse resolve\" the address to the primary ENS name.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsNameParameters}\n * @returns Name or `null` if not found. {@link GetEnsNameReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsName } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensName = await getEnsName(client, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wevm.eth'\n */\nexport async function getEnsName(client, { address, blockNumber, blockTag, gatewayUrls, strict, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverReverseAbi,\n functionName: 'reverse',\n args: [toHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const [name, resolvedAddress] = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters);\n if (address.toLowerCase() !== resolvedAddress.toLowerCase())\n return null;\n return name;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err, 'reverse'))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsName.js.map","import { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets resolver for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsResolverParameters}\n * @returns Address for ENS resolver. {@link GetEnsResolverReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsResolver, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const resolverAddress = await getEnsResolver(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41'\n */\nexport async function getEnsResolver(client, { blockNumber, blockTag, name, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n const [resolverAddress] = await getAction(client, readContract, 'readContract')({\n address: universalResolverAddress,\n abi: [\n {\n inputs: [{ type: 'bytes' }],\n name: 'findResolver',\n outputs: [{ type: 'address' }, { type: 'bytes32' }],\n stateMutability: 'view',\n type: 'function',\n },\n ],\n functionName: 'findResolver',\n args: [toHex(packetToBytes(name))],\n blockNumber,\n blockTag,\n });\n return resolverAddress;\n}\n//# sourceMappingURL=getEnsResolver.js.map","/**\n * Scopes `request` to the filter ID. If the client is a fallback, it will\n * listen for responses and scope the child transport `request` function\n * to the successful filter ID.\n */\nexport function createFilterRequestScope(client, { method }) {\n const requestMap = {};\n if (client.transport.type === 'fallback')\n client.transport.onResponse?.(({ method: method_, response: id, status, transport, }) => {\n if (status === 'success' && method === method_)\n requestMap[id] = transport.request;\n });\n return ((id) => requestMap[id] || client.request);\n}\n//# sourceMappingURL=createFilterRequestScope.js.map","import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createBlockFilter\n * - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter)\n *\n * @param client - Client to use\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createBlockFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createBlockFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'block' }\n */\nexport async function createBlockFilter(client) {\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newBlockFilter',\n });\n const id = await client.request({\n method: 'eth_newBlockFilter',\n });\n return { id, request: getRequest(id), type: 'block' };\n}\n//# sourceMappingURL=createBlockFilter.js.map","import { BaseError } from './base.js';\nexport class FilterTypeNotSupportedError extends BaseError {\n constructor(type) {\n super(`Filter type \"${type}\" is not supported.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'FilterTypeNotSupportedError'\n });\n }\n}\n//# sourceMappingURL=log.js.map","import { AbiEventNotFoundError, } from '../../errors/abi.js';\nimport { FilterTypeNotSupportedError, } from '../../errors/log.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { toEventSelector, } from '../hash/toEventSelector.js';\nimport { encodeAbiParameters, } from './encodeAbiParameters.js';\nimport { formatAbiItem } from './formatAbiItem.js';\nimport { getAbiItem } from './getAbiItem.js';\nconst docsPath = '/docs/contract/encodeEventTopics';\nexport function encodeEventTopics(parameters) {\n const { abi, eventName, args } = parameters;\n let abiItem = abi[0];\n if (eventName) {\n const item = getAbiItem({ abi, name: eventName });\n if (!item)\n throw new AbiEventNotFoundError(eventName, { docsPath });\n abiItem = item;\n }\n if (abiItem.type !== 'event')\n throw new AbiEventNotFoundError(undefined, { docsPath });\n const definition = formatAbiItem(abiItem);\n const signature = toEventSelector(definition);\n let topics = [];\n if (args && 'inputs' in abiItem) {\n const indexedInputs = abiItem.inputs?.filter((param) => 'indexed' in param && param.indexed);\n const args_ = Array.isArray(args)\n ? args\n : Object.values(args).length > 0\n ? indexedInputs?.map((x) => args[x.name]) ?? []\n : [];\n if (args_.length > 0) {\n topics =\n indexedInputs?.map((param, i) => Array.isArray(args_[i])\n ? args_[i].map((_, j) => encodeArg({ param, value: args_[i][j] }))\n : args_[i]\n ? encodeArg({ param, value: args_[i] })\n : null) ?? [];\n }\n }\n return [signature, ...topics];\n}\nfunction encodeArg({ param, value, }) {\n if (param.type === 'string' || param.type === 'bytes')\n return keccak256(toBytes(value));\n if (param.type === 'tuple' || param.type.match(/^(.*)\\[(\\d+)?\\]$/))\n throw new FilterTypeNotSupportedError(param.type);\n return encodeAbiParameters([param], [value]);\n}\n//# sourceMappingURL=encodeEventTopics.js.map","import { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs).\n *\n * - Docs: https://viem.sh/docs/contract/createContractEventFilter\n *\n * @param client - Client to use\n * @param parameters - {@link CreateContractEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateContractEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createContractEventFilter } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createContractEventFilter(client, {\n * abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),\n * })\n */\nexport async function createContractEventFilter(client, parameters) {\n const { address, abi, args, eventName, fromBlock, strict, toBlock } = parameters;\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newFilter',\n });\n const topics = eventName\n ? encodeEventTopics({\n abi,\n args,\n eventName,\n })\n : undefined;\n const id = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock: typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n topics,\n },\n ],\n });\n return {\n abi,\n args,\n eventName,\n id,\n request: getRequest(id),\n strict: Boolean(strict),\n type: 'event',\n };\n}\n//# sourceMappingURL=createContractEventFilter.js.map","import { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createEventFilter\n * - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter)\n *\n * @param client - Client to use\n * @param parameters - {@link CreateEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',\n * })\n */\nexport async function createEventFilter(client, { address, args, event, events: events_, fromBlock, strict, toBlock, } = {}) {\n const events = events_ ?? (event ? [event] : undefined);\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newFilter',\n });\n let topics = [];\n if (events) {\n topics = [\n events.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args,\n })),\n ];\n if (event)\n topics = topics[0];\n }\n const id = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock: typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n ...(topics.length ? { topics } : {}),\n },\n ],\n });\n return {\n abi: events,\n args,\n eventName: event ? event.name : undefined,\n fromBlock,\n id,\n request: getRequest(id),\n strict: Boolean(strict),\n toBlock,\n type: 'event',\n };\n}\n//# sourceMappingURL=createEventFilter.js.map","import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createPendingTransactionFilter\n * - JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter)\n *\n * @param client - Client to use\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createPendingTransactionFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'transaction' }\n */\nexport async function createPendingTransactionFilter(client) {\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newPendingTransactionFilter',\n });\n const id = await client.request({\n method: 'eth_newPendingTransactionFilter',\n });\n return { id, request: getRequest(id), type: 'transaction' };\n}\n//# sourceMappingURL=createPendingTransactionFilter.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { estimateGas, } from './estimateGas.js';\n/**\n * Estimates the gas required to successfully execute a contract write function call.\n *\n * - Docs: https://viem.sh/docs/contract/estimateContractGas\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateContractGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateContractGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateContractGas } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gas = await estimateContractGas(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint() public']),\n * functionName: 'mint',\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * })\n */\nexport async function estimateContractGas(client, parameters) {\n const { abi, address, args, functionName, ...request } = parameters;\n const data = encodeFunctionData({\n abi,\n args,\n functionName,\n });\n try {\n const gas = await getAction(client, estimateGas, 'estimateGas')({\n data,\n to: address,\n ...request,\n });\n return gas;\n }\n catch (error) {\n const account = request.account ? parseAccount(request.account) : undefined;\n throw getContractError(error, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/estimateContractGas',\n functionName,\n sender: account?.address,\n });\n }\n}\n//# sourceMappingURL=estimateContractGas.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the balance of an address in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBalance\n * - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance)\n *\n * You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther).\n *\n * ```ts\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * blockTag: 'safe'\n * })\n * const balanceAsEther = formatEther(balance)\n * // \"6.942\"\n * ```\n *\n * @param client - Client to use\n * @param parameters - {@link GetBalanceParameters}\n * @returns The balance of the address in wei. {@link GetBalanceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBalance } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n * // 10000000000000000000000n (wei)\n */\nexport async function getBalance(client, { address, blockNumber, blockTag = 'latest' }) {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined;\n const balance = await client.request({\n method: 'eth_getBalance',\n params: [address, blockNumberHex || blockTag],\n });\n return BigInt(balance);\n}\n//# sourceMappingURL=getBalance.js.map","export const promiseCache = /*#__PURE__*/ new Map();\nexport const responseCache = /*#__PURE__*/ new Map();\nexport function getCache(cacheKey) {\n const buildCache = (cacheKey, cache) => ({\n clear: () => cache.delete(cacheKey),\n get: () => cache.get(cacheKey),\n set: (data) => cache.set(cacheKey, data),\n });\n const promise = buildCache(cacheKey, promiseCache);\n const response = buildCache(cacheKey, responseCache);\n return {\n clear: () => {\n promise.clear();\n response.clear();\n },\n promise,\n response,\n };\n}\n/**\n * @description Returns the result of a given promise, and caches the result for\n * subsequent invocations against a provided cache key.\n */\nexport async function withCache(fn, { cacheKey, cacheTime = Infinity }) {\n const cache = getCache(cacheKey);\n // If a response exists in the cache, and it's not expired, return it\n // and do not invoke the promise.\n // If the max age is 0, the cache is disabled.\n const response = cache.response.get();\n if (response && cacheTime > 0) {\n const age = new Date().getTime() - response.created.getTime();\n if (age < cacheTime)\n return response.data;\n }\n let promise = cache.promise.get();\n if (!promise) {\n promise = fn();\n // Store the promise in the cache so that subsequent invocations\n // will wait for the same promise to resolve (deduping).\n cache.promise.set(promise);\n }\n try {\n const data = await promise;\n // Store the response in the cache so that subsequent invocations\n // will return the same response.\n cache.response.set({ created: new Date(), data });\n return data;\n }\n finally {\n // Clear the promise cache so that subsequent invocations will\n // invoke the promise again.\n cache.promise.clear();\n }\n}\n//# sourceMappingURL=withCache.js.map","import { getCache, withCache } from '../../utils/promise/withCache.js';\nconst cacheKey = (id) => `blockNumber.${id}`;\nexport function getBlockNumberCache(id) {\n return getCache(cacheKey(id));\n}\n/**\n * Returns the number of the most recent block seen.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockNumber\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks\n * - JSON-RPC Methods: [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber)\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockNumberParameters}\n * @returns The number of the block. {@link GetBlockNumberReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlockNumber } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const blockNumber = await getBlockNumber(client)\n * // 69420n\n */\nexport async function getBlockNumber(client, { cacheTime = client.cacheTime } = {}) {\n const blockNumberHex = await withCache(() => client.request({\n method: 'eth_blockNumber',\n }), { cacheKey: cacheKey(client.uid), cacheTime });\n return BigInt(blockNumberHex);\n}\n//# sourceMappingURL=getBlockNumber.js.map","import { hexToNumber, } from '../../utils/encoding/fromHex.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the number of Transactions at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`.\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockTransactionCountParameters}\n * @returns The block transaction count. {@link GetBlockTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlockTransactionCount } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const count = await getBlockTransactionCount(client)\n */\nexport async function getBlockTransactionCount(client, { blockHash, blockNumber, blockTag = 'latest', } = {}) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n let count;\n if (blockHash) {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByHash',\n params: [blockHash],\n });\n }\n else {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByNumber',\n params: [blockNumberHex || blockTag],\n });\n }\n return hexToNumber(count);\n}\n//# sourceMappingURL=getBlockTransactionCount.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Retrieves the bytecode at an address.\n *\n * - Docs: https://viem.sh/docs/contract/getBytecode\n * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)\n *\n * @param client - Client to use\n * @param parameters - {@link GetBytecodeParameters}\n * @returns The contract's bytecode. {@link GetBytecodeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBytecode } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getBytecode(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * })\n */\nexport async function getBytecode(client, { address, blockNumber, blockTag = 'latest' }) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const hex = await client.request({\n method: 'eth_getCode',\n params: [address, blockNumberHex || blockTag],\n });\n if (hex === '0x')\n return undefined;\n return hex;\n}\n//# sourceMappingURL=getBytecode.js.map","import { AbiDecodingDataSizeTooSmallError, AbiEventSignatureEmptyTopicsError, AbiEventSignatureNotFoundError, DecodeLogDataMismatch, DecodeLogTopicsMismatch, } from '../../errors/abi.js';\nimport { size } from '../data/size.js';\nimport { toEventSelector, } from '../hash/toEventSelector.js';\nimport { PositionOutOfBoundsError } from '../../errors/cursor.js';\nimport { decodeAbiParameters, } from './decodeAbiParameters.js';\nimport { formatAbiItem } from './formatAbiItem.js';\nconst docsPath = '/docs/contract/decodeEventLog';\nexport function decodeEventLog(parameters) {\n const { abi, data, strict: strict_, topics, } = parameters;\n const strict = strict_ ?? true;\n const [signature, ...argTopics] = topics;\n if (!signature)\n throw new AbiEventSignatureEmptyTopicsError({ docsPath });\n const abiItem = abi.find((x) => x.type === 'event' &&\n signature === toEventSelector(formatAbiItem(x)));\n if (!(abiItem && 'name' in abiItem) || abiItem.type !== 'event')\n throw new AbiEventSignatureNotFoundError(signature, { docsPath });\n const { name, inputs } = abiItem;\n const isUnnamed = inputs?.some((x) => !('name' in x && x.name));\n let args = isUnnamed ? [] : {};\n // Decode topics (indexed args).\n const indexedInputs = inputs.filter((x) => 'indexed' in x && x.indexed);\n for (let i = 0; i < indexedInputs.length; i++) {\n const param = indexedInputs[i];\n const topic = argTopics[i];\n if (!topic)\n throw new DecodeLogTopicsMismatch({\n abiItem,\n param: param,\n });\n args[param.name || i] = decodeTopic({ param, value: topic });\n }\n // Decode data (non-indexed args).\n const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed));\n if (nonIndexedInputs.length > 0) {\n if (data && data !== '0x') {\n try {\n const decodedData = decodeAbiParameters(nonIndexedInputs, data);\n if (decodedData) {\n if (isUnnamed)\n args = [...args, ...decodedData];\n else {\n for (let i = 0; i < nonIndexedInputs.length; i++) {\n args[nonIndexedInputs[i].name] = decodedData[i];\n }\n }\n }\n }\n catch (err) {\n if (strict) {\n if (err instanceof AbiDecodingDataSizeTooSmallError ||\n err instanceof PositionOutOfBoundsError)\n throw new DecodeLogDataMismatch({\n abiItem,\n data: data,\n params: nonIndexedInputs,\n size: size(data),\n });\n throw err;\n }\n }\n }\n else if (strict) {\n throw new DecodeLogDataMismatch({\n abiItem,\n data: '0x',\n params: nonIndexedInputs,\n size: 0,\n });\n }\n }\n return {\n eventName: name,\n args: Object.values(args).length > 0 ? args : undefined,\n };\n}\nfunction decodeTopic({ param, value }) {\n if (param.type === 'string' ||\n param.type === 'bytes' ||\n param.type === 'tuple' ||\n param.type.match(/^(.*)\\[(\\d+)?\\]$/))\n return value;\n const decodedArg = decodeAbiParameters([param], value) || [];\n return decodedArg[0];\n}\n//# sourceMappingURL=decodeEventLog.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { call } from './call.js';\n/**\n * Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.\n *\n * - Docs: https://viem.sh/docs/contract/simulateContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts\n *\n * This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link SimulateContractParameters}\n * @returns The simulation result and write request. {@link SimulateContractReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await simulateContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32) view returns (uint32)']),\n * functionName: 'mint',\n * args: ['69420'],\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function simulateContract(client, parameters) {\n const { abi, address, args, dataSuffix, functionName, ...callRequest } = parameters;\n const account = callRequest.account\n ? parseAccount(callRequest.account)\n : client.account;\n const calldata = encodeFunctionData({ abi, args, functionName });\n try {\n const { data } = await getAction(client, call, 'call')({\n batch: false,\n data: `${calldata}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n to: address,\n ...callRequest,\n account,\n });\n const result = decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n });\n const minimizedAbi = abi.filter((abiItem) => 'name' in abiItem && abiItem.name === parameters.functionName);\n return {\n result,\n request: {\n abi: minimizedAbi,\n address,\n args,\n dataSuffix,\n functionName,\n ...callRequest,\n account,\n },\n };\n }\n catch (error) {\n throw getContractError(error, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/simulateContract',\n functionName,\n sender: account?.address,\n });\n }\n}\n//# sourceMappingURL=simulateContract.js.map","export function formatLog(log, { args, eventName } = {}) {\n return {\n ...log,\n blockHash: log.blockHash ? log.blockHash : null,\n blockNumber: log.blockNumber ? BigInt(log.blockNumber) : null,\n logIndex: log.logIndex ? Number(log.logIndex) : null,\n transactionHash: log.transactionHash ? log.transactionHash : null,\n transactionIndex: log.transactionIndex\n ? Number(log.transactionIndex)\n : null,\n ...(eventName ? { args, eventName } : {}),\n };\n}\n//# sourceMappingURL=log.js.map","export const listenersCache = /*#__PURE__*/ new Map();\nexport const cleanupCache = /*#__PURE__*/ new Map();\nlet callbackCount = 0;\n/**\n * @description Sets up an observer for a given function. If another function\n * is set up under the same observer id, the function will only be called once\n * for both instances of the observer.\n */\nexport function observe(observerId, callbacks, fn) {\n const callbackId = ++callbackCount;\n const getListeners = () => listenersCache.get(observerId) || [];\n const unsubscribe = () => {\n const listeners = getListeners();\n listenersCache.set(observerId, listeners.filter((cb) => cb.id !== callbackId));\n };\n const unwatch = () => {\n const cleanup = cleanupCache.get(observerId);\n if (getListeners().length === 1 && cleanup)\n cleanup();\n unsubscribe();\n };\n const listeners = getListeners();\n listenersCache.set(observerId, [\n ...listeners,\n { id: callbackId, fns: callbacks },\n ]);\n if (listeners && listeners.length > 0)\n return unwatch;\n const emit = {};\n for (const key in callbacks) {\n emit[key] = ((...args) => {\n const listeners = getListeners();\n if (listeners.length === 0)\n return;\n for (const listener of listeners)\n listener.fns[key]?.(...args);\n });\n }\n const cleanup = fn(emit);\n if (typeof cleanup === 'function')\n cleanupCache.set(observerId, cleanup);\n return unwatch;\n}\n//# sourceMappingURL=observe.js.map","export async function wait(time) {\n return new Promise((res) => setTimeout(res, time));\n}\n//# sourceMappingURL=wait.js.map","import { wait } from './wait.js';\n/**\n * @description Polls a function at a specified interval.\n */\nexport function poll(fn, { emitOnBegin, initialWaitTime, interval }) {\n let active = true;\n const unwatch = () => (active = false);\n const watch = async () => {\n let data = undefined;\n if (emitOnBegin)\n data = await fn({ unpoll: unwatch });\n const initialWait = (await initialWaitTime?.(data)) ?? interval;\n await wait(initialWait);\n const poll = async () => {\n if (!active)\n return;\n await fn({ unpoll: unwatch });\n await wait(interval);\n poll();\n };\n poll();\n };\n watch();\n return unwatch;\n}\n//# sourceMappingURL=poll.js.map","import {} from '../../utils/abi/decodeEventLog.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { formatLog, } from '../../utils/formatters/log.js';\n/**\n * Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterChanges\n * - JSON-RPC Methods: [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges)\n *\n * A Filter can be created from the following actions:\n *\n * - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)\n * - [`createContractEventFilter`](https://viem.sh/docs/contract/createContractEventFilter)\n * - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)\n * - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)\n *\n * Depending on the type of filter, the return value will be different:\n *\n * - If the filter was created with `createContractEventFilter` or `createEventFilter`, it returns a list of logs.\n * - If the filter was created with `createPendingTransactionFilter`, it returns a list of transaction hashes.\n * - If the filter was created with `createBlockFilter`, it returns a list of block hashes.\n *\n * @param client - Client to use\n * @param parameters - {@link GetFilterChangesParameters}\n * @returns Logs or hashes. {@link GetFilterChangesReturnType}\n *\n * @example\n * // Blocks\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createBlockFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createBlockFilter(client)\n * const hashes = await getFilterChanges(client, { filter })\n *\n * @example\n * // Contract Events\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createContractEventFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createContractEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),\n * eventName: 'Transfer',\n * })\n * const logs = await getFilterChanges(client, { filter })\n *\n * @example\n * // Raw Events\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await getFilterChanges(client, { filter })\n *\n * @example\n * // Transactions\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createPendingTransactionFilter(client)\n * const hashes = await getFilterChanges(client, { filter })\n */\nexport async function getFilterChanges(_client, { filter, }) {\n const strict = 'strict' in filter && filter.strict;\n const logs = await filter.request({\n method: 'eth_getFilterChanges',\n params: [filter.id],\n });\n if (typeof logs[0] === 'string')\n return logs;\n const formattedLogs = logs.map((log) => formatLog(log));\n if (!('abi' in filter) || !filter.abi)\n return formattedLogs;\n return parseEventLogs({\n abi: filter.abi,\n logs: formattedLogs,\n strict,\n });\n}\n//# sourceMappingURL=getFilterChanges.js.map","/**\n * Destroys a [`Filter`](https://viem.sh/docs/glossary/types#filter).\n *\n * - Docs: https://viem.sh/docs/actions/public/uninstallFilter\n * - JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter)\n *\n * Destroys a Filter that was created from one of the following Actions:\n * - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)\n * - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)\n * - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)\n *\n * @param client - Client to use\n * @param parameters - {@link UninstallFilterParameters}\n * @returns A boolean indicating if the Filter was successfully uninstalled. {@link UninstallFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter, uninstallFilter } from 'viem/public'\n *\n * const filter = await createPendingTransactionFilter(client)\n * const uninstalled = await uninstallFilter(client, { filter })\n * // true\n */\nexport async function uninstallFilter(_client, { filter }) {\n return filter.request({\n method: 'eth_uninstallFilter',\n params: [filter.id],\n });\n}\n//# sourceMappingURL=uninstallFilter.js.map","import { DecodeLogDataMismatch, DecodeLogTopicsMismatch, } from '../../errors/abi.js';\nimport { InvalidInputRpcError } from '../../errors/rpc.js';\nimport { decodeEventLog } from '../../utils/abi/decodeEventLog.js';\nimport { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { formatLog } from '../../utils/formatters/log.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { createContractEventFilter } from './createContractEventFilter.js';\nimport { getBlockNumber } from './getBlockNumber.js';\nimport { getContractEvents, } from './getContractEvents.js';\nimport { getFilterChanges } from './getFilterChanges.js';\nimport { uninstallFilter } from './uninstallFilter.js';\n/**\n * Watches and returns emitted contract event logs.\n *\n * - Docs: https://viem.sh/docs/contract/watchContractEvent\n *\n * This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs).\n *\n * `watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchContractEventParameters}\n * @returns A function that can be invoked to stop watching for new event logs. {@link WatchContractEventReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchContractEvent } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchContractEvent(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']),\n * eventName: 'Transfer',\n * args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' },\n * onLogs: (logs) => console.log(logs),\n * })\n */\nexport function watchContractEvent(client, parameters) {\n const { abi, address, args, batch = true, eventName, onError, onLogs, poll: poll_, pollingInterval = client.pollingInterval, strict: strict_, } = parameters;\n const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';\n const pollContractEvent = () => {\n const observerId = stringify([\n 'watchContractEvent',\n address,\n args,\n batch,\n client.uid,\n eventName,\n pollingInterval,\n ]);\n const strict = strict_ ?? false;\n return observe(observerId, { onLogs, onError }, (emit) => {\n let previousBlockNumber;\n let filter;\n let initialized = false;\n const unwatch = poll(async () => {\n if (!initialized) {\n try {\n filter = (await getAction(client, createContractEventFilter, 'createContractEventFilter')({\n abi,\n address,\n args: args,\n eventName: eventName,\n strict: strict,\n }));\n }\n catch { }\n initialized = true;\n return;\n }\n try {\n let logs;\n if (filter) {\n logs = await getAction(client, getFilterChanges, 'getFilterChanges')({ filter });\n }\n else {\n // If the filter doesn't exist, we will fall back to use `getLogs`.\n // The fall back exists because some RPC Providers do not support filters.\n // Fetch the block number to use for `getLogs`.\n const blockNumber = await getAction(client, getBlockNumber, 'getBlockNumber')({});\n // If the block number has changed, we will need to fetch the logs.\n // If the block number doesn't exist, we are yet to reach the first poll interval,\n // so do not emit any logs.\n if (previousBlockNumber && previousBlockNumber !== blockNumber) {\n logs = await getAction(client, getContractEvents, 'getContractEvents')({\n abi,\n address,\n args,\n eventName,\n fromBlock: previousBlockNumber + 1n,\n toBlock: blockNumber,\n strict,\n });\n }\n else {\n logs = [];\n }\n previousBlockNumber = blockNumber;\n }\n if (logs.length === 0)\n return;\n if (batch)\n emit.onLogs(logs);\n else\n for (const log of logs)\n emit.onLogs([log]);\n }\n catch (err) {\n // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.\n // Reinitalize the filter when this occurs\n if (filter && err instanceof InvalidInputRpcError)\n initialized = false;\n emit.onError?.(err);\n }\n }, {\n emitOnBegin: true,\n interval: pollingInterval,\n });\n return async () => {\n if (filter)\n await getAction(client, uninstallFilter, 'uninstallFilter')({ filter });\n unwatch();\n };\n });\n };\n const subscribeContractEvent = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const topics = eventName\n ? encodeEventTopics({\n abi: abi,\n eventName: eventName,\n args,\n })\n : [];\n const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({\n params: ['logs', { address, topics }],\n onData(data) {\n if (!active)\n return;\n const log = data.result;\n try {\n const { eventName, args } = decodeEventLog({\n abi: abi,\n data: log.data,\n topics: log.topics,\n strict: strict_,\n });\n const formatted = formatLog(log, {\n args,\n eventName: eventName,\n });\n onLogs([formatted]);\n }\n catch (err) {\n let eventName;\n let isUnnamed;\n if (err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict_)\n return;\n eventName = err.abiItem.name;\n isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name));\n }\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n const formatted = formatLog(log, {\n args: isUnnamed ? [] : {},\n eventName,\n });\n onLogs([formatted]);\n }\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return unsubscribe;\n };\n return enablePolling ? pollContractEvent() : subscribeContractEvent();\n}\n//# sourceMappingURL=watchContractEvent.js.map","import { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { sendTransaction, } from './sendTransaction.js';\n/**\n * Executes a write function on a contract.\n *\n * - Docs: https://viem.sh/docs/contract/writeContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts\n *\n * A \"write\" function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a [Transaction](https://viem.sh/docs/glossary/terms) is needed to be broadcast in order to change the state.\n *\n * Internally, uses a [Wallet Client](https://viem.sh/docs/clients/wallet) to call the [`sendTransaction` action](https://viem.sh/docs/actions/wallet/sendTransaction) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * __Warning: The `write` internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to [simulate the contract write with `contract.simulate`](https://viem.sh/docs/contract/writeContract#usage) before you execute it.__\n *\n * @param client - Client to use\n * @param parameters - {@link WriteContractParameters}\n * @returns A [Transaction Hash](https://viem.sh/docs/glossary/terms#hash). {@link WriteContractReturnType}\n *\n * @example\n * import { createWalletClient, custom, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { writeContract } from 'viem/contract'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const hash = await writeContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),\n * functionName: 'mint',\n * args: [69420],\n * })\n *\n * @example\n * // With Validation\n * import { createWalletClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateContract, writeContract } from 'viem/contract'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const { request } = await simulateContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),\n * functionName: 'mint',\n * args: [69420],\n * }\n * const hash = await writeContract(client, request)\n */\nexport async function writeContract(client, parameters) {\n const { abi, address, args, dataSuffix, functionName, ...request } = parameters;\n const data = encodeFunctionData({\n abi,\n args,\n functionName,\n });\n return getAction(client, sendTransaction, 'sendTransaction')({\n data: `${data}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n to: address,\n ...request,\n });\n}\n//# sourceMappingURL=writeContract.js.map","const size = 256;\nlet index = size;\nlet buffer;\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = '';\n index = 0;\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1);\n }\n }\n return buffer.substring(index, index++ + length);\n}\n//# sourceMappingURL=uid.js.map","import { parseAccount } from '../utils/accounts.js';\nimport { uid } from '../utils/uid.js';\nexport function createClient(parameters) {\n const { batch, cacheTime = parameters.pollingInterval ?? 4000, key = 'base', name = 'Base Client', pollingInterval = 4000, type = 'base', } = parameters;\n const chain = parameters.chain;\n const account = parameters.account\n ? parseAccount(parameters.account)\n : undefined;\n const { config, request, value } = parameters.transport({\n chain,\n pollingInterval,\n });\n const transport = { ...config, ...value };\n const client = {\n account,\n batch,\n cacheTime,\n chain,\n key,\n name,\n pollingInterval,\n request,\n transport,\n type,\n uid: uid(),\n };\n function extend(base) {\n return (extendFn) => {\n const extended = extendFn(base);\n for (const key in client)\n delete extended[key];\n const combined = { ...base, ...extended };\n return Object.assign(combined, { extend: extend(combined) });\n };\n }\n return Object.assign(client, { extend: extend(client) });\n}\n//# sourceMappingURL=createClient.js.map","import { wait } from '../wait.js';\nexport function withRetry(fn, { delay: delay_ = 100, retryCount = 2, shouldRetry = () => true, } = {}) {\n return new Promise((resolve, reject) => {\n const attemptRetry = async ({ count = 0 } = {}) => {\n const retry = async ({ error }) => {\n const delay = typeof delay_ === 'function' ? delay_({ count, error }) : delay_;\n if (delay)\n await wait(delay);\n attemptRetry({ count: count + 1 });\n };\n try {\n const data = await fn();\n resolve(data);\n }\n catch (err) {\n if (count < retryCount &&\n (await shouldRetry({ count, error: err })))\n return retry({ error: err });\n reject(err);\n }\n };\n attemptRetry();\n });\n}\n//# sourceMappingURL=withRetry.js.map","import { BaseError } from '../errors/base.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { ChainDisconnectedError, InternalRpcError, InvalidInputRpcError, InvalidParamsRpcError, InvalidRequestRpcError, JsonRpcVersionUnsupportedError, LimitExceededRpcError, MethodNotFoundRpcError, MethodNotSupportedRpcError, ParseRpcError, ProviderDisconnectedError, ResourceNotFoundRpcError, ResourceUnavailableRpcError, SwitchChainError, TransactionRejectedRpcError, UnauthorizedProviderError, UnknownRpcError, UnsupportedProviderMethodError, UserRejectedRequestError, } from '../errors/rpc.js';\nimport { withRetry } from './promise/withRetry.js';\nexport function buildRequest(request, options = {}) {\n return async (args, overrideOptions = {}) => {\n const { retryDelay = 150, retryCount = 3 } = {\n ...options,\n ...overrideOptions,\n };\n return withRetry(async () => {\n try {\n return await request(args);\n }\n catch (err_) {\n const err = err_;\n switch (err.code) {\n // -32700\n case ParseRpcError.code:\n throw new ParseRpcError(err);\n // -32600\n case InvalidRequestRpcError.code:\n throw new InvalidRequestRpcError(err);\n // -32601\n case MethodNotFoundRpcError.code:\n throw new MethodNotFoundRpcError(err);\n // -32602\n case InvalidParamsRpcError.code:\n throw new InvalidParamsRpcError(err);\n // -32603\n case InternalRpcError.code:\n throw new InternalRpcError(err);\n // -32000\n case InvalidInputRpcError.code:\n throw new InvalidInputRpcError(err);\n // -32001\n case ResourceNotFoundRpcError.code:\n throw new ResourceNotFoundRpcError(err);\n // -32002\n case ResourceUnavailableRpcError.code:\n throw new ResourceUnavailableRpcError(err);\n // -32003\n case TransactionRejectedRpcError.code:\n throw new TransactionRejectedRpcError(err);\n // -32004\n case MethodNotSupportedRpcError.code:\n throw new MethodNotSupportedRpcError(err);\n // -32005\n case LimitExceededRpcError.code:\n throw new LimitExceededRpcError(err);\n // -32006\n case JsonRpcVersionUnsupportedError.code:\n throw new JsonRpcVersionUnsupportedError(err);\n // 4001\n case UserRejectedRequestError.code:\n throw new UserRejectedRequestError(err);\n // 4100\n case UnauthorizedProviderError.code:\n throw new UnauthorizedProviderError(err);\n // 4200\n case UnsupportedProviderMethodError.code:\n throw new UnsupportedProviderMethodError(err);\n // 4900\n case ProviderDisconnectedError.code:\n throw new ProviderDisconnectedError(err);\n // 4901\n case ChainDisconnectedError.code:\n throw new ChainDisconnectedError(err);\n // 4902\n case SwitchChainError.code:\n throw new SwitchChainError(err);\n // CAIP-25: User Rejected Error\n // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25\n case 5000:\n throw new UserRejectedRequestError(err);\n default:\n if (err_ instanceof BaseError)\n throw err_;\n throw new UnknownRpcError(err);\n }\n }\n }, {\n delay: ({ count, error }) => {\n // If we find a Retry-After header, let's retry after the given time.\n if (error && error instanceof HttpRequestError) {\n const retryAfter = error?.headers?.get('Retry-After');\n if (retryAfter?.match(/\\d/))\n return parseInt(retryAfter) * 1000;\n }\n // Otherwise, let's retry with an exponential backoff.\n return ~~(1 << count) * retryDelay;\n },\n retryCount,\n shouldRetry: ({ error }) => shouldRetry(error),\n });\n };\n}\nexport function shouldRetry(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === -1)\n return true; // Unknown error\n if (error.code === LimitExceededRpcError.code)\n return true;\n if (error.code === InternalRpcError.code)\n return true;\n return false;\n }\n if (error instanceof HttpRequestError && error.status) {\n // Forbidden\n if (error.status === 403)\n return true;\n // Request Timeout\n if (error.status === 408)\n return true;\n // Request Entity Too Large\n if (error.status === 413)\n return true;\n // Too Many Requests\n if (error.status === 429)\n return true;\n // Internal Server Error\n if (error.status === 500)\n return true;\n // Bad Gateway\n if (error.status === 502)\n return true;\n // Service Unavailable\n if (error.status === 503)\n return true;\n // Gateway Timeout\n if (error.status === 504)\n return true;\n return false;\n }\n return true;\n}\n//# sourceMappingURL=buildRequest.js.map","import { buildRequest } from '../../utils/buildRequest.js';\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport({ key, name, request, retryCount = 3, retryDelay = 150, timeout, type, }, value) {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n };\n}\n//# sourceMappingURL=createTransport.js.map","import { createTransport, } from './createTransport.js';\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom(provider, config = {}) {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config;\n return ({ retryCount: defaultRetryCount }) => createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n });\n}\n//# sourceMappingURL=custom.js.map","import { BaseError } from './base.js';\nexport class UrlRequiredError extends BaseError {\n constructor() {\n super('No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.', {\n docsPath: '/docs/clients/intro',\n });\n }\n}\n//# sourceMappingURL=transport.js.map","export function withTimeout(fn, { errorInstance = new Error('timed out'), timeout, signal, }) {\n return new Promise((resolve, reject) => {\n ;\n (async () => {\n let timeoutId;\n try {\n const controller = new AbortController();\n if (timeout > 0) {\n timeoutId = setTimeout(() => {\n if (signal) {\n controller.abort();\n }\n else {\n reject(errorInstance);\n }\n }, timeout);\n }\n resolve(await fn({ signal: controller?.signal }));\n }\n catch (err) {\n if (err.name === 'AbortError')\n reject(errorInstance);\n reject(err);\n }\n finally {\n clearTimeout(timeoutId);\n }\n })();\n });\n}\n//# sourceMappingURL=withTimeout.js.map","export function createIdStore() {\n return {\n current: 0,\n take() {\n return this.current++;\n },\n reset() {\n this.current = 0;\n },\n };\n}\nexport const idCache = /*#__PURE__*/ createIdStore();\n//# sourceMappingURL=id.js.map","import { HttpRequestError, TimeoutError, } from '../../errors/request.js';\nimport { withTimeout, } from '../promise/withTimeout.js';\nimport { stringify } from '../stringify.js';\nimport { idCache } from './id.js';\nexport function getHttpRpcClient(url, options = {}) {\n return {\n async request(params) {\n const { body, fetchOptions = {}, timeout = options.timeout ?? 10000, } = params;\n const { headers, method, signal: signal_, } = { ...options.fetchOptions, ...fetchOptions };\n try {\n const response = await withTimeout(async ({ signal }) => {\n const response = await fetch(url, {\n ...fetchOptions,\n body: Array.isArray(body)\n ? stringify(body.map((body) => ({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n })))\n : stringify({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n }),\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n method: method || 'POST',\n signal: signal_ || (timeout > 0 ? signal : undefined),\n });\n return response;\n }, {\n errorInstance: new TimeoutError({ body, url }),\n timeout,\n signal: true,\n });\n let data;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n data = await response.json();\n }\n else {\n data = await response.text();\n }\n if (!response.ok) {\n throw new HttpRequestError({\n body,\n details: stringify(data.error) || response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n }\n return data;\n }\n catch (err) {\n if (err instanceof HttpRequestError)\n throw err;\n if (err instanceof TimeoutError)\n throw err;\n throw new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n },\n };\n}\n//# sourceMappingURL=http.js.map","import { RpcRequestError } from '../../errors/request.js';\nimport { UrlRequiredError, } from '../../errors/transport.js';\nimport { createBatchScheduler } from '../../utils/promise/createBatchScheduler.js';\nimport { getHttpRpcClient, } from '../../utils/rpc/http.js';\nimport { createTransport, } from './createTransport.js';\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n/** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\nurl, config = {}) {\n const { batch, fetchOptions, key = 'http', name = 'HTTP JSON-RPC', retryDelay, } = config;\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const { batchSize = 1000, wait = 0 } = typeof batch === 'object' ? batch : {};\n const retryCount = config.retryCount ?? retryCount_;\n const timeout = timeout_ ?? config.timeout ?? 10000;\n const url_ = url || chain?.rpcUrls.default.http[0];\n if (!url_)\n throw new UrlRequiredError();\n const rpcClient = getHttpRpcClient(url_, { fetchOptions, timeout });\n return createTransport({\n key,\n name,\n async request({ method, params }) {\n const body = { method, params };\n const { schedule } = createBatchScheduler({\n id: `${url}`,\n wait,\n shouldSplitBatch(requests) {\n return requests.length > batchSize;\n },\n fn: (body) => rpcClient.request({\n body,\n }),\n sort: (a, b) => a.id - b.id,\n });\n const fn = async (body) => batch\n ? schedule(body)\n : [\n await rpcClient.request({\n body,\n }),\n ];\n const [{ error, result }] = await fn(body);\n if (error)\n throw new RpcRequestError({\n body,\n error,\n url: url_,\n });\n return result;\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n }, {\n fetchOptions,\n url: url_,\n });\n };\n}\n//# sourceMappingURL=http.js.map","export function formatFeeHistory(feeHistory) {\n return {\n baseFeePerGas: feeHistory.baseFeePerGas.map((value) => BigInt(value)),\n gasUsedRatio: feeHistory.gasUsedRatio,\n oldestBlock: BigInt(feeHistory.oldestBlock),\n reward: feeHistory.reward?.map((reward) => reward.map((value) => BigInt(value))),\n };\n}\n//# sourceMappingURL=feeHistory.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatFeeHistory, } from '../../utils/formatters/feeHistory.js';\n/**\n * Returns a collection of historical gas information.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFeeHistory\n * - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory)\n *\n * @param client - Client to use\n * @param parameters - {@link GetFeeHistoryParameters}\n * @returns The gas estimate (in wei). {@link GetFeeHistoryReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getFeeHistory } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const feeHistory = await getFeeHistory(client, {\n * blockCount: 4,\n * rewardPercentiles: [25, 75],\n * })\n */\nexport async function getFeeHistory(client, { blockCount, blockNumber, blockTag = 'latest', rewardPercentiles, }) {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined;\n const feeHistory = await client.request({\n method: 'eth_feeHistory',\n params: [\n numberToHex(blockCount),\n blockNumberHex || blockTag,\n rewardPercentiles,\n ],\n });\n return formatFeeHistory(feeHistory);\n}\n//# sourceMappingURL=getFeeHistory.js.map","import {} from '../../utils/abi/decodeEventLog.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { formatLog, } from '../../utils/formatters/log.js';\n/**\n * Returns a list of event logs since the filter was created.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterLogs\n * - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs)\n *\n * `getFilterLogs` is only compatible with **event filters**.\n *\n * @param client - Client to use\n * @param parameters - {@link GetFilterLogsParameters}\n * @returns A list of event logs. {@link GetFilterLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter, getFilterLogs } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await getFilterLogs(client, { filter })\n */\nexport async function getFilterLogs(_client, { filter, }) {\n const strict = filter.strict ?? false;\n const logs = await filter.request({\n method: 'eth_getFilterLogs',\n params: [filter.id],\n });\n const formattedLogs = logs.map((log) => formatLog(log));\n if (!filter.abi)\n return formattedLogs;\n return parseEventLogs({\n abi: filter.abi,\n logs: formattedLogs,\n strict,\n });\n}\n//# sourceMappingURL=getFilterLogs.js.map","import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class OffchainLookupError extends BaseError {\n constructor({ callbackSelector, cause, data, extraData, sender, urls, }) {\n super(cause.shortMessage ||\n 'An error occurred while fetching for an offchain result.', {\n cause,\n metaMessages: [\n ...(cause.metaMessages || []),\n cause.metaMessages?.length ? '' : [],\n 'Offchain Gateway Call:',\n urls && [\n ' Gateway URL(s):',\n ...urls.map((url) => ` ${getUrl(url)}`),\n ],\n ` Sender: ${sender}`,\n ` Data: ${data}`,\n ` Callback selector: ${callbackSelector}`,\n ` Extra data: ${extraData}`,\n ].flat(),\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'OffchainLookupError'\n });\n }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n constructor({ result, url }) {\n super('Offchain gateway response is malformed. Response data must be a hex value.', {\n metaMessages: [\n `Gateway URL: ${getUrl(url)}`,\n `Response: ${stringify(result)}`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'OffchainLookupResponseMalformedError'\n });\n }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n constructor({ sender, to }) {\n super('Reverted sender address does not match target contract address (`to`).', {\n metaMessages: [\n `Contract address: ${to}`,\n `OffchainLookup sender address: ${sender}`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'OffchainLookupSenderMismatchError'\n });\n }\n}\n//# sourceMappingURL=ccip.js.map","import { InvalidAddressError, } from '../../errors/address.js';\nimport { isAddress } from './isAddress.js';\nexport function isAddressEqual(a, b) {\n if (!isAddress(a, { strict: false }))\n throw new InvalidAddressError({ address: a });\n if (!isAddress(b, { strict: false }))\n throw new InvalidAddressError({ address: b });\n return a.toLowerCase() === b.toLowerCase();\n}\n//# sourceMappingURL=isAddressEqual.js.map","import { call } from '../actions/public/call.js';\nimport {} from '../errors/base.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n name: 'OffchainLookup',\n type: 'error',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'urls',\n type: 'string[]',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n {\n name: 'callbackFunction',\n type: 'bytes4',\n },\n {\n name: 'extraData',\n type: 'bytes',\n },\n ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n const { args } = decodeErrorResult({\n data,\n abi: [offchainLookupAbiItem],\n });\n const [sender, urls, callData, callbackSelector, extraData] = args;\n try {\n if (!isAddressEqual(to, sender))\n throw new OffchainLookupSenderMismatchError({ sender, to });\n const result = await ccipFetch({ data: callData, sender, urls });\n const { data: data_ } = await call(client, {\n blockNumber,\n blockTag,\n data: concat([\n callbackSelector,\n encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n ]),\n to,\n });\n return data_;\n }\n catch (err) {\n throw new OffchainLookupError({\n callbackSelector,\n cause: err,\n data,\n extraData,\n sender,\n urls,\n });\n }\n}\nexport async function ccipFetch({ data, sender, urls, }) {\n let error = new Error('An unknown error occurred.');\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n const method = url.includes('{data}') ? 'GET' : 'POST';\n const body = method === 'POST' ? { data, sender } : undefined;\n try {\n const response = await fetch(url.replace('{sender}', sender).replace('{data}', data), {\n body: JSON.stringify(body),\n method,\n });\n let result;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n result = (await response.json()).data;\n }\n else {\n result = (await response.text());\n }\n if (!response.ok) {\n error = new HttpRequestError({\n body,\n details: result?.error\n ? stringify(result.error)\n : response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n continue;\n }\n if (!isHex(result)) {\n error = new OffchainLookupResponseMalformedError({\n result,\n url,\n });\n continue;\n }\n return result;\n }\n catch (err) {\n error = new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n }\n throw error;\n}\n//# sourceMappingURL=ccip.js.map","export function defineChain(chain) {\n return {\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain,\n };\n}\n//# sourceMappingURL=defineChain.js.map","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/;\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\n//# sourceMappingURL=regex.js.map","// Implementation forked and adapted from https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts\nimport { encodeAbiParameters, } from '../abi/encodeAbiParameters.js';\nimport { concat } from '../data/concat.js';\nimport { toHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { getTypesForEIP712Domain, validateTypedData, } from '../typedData.js';\nexport function hashTypedData(parameters) {\n const { domain = {}, message, primaryType, } = parameters;\n const types = {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n ...parameters.types,\n };\n // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n // as we can't statically check this with TypeScript.\n validateTypedData({\n domain,\n message,\n primaryType,\n types,\n });\n const parts = ['0x1901'];\n if (domain)\n parts.push(hashDomain({\n domain,\n types: types,\n }));\n if (primaryType !== 'EIP712Domain')\n parts.push(hashStruct({\n data: message,\n primaryType,\n types: types,\n }));\n return keccak256(concat(parts));\n}\nexport function hashDomain({ domain, types, }) {\n return hashStruct({\n data: domain,\n primaryType: 'EIP712Domain',\n types,\n });\n}\nfunction hashStruct({ data, primaryType, types, }) {\n const encoded = encodeData({\n data,\n primaryType,\n types,\n });\n return keccak256(encoded);\n}\nfunction encodeData({ data, primaryType, types, }) {\n const encodedTypes = [{ type: 'bytes32' }];\n const encodedValues = [hashType({ primaryType, types })];\n for (const field of types[primaryType]) {\n const [type, value] = encodeField({\n types,\n name: field.name,\n type: field.type,\n value: data[field.name],\n });\n encodedTypes.push(type);\n encodedValues.push(value);\n }\n return encodeAbiParameters(encodedTypes, encodedValues);\n}\nfunction hashType({ primaryType, types, }) {\n const encodedHashType = toHex(encodeType({ primaryType, types }));\n return keccak256(encodedHashType);\n}\nfunction encodeType({ primaryType, types, }) {\n let result = '';\n const unsortedDeps = findTypeDependencies({ primaryType, types });\n unsortedDeps.delete(primaryType);\n const deps = [primaryType, ...Array.from(unsortedDeps).sort()];\n for (const type of deps) {\n result += `${type}(${types[type]\n .map(({ name, type: t }) => `${t} ${name}`)\n .join(',')})`;\n }\n return result;\n}\nfunction findTypeDependencies({ primaryType: primaryType_, types, }, results = new Set()) {\n const match = primaryType_.match(/^\\w*/u);\n const primaryType = match?.[0];\n if (results.has(primaryType) || types[primaryType] === undefined) {\n return results;\n }\n results.add(primaryType);\n for (const field of types[primaryType]) {\n findTypeDependencies({ primaryType: field.type, types }, results);\n }\n return results;\n}\nfunction encodeField({ types, name, type, value, }) {\n if (types[type] !== undefined) {\n return [\n { type: 'bytes32' },\n keccak256(encodeData({ data: value, primaryType: type, types })),\n ];\n }\n if (type === 'bytes') {\n const prepend = value.length % 2 ? '0' : '';\n value = `0x${prepend + value.slice(2)}`;\n return [{ type: 'bytes32' }, keccak256(value)];\n }\n if (type === 'string')\n return [{ type: 'bytes32' }, keccak256(toHex(value))];\n if (type.lastIndexOf(']') === type.length - 1) {\n const parsedType = type.slice(0, type.lastIndexOf('['));\n const typeValuePairs = value.map((item) => encodeField({\n name,\n type: parsedType,\n types,\n value: item,\n }));\n return [\n { type: 'bytes32' },\n keccak256(encodeAbiParameters(typeValuePairs.map(([t]) => t), typeValuePairs.map(([, v]) => v))),\n ];\n }\n return [{ type }, value];\n}\n//# sourceMappingURL=hashTypedData.js.map","import { BytesSizeMismatchError } from '../errors/abi.js';\nimport { InvalidAddressError } from '../errors/address.js';\nimport { isAddress } from './address/isAddress.js';\nimport { size } from './data/size.js';\nimport { numberToHex } from './encoding/toHex.js';\nimport { bytesRegex, integerRegex } from './regex.js';\nimport { hashDomain, } from './signature/hashTypedData.js';\nexport function validateTypedData(parameters) {\n const { domain, message, primaryType, types } = parameters;\n const validateData = (struct, data) => {\n for (const param of struct) {\n const { name, type } = param;\n const value = data[name];\n const integerMatch = type.match(integerRegex);\n if (integerMatch &&\n (typeof value === 'number' || typeof value === 'bigint')) {\n const [_type, base, size_] = integerMatch;\n // If number cannot be cast to a sized hex value, it is out of range\n // and will throw.\n numberToHex(value, {\n signed: base === 'int',\n size: parseInt(size_) / 8,\n });\n }\n if (type === 'address' && typeof value === 'string' && !isAddress(value))\n throw new InvalidAddressError({ address: value });\n const bytesMatch = type.match(bytesRegex);\n if (bytesMatch) {\n const [_type, size_] = bytesMatch;\n if (size_ && size(value) !== parseInt(size_))\n throw new BytesSizeMismatchError({\n expectedSize: parseInt(size_),\n givenSize: size(value),\n });\n }\n const struct = types[type];\n if (struct)\n validateData(struct, value);\n }\n };\n // Validate domain types.\n if (types.EIP712Domain && domain)\n validateData(types.EIP712Domain, domain);\n if (primaryType !== 'EIP712Domain') {\n // Validate message types.\n const type = types[primaryType];\n validateData(type, message);\n }\n}\nexport function getTypesForEIP712Domain({ domain, }) {\n return [\n typeof domain?.name === 'string' && { name: 'name', type: 'string' },\n domain?.version && { name: 'version', type: 'string' },\n typeof domain?.chainId === 'number' && {\n name: 'chainId',\n type: 'uint256',\n },\n domain?.verifyingContract && {\n name: 'verifyingContract',\n type: 'address',\n },\n domain?.salt && { name: 'salt', type: 'bytes32' },\n ].filter(Boolean);\n}\nexport function domainSeparator({ domain }) {\n return hashDomain({\n domain,\n types: {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n },\n });\n}\n//# sourceMappingURL=typedData.js.map","import { hexToNumber } from '../encoding/fromHex.js';\nimport { defineFormatter } from './formatter.js';\nimport { formatLog } from './log.js';\nimport { transactionType } from './transaction.js';\nconst statuses = {\n '0x0': 'reverted',\n '0x1': 'success',\n};\nexport function formatTransactionReceipt(transactionReceipt) {\n const receipt = {\n ...transactionReceipt,\n blockNumber: transactionReceipt.blockNumber\n ? BigInt(transactionReceipt.blockNumber)\n : null,\n contractAddress: transactionReceipt.contractAddress\n ? transactionReceipt.contractAddress\n : null,\n cumulativeGasUsed: transactionReceipt.cumulativeGasUsed\n ? BigInt(transactionReceipt.cumulativeGasUsed)\n : null,\n effectiveGasPrice: transactionReceipt.effectiveGasPrice\n ? BigInt(transactionReceipt.effectiveGasPrice)\n : null,\n gasUsed: transactionReceipt.gasUsed\n ? BigInt(transactionReceipt.gasUsed)\n : null,\n logs: transactionReceipt.logs\n ? transactionReceipt.logs.map((log) => formatLog(log))\n : null,\n to: transactionReceipt.to ? transactionReceipt.to : null,\n transactionIndex: transactionReceipt.transactionIndex\n ? hexToNumber(transactionReceipt.transactionIndex)\n : null,\n status: transactionReceipt.status\n ? statuses[transactionReceipt.status]\n : null,\n type: transactionReceipt.type\n ? transactionType[transactionReceipt.type] || transactionReceipt.type\n : null,\n };\n if (transactionReceipt.blobGasPrice)\n receipt.blobGasPrice = BigInt(transactionReceipt.blobGasPrice);\n if (transactionReceipt.blobGasUsed)\n receipt.blobGasUsed = BigInt(transactionReceipt.blobGasUsed);\n return receipt;\n}\nexport const defineTransactionReceipt = /*#__PURE__*/ defineFormatter('transactionReceipt', formatTransactionReceipt);\n//# sourceMappingURL=transactionReceipt.js.map","export const presignMessagePrefix = '\\x19Ethereum Signed Message:\\n';\n//# sourceMappingURL=strings.js.map","import { presignMessagePrefix } from '../../constants/strings.js';\nimport { concat } from '../data/concat.js';\nimport { stringToBytes, toBytes, } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nexport function hashMessage(message, to_) {\n const messageBytes = (() => {\n if (typeof message === 'string')\n return stringToBytes(message);\n if (message.raw instanceof Uint8Array)\n return message.raw;\n return toBytes(message.raw);\n })();\n const prefixBytes = stringToBytes(`${presignMessagePrefix}${messageBytes.length}`);\n return keccak256(concat([prefixBytes, messageBytes]), to_);\n}\n//# sourceMappingURL=hashMessage.js.map","import { hexToNumber } from '../index.js';\nfunction formatStorageProof(storageProof) {\n return storageProof.map((proof) => ({\n ...proof,\n value: BigInt(proof.value),\n }));\n}\nexport function formatProof(proof) {\n return {\n ...proof,\n balance: proof.balance ? BigInt(proof.balance) : undefined,\n nonce: proof.nonce ? hexToNumber(proof.nonce) : undefined,\n storageProof: proof.storageProof\n ? formatStorageProof(proof.storageProof)\n : undefined,\n };\n}\n//# sourceMappingURL=proof.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatProof, } from '../../utils/formatters/proof.js';\n/**\n * Returns the account and storage values of the specified account including the Merkle-proof.\n *\n * - Docs: https://viem.sh/docs/actions/public/getProof\n * - JSON-RPC Methods:\n * - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186)\n *\n * @param client - Client to use\n * @param parameters - {@link GetProofParameters}\n * @returns Proof data. {@link GetProofReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getProof } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await getProof(client, {\n * address: '0x...',\n * storageKeys: ['0x...'],\n * })\n */\nexport async function getProof(client, { address, blockNumber, blockTag: blockTag_, storageKeys, }) {\n const blockTag = blockTag_ ?? 'latest';\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const proof = await client.request({\n method: 'eth_getProof',\n params: [address, storageKeys, blockNumberHex || blockTag],\n });\n return formatProof(proof);\n}\n//# sourceMappingURL=getProof.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the value from a storage slot at a given address.\n *\n * - Docs: https://viem.sh/docs/contract/getStorageAt\n * - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat)\n *\n * @param client - Client to use\n * @param parameters - {@link GetStorageAtParameters}\n * @returns The value of the storage slot. {@link GetStorageAtReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getStorageAt } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getStorageAt(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * slot: toHex(0),\n * })\n */\nexport async function getStorageAt(client, { address, blockNumber, blockTag = 'latest', slot }) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const data = await client.request({\n method: 'eth_getStorageAt',\n params: [address, slot, blockNumberHex || blockTag],\n });\n return data;\n}\n//# sourceMappingURL=getStorageAt.js.map","import { TransactionNotFoundError } from '../../errors/transaction.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatTransaction, } from '../../utils/formatters/transaction.js';\n/**\n * Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransaction\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionParameters}\n * @returns The transaction information. {@link GetTransactionReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransaction } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transaction = await getTransaction(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransaction(client, { blockHash, blockNumber, blockTag: blockTag_, hash, index, }) {\n const blockTag = blockTag_ || 'latest';\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n let transaction = null;\n if (hash) {\n transaction = await client.request({\n method: 'eth_getTransactionByHash',\n params: [hash],\n });\n }\n else if (blockHash) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockHashAndIndex',\n params: [blockHash, numberToHex(index)],\n });\n }\n else if (blockNumberHex || blockTag) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockNumberAndIndex',\n params: [blockNumberHex || blockTag, numberToHex(index)],\n });\n }\n if (!transaction)\n throw new TransactionNotFoundError({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n });\n const format = client.chain?.formatters?.transaction?.format || formatTransaction;\n return format(transaction);\n}\n//# sourceMappingURL=getTransaction.js.map","import { getAction } from '../../utils/getAction.js';\nimport { getBlockNumber, } from './getBlockNumber.js';\nimport { getTransaction, } from './getTransaction.js';\n/**\n * Returns the number of blocks passed (confirmations) since the transaction was processed on a block.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionConfirmationsParameters}\n * @returns The number of blocks passed since the transaction was processed. If confirmations is 0, then the Transaction has not been confirmed & processed yet. {@link GetTransactionConfirmationsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionConfirmations } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const confirmations = await getTransactionConfirmations(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransactionConfirmations(client, { hash, transactionReceipt }) {\n const [blockNumber, transaction] = await Promise.all([\n getAction(client, getBlockNumber, 'getBlockNumber')({}),\n hash\n ? getAction(client, getTransaction, 'getBlockNumber')({ hash })\n : undefined,\n ]);\n const transactionBlockNumber = transactionReceipt?.blockNumber || transaction?.blockNumber;\n if (!transactionBlockNumber)\n return 0n;\n return blockNumber - transactionBlockNumber + 1n;\n}\n//# sourceMappingURL=getTransactionConfirmations.js.map","import { TransactionReceiptNotFoundError, } from '../../errors/transaction.js';\nimport { formatTransactionReceipt, } from '../../utils/formatters/transactionReceipt.js';\n/**\n * Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionReceiptParameters}\n * @returns The transaction receipt. {@link GetTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionReceipt } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await getTransactionReceipt(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransactionReceipt(client, { hash }) {\n const receipt = await client.request({\n method: 'eth_getTransactionReceipt',\n params: [hash],\n });\n if (!receipt)\n throw new TransactionReceiptNotFoundError({ hash });\n const format = client.chain?.formatters?.transactionReceipt?.format ||\n formatTransactionReceipt;\n return format(receipt);\n}\n//# sourceMappingURL=getTransactionReceipt.js.map","import { multicall3Abi } from '../../constants/abis.js';\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js';\nimport { BaseError } from '../../errors/base.js';\nimport { RawContractError } from '../../errors/contract.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract } from './readContract.js';\n/**\n * Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).\n *\n * - Docs: https://viem.sh/docs/contract/multicall\n *\n * @param client - Client to use\n * @param parameters - {@link MulticallParameters}\n * @returns An array of results with accompanying status. {@link MulticallReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { multicall } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const abi = parseAbi([\n * 'function balanceOf(address) view returns (uint256)',\n * 'function totalSupply() view returns (uint256)',\n * ])\n * const results = await multicall(client, {\n * contracts: [\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * },\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'totalSupply',\n * },\n * ],\n * })\n * // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]\n */\nexport async function multicall(client, parameters) {\n const { allowFailure = true, batchSize: batchSize_, blockNumber, blockTag, multicallAddress: multicallAddress_, stateOverride, } = parameters;\n const contracts = parameters.contracts;\n const batchSize = batchSize_ ??\n ((typeof client.batch?.multicall === 'object' &&\n client.batch.multicall.batchSize) ||\n 1024);\n let multicallAddress = multicallAddress_;\n if (!multicallAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. multicallAddress is required.');\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n });\n }\n const chunkedCalls = [[]];\n let currentChunk = 0;\n let currentChunkSize = 0;\n for (let i = 0; i < contracts.length; i++) {\n const { abi, address, args, functionName } = contracts[i];\n try {\n const callData = encodeFunctionData({ abi, args, functionName });\n currentChunkSize += (callData.length - 2) / 2;\n // Check to see if we need to create a new chunk.\n if (\n // Check if batching is enabled.\n batchSize > 0 &&\n // Check if the current size of the batch exceeds the size limit.\n currentChunkSize > batchSize &&\n // Check if the current chunk is not already empty.\n chunkedCalls[currentChunk].length > 0) {\n currentChunk++;\n currentChunkSize = (callData.length - 2) / 2;\n chunkedCalls[currentChunk] = [];\n }\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData,\n target: address,\n },\n ];\n }\n catch (err) {\n const error = getContractError(err, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n });\n if (!allowFailure)\n throw error;\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData: '0x',\n target: address,\n },\n ];\n }\n }\n const aggregate3Results = await Promise.allSettled(chunkedCalls.map((calls) => getAction(client, readContract, 'readContract')({\n abi: multicall3Abi,\n address: multicallAddress,\n args: [calls],\n blockNumber,\n blockTag,\n functionName: 'aggregate3',\n stateOverride,\n })));\n const results = [];\n for (let i = 0; i < aggregate3Results.length; i++) {\n const result = aggregate3Results[i];\n // If an error occurred in a `readContract` invocation (ie. network error),\n // then append the failure reason to each contract result.\n if (result.status === 'rejected') {\n if (!allowFailure)\n throw result.reason;\n for (let j = 0; j < chunkedCalls[i].length; j++) {\n results.push({\n status: 'failure',\n error: result.reason,\n result: undefined,\n });\n }\n continue;\n }\n // If the `readContract` call was successful, then decode the results.\n const aggregate3Result = result.value;\n for (let j = 0; j < aggregate3Result.length; j++) {\n // Extract the response from `readContract`\n const { returnData, success } = aggregate3Result[j];\n // Extract the request call data from the original call.\n const { callData } = chunkedCalls[i][j];\n // Extract the contract config for this call from the `contracts` argument\n // for decoding.\n const { abi, address, functionName, args } = contracts[results.length];\n try {\n if (callData === '0x')\n throw new AbiDecodingZeroDataError();\n if (!success)\n throw new RawContractError({ data: returnData });\n const result = decodeFunctionResult({\n abi,\n args,\n data: returnData,\n functionName,\n });\n results.push(allowFailure ? { result, status: 'success' } : result);\n }\n catch (err) {\n const error = getContractError(err, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n });\n if (!allowFailure)\n throw error;\n results.push({ error, result: undefined, status: 'failure' });\n }\n }\n }\n if (results.length !== contracts.length)\n throw new BaseError('multicall results mismatch');\n return results;\n}\n//# sourceMappingURL=multicall.js.map","export const universalSignatureValidatorByteCode = '0x60806040523480156200001157600080fd5b50604051620007003803806200070083398101604081905262000034916200056f565b6000620000438484846200004f565b9050806000526001601ff35b600080846001600160a01b0316803b806020016040519081016040528181526000908060200190933c90507f6492649264926492649264926492649264926492649264926492649264926492620000a68462000451565b036200021f57600060608085806020019051810190620000c79190620005ce565b8651929550909350915060000362000192576000836001600160a01b031683604051620000f5919062000643565b6000604051808303816000865af19150503d806000811462000134576040519150601f19603f3d011682016040523d82523d6000602084013e62000139565b606091505b5050905080620001905760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b505b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90620001c4908b90869060040162000661565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200069d565b6001600160e01b031916149450505050506200044a565b805115620002b157604051630b135d3f60e11b808252906001600160a01b03871690631626ba7e9062000259908890889060040162000661565b602060405180830381865afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d91906200069d565b6001600160e01b031916149150506200044a565b8251604114620003195760405162461bcd60e51b815260206004820152603a6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e677468000000000000606482015260840162000187565b620003236200046b565b506020830151604080850151855186939260009185919081106200034b576200034b620006c9565b016020015160f81c9050601b81148015906200036b57508060ff16601c14155b15620003cf5760405162461bcd60e51b815260206004820152603b6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c75650000000000606482015260840162000187565b6040805160008152602081018083528a905260ff83169181019190915260608101849052608081018390526001600160a01b038a169060019060a0016020604051602081039080840390855afa1580156200042e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614955050505050505b9392505050565b60006020825110156200046357600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146200049f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004d5578181015183820152602001620004bb565b50506000910152565b600082601f830112620004f057600080fd5b81516001600160401b03808211156200050d576200050d620004a2565b604051601f8301601f19908116603f01168101908282118183101715620005385762000538620004a2565b816040528381528660208588010111156200055257600080fd5b62000565846020830160208901620004b8565b9695505050505050565b6000806000606084860312156200058557600080fd5b8351620005928162000489565b6020850151604086015191945092506001600160401b03811115620005b657600080fd5b620005c486828701620004de565b9150509250925092565b600080600060608486031215620005e457600080fd5b8351620005f18162000489565b60208501519093506001600160401b03808211156200060f57600080fd5b6200061d87838801620004de565b935060408601519150808211156200063457600080fd5b50620005c486828701620004de565b6000825162000657818460208701620004b8565b9190910192915050565b828152604060208201526000825180604084015262000688816060850160208701620004b8565b601f01601f1916919091016060019392505050565b600060208284031215620006b057600080fd5b81516001600160e01b0319811681146200044a57600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572';\n//# sourceMappingURL=contracts.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst u8a = (a) => a instanceof Uint8Array;\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (u8a(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\nexport function equalBytes(b1, b2) {\n // We don't care about timing attacks here\n if (b1.length !== b2.length)\n return false;\n for (let i = 0; i < b1.length; i++)\n if (b1[i] !== b2[i])\n return false;\n return true;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n, pos, value) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || val instanceof Uint8Array,\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n//# sourceMappingURL=utils.js.map","import { equalBytes } from '@noble/curves/abstract/utils';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { isHex } from './isHex.js';\nexport function isBytesEqual(a_, b_) {\n const a = isHex(a_) ? toBytes(a_) : a_;\n const b = isHex(b_) ? toBytes(b_) : b_;\n return equalBytes(a, b);\n}\n//# sourceMappingURL=isBytesEqual.js.map","import { universalSignatureValidatorAbi } from '../../constants/abis.js';\nimport { universalSignatureValidatorByteCode } from '../../constants/contracts.js';\nimport { CallExecutionError } from '../../errors/contract.js';\nimport { isBytesEqual, } from '../../utils/data/isBytesEqual.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { encodeDeployData, isHex, toHex } from '../../utils/index.js';\nimport { call } from './call.js';\n/**\n * Verifies a message hash on chain using ERC-6492.\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyHashParameters}\n * @returns Whether or not the signature is valid. {@link VerifyHashReturnType}\n */\nexport async function verifyHash(client, { address, hash, signature, ...callRequest }) {\n const signatureHex = isHex(signature) ? signature : toHex(signature);\n try {\n const { data } = await getAction(client, call, 'call')({\n data: encodeDeployData({\n abi: universalSignatureValidatorAbi,\n args: [address, hash, signatureHex],\n bytecode: universalSignatureValidatorByteCode,\n }),\n ...callRequest,\n });\n return isBytesEqual(data ?? '0x0', '0x1');\n }\n catch (error) {\n if (error instanceof CallExecutionError) {\n // if the execution fails, the signature was not valid and an internal method inside of the validator reverted\n // this can happen for many reasons, for example if signer can not be recovered from the signature\n // or if the signature has no valid format\n return false;\n }\n throw error;\n }\n}\n//# sourceMappingURL=verifyHash.js.map","import { hashMessage } from '../../utils/index.js';\nimport { verifyHash, } from './verifyHash.js';\n/**\n * Verify that a message was signed by the provided address.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyMessage}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifyMessageReturnType}\n */\nexport async function verifyMessage(client, { address, message, signature, ...callRequest }) {\n const hash = hashMessage(message);\n return verifyHash(client, {\n address,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifyMessage.js.map","import { hashTypedData, } from '../../utils/signature/hashTypedData.js';\nimport { verifyHash, } from './verifyHash.js';\n/**\n * Verify that typed data was signed by the provided address.\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyTypedData}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyTypedDataParameters}\n * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}\n */\nexport async function verifyTypedData(client, parameters) {\n const { address, signature, message, primaryType, types, domain, ...callRequest } = parameters;\n const hash = hashTypedData({ message, primaryType, types, domain });\n return verifyHash(client, {\n address,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifyTypedData.js.map","import { hexToBigInt } from '../../utils/encoding/fromHex.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getBlockNumber, } from './getBlockNumber.js';\n/**\n * Watches and returns incoming block numbers.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlockNumber\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchBlockNumberParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlockNumberReturnType}\n *\n * @example\n * import { createPublicClient, watchBlockNumber, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchBlockNumber(client, {\n * onBlockNumber: (blockNumber) => console.log(blockNumber),\n * })\n */\nexport function watchBlockNumber(client, { emitOnBegin = false, emitMissed = false, onBlockNumber, onError, poll: poll_, pollingInterval = client.pollingInterval, }) {\n const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';\n let prevBlockNumber;\n const pollBlockNumber = () => {\n const observerId = stringify([\n 'watchBlockNumber',\n client.uid,\n emitOnBegin,\n emitMissed,\n pollingInterval,\n ]);\n return observe(observerId, { onBlockNumber, onError }, (emit) => poll(async () => {\n try {\n const blockNumber = await getAction(client, getBlockNumber, 'getBlockNumber')({ cacheTime: 0 });\n if (prevBlockNumber) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (blockNumber === prevBlockNumber)\n return;\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (blockNumber - prevBlockNumber > 1 && emitMissed) {\n for (let i = prevBlockNumber + 1n; i < blockNumber; i++) {\n emit.onBlockNumber(i, prevBlockNumber);\n prevBlockNumber = i;\n }\n }\n }\n // If the next block number is greater than the previous,\n // it is not in the past, and we can emit the new block number.\n if (!prevBlockNumber || blockNumber > prevBlockNumber) {\n emit.onBlockNumber(blockNumber, prevBlockNumber);\n prevBlockNumber = blockNumber;\n }\n }\n catch (err) {\n emit.onError?.(err);\n }\n }, {\n emitOnBegin,\n interval: pollingInterval,\n }));\n };\n const subscribeBlockNumber = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({\n params: ['newHeads'],\n onData(data) {\n if (!active)\n return;\n const blockNumber = hexToBigInt(data.result?.number);\n onBlockNumber(blockNumber, prevBlockNumber);\n prevBlockNumber = blockNumber;\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return unsubscribe;\n };\n return enablePolling ? pollBlockNumber() : subscribeBlockNumber();\n}\n//# sourceMappingURL=watchBlockNumber.js.map","import { BlockNotFoundError } from '../../errors/block.js';\nimport { TransactionNotFoundError, TransactionReceiptNotFoundError, WaitForTransactionReceiptTimeoutError, } from '../../errors/transaction.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { withRetry, } from '../../utils/promise/withRetry.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getBlock } from './getBlock.js';\nimport { getTransaction, } from './getTransaction.js';\nimport { getTransactionReceipt, } from './getTransactionReceipt.js';\nimport { watchBlockNumber, } from './watchBlockNumber.js';\n/**\n * Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt). If the Transaction reverts, then the action will throw an error.\n *\n * - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/sending-transactions\n * - JSON-RPC Methods:\n * - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed.\n * - If a Transaction has been replaced:\n * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions\n * - Checks if one of the Transactions is a replacement\n * - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt).\n *\n * The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions).\n *\n * Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.\n *\n * There are 3 types of Transaction Replacement reasons:\n *\n * - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`)\n * - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`)\n * - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`)\n *\n * @param client - Client to use\n * @param parameters - {@link WaitForTransactionReceiptParameters}\n * @returns The transaction receipt. {@link WaitForTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, waitForTransactionReceipt, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await waitForTransactionReceipt(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function waitForTransactionReceipt(client, { confirmations = 1, hash, onReplaced, pollingInterval = client.pollingInterval, retryCount = 6, retryDelay = ({ count }) => ~~(1 << count) * 200, // exponential backoff\ntimeout, }) {\n const observerId = stringify(['waitForTransactionReceipt', client.uid, hash]);\n let transaction;\n let replacedTransaction;\n let receipt;\n let retrying = false;\n return new Promise((resolve, reject) => {\n if (timeout)\n setTimeout(() => reject(new WaitForTransactionReceiptTimeoutError({ hash })), timeout);\n const _unobserve = observe(observerId, { onReplaced, resolve, reject }, (emit) => {\n const _unwatch = getAction(client, watchBlockNumber, 'watchBlockNumber')({\n emitMissed: true,\n emitOnBegin: true,\n poll: true,\n pollingInterval,\n async onBlockNumber(blockNumber_) {\n if (retrying)\n return;\n let blockNumber = blockNumber_;\n const done = (fn) => {\n _unwatch();\n fn();\n _unobserve();\n };\n try {\n // If we already have a valid receipt, let's check if we have enough\n // confirmations. If we do, then we can resolve.\n if (receipt) {\n if (confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations))\n return;\n done(() => emit.resolve(receipt));\n return;\n }\n // Get the transaction to check if it's been replaced.\n // We need to retry as some RPC Providers may be slow to sync\n // up mined transactions.\n if (!transaction) {\n retrying = true;\n await withRetry(async () => {\n transaction = (await getAction(client, getTransaction, 'getTransaction')({ hash }));\n if (transaction.blockNumber)\n blockNumber = transaction.blockNumber;\n }, {\n delay: retryDelay,\n retryCount,\n });\n retrying = false;\n }\n // Get the receipt to check if it's been processed.\n receipt = await getAction(client, getTransactionReceipt, 'getTransactionReceipt')({ hash });\n // Check if we have enough confirmations. If not, continue polling.\n if (confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations))\n return;\n done(() => emit.resolve(receipt));\n }\n catch (err) {\n // If the receipt is not found, the transaction will be pending.\n // We need to check if it has potentially been replaced.\n if (err instanceof TransactionNotFoundError ||\n err instanceof TransactionReceiptNotFoundError) {\n if (!transaction) {\n retrying = false;\n return;\n }\n try {\n replacedTransaction = transaction;\n // Let's retrieve the transactions from the current block.\n // We need to retry as some RPC Providers may be slow to sync\n // up mined blocks.\n retrying = true;\n const block = await withRetry(() => getAction(client, getBlock, 'getBlock')({\n blockNumber,\n includeTransactions: true,\n }), {\n delay: retryDelay,\n retryCount,\n shouldRetry: ({ error }) => error instanceof BlockNotFoundError,\n });\n retrying = false;\n const replacementTransaction = block.transactions.find(({ from, nonce }) => from === replacedTransaction.from &&\n nonce === replacedTransaction.nonce);\n // If we couldn't find a replacement transaction, continue polling.\n if (!replacementTransaction)\n return;\n // If we found a replacement transaction, return it's receipt.\n receipt = await getAction(client, getTransactionReceipt, 'getTransactionReceipt')({\n hash: replacementTransaction.hash,\n });\n // Check if we have enough confirmations. If not, continue polling.\n if (confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations))\n return;\n let reason = 'replaced';\n if (replacementTransaction.to === replacedTransaction.to &&\n replacementTransaction.value === replacedTransaction.value) {\n reason = 'repriced';\n }\n else if (replacementTransaction.from === replacementTransaction.to &&\n replacementTransaction.value === 0n) {\n reason = 'cancelled';\n }\n done(() => {\n emit.onReplaced?.({\n reason,\n replacedTransaction: replacedTransaction,\n transaction: replacementTransaction,\n transactionReceipt: receipt,\n });\n emit.resolve(receipt);\n });\n }\n catch (err_) {\n done(() => emit.reject(err_));\n }\n }\n else {\n done(() => emit.reject(err));\n }\n }\n },\n });\n });\n });\n}\n//# sourceMappingURL=waitForTransactionReceipt.js.map","import { formatBlock } from '../../utils/formatters/block.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getBlock } from './getBlock.js';\n/**\n * Watches and returns information for incoming blocks.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlocks\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchBlocksParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlocksReturnType}\n *\n * @example\n * import { createPublicClient, watchBlocks, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchBlocks(client, {\n * onBlock: (block) => console.log(block),\n * })\n */\nexport function watchBlocks(client, { blockTag = 'latest', emitMissed = false, emitOnBegin = false, onBlock, onError, includeTransactions: includeTransactions_, poll: poll_, pollingInterval = client.pollingInterval, }) {\n const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';\n const includeTransactions = includeTransactions_ ?? false;\n let prevBlock;\n const pollBlocks = () => {\n const observerId = stringify([\n 'watchBlocks',\n client.uid,\n emitMissed,\n emitOnBegin,\n includeTransactions,\n pollingInterval,\n ]);\n return observe(observerId, { onBlock, onError }, (emit) => poll(async () => {\n try {\n const block = await getAction(client, getBlock, 'getBlock')({\n blockTag,\n includeTransactions,\n });\n if (block.number && prevBlock?.number) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (block.number === prevBlock.number)\n return;\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (block.number - prevBlock.number > 1 && emitMissed) {\n for (let i = prevBlock?.number + 1n; i < block.number; i++) {\n const block = (await getAction(client, getBlock, 'getBlock')({\n blockNumber: i,\n includeTransactions,\n }));\n emit.onBlock(block, prevBlock);\n prevBlock = block;\n }\n }\n }\n if (\n // If no previous block exists, emit.\n !prevBlock?.number ||\n // If the block tag is \"pending\" with no block number, emit.\n (blockTag === 'pending' && !block?.number) ||\n // If the next block number is greater than the previous block number, emit.\n // We don't want to emit blocks in the past.\n (block.number && block.number > prevBlock.number)) {\n emit.onBlock(block, prevBlock);\n prevBlock = block;\n }\n }\n catch (err) {\n emit.onError?.(err);\n }\n }, {\n emitOnBegin,\n interval: pollingInterval,\n }));\n };\n const subscribeBlocks = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({\n params: ['newHeads'],\n onData(data) {\n if (!active)\n return;\n const format = client.chain?.formatters?.block?.format || formatBlock;\n const block = format(data.result);\n onBlock(block, prevBlock);\n prevBlock = block;\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return unsubscribe;\n };\n return enablePolling ? pollBlocks() : subscribeBlocks();\n}\n//# sourceMappingURL=watchBlocks.js.map","import { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { DecodeLogDataMismatch, DecodeLogTopicsMismatch, } from '../../errors/abi.js';\nimport { InvalidInputRpcError } from '../../errors/rpc.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { decodeEventLog, encodeEventTopics, formatLog, } from '../../utils/index.js';\nimport { createEventFilter, } from './createEventFilter.js';\nimport { getBlockNumber } from './getBlockNumber.js';\nimport { getFilterChanges } from './getFilterChanges.js';\nimport { getLogs } from './getLogs.js';\nimport { uninstallFilter } from './uninstallFilter.js';\n/**\n * Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log).\n *\n * - Docs: https://viem.sh/docs/actions/public/watchEvent\n * - JSON-RPC Methods:\n * - **RPC Provider supports `eth_newFilter`:**\n * - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize).\n * - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges).\n * - **RPC Provider does not support `eth_newFilter`:**\n * - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval.\n *\n * This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs).\n *\n * `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchEventParameters}\n * @returns A function that can be invoked to stop watching for new Event Logs. {@link WatchEventReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchEvent } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchEvent(client, {\n * onLogs: (logs) => console.log(logs),\n * })\n */\nexport function watchEvent(client, { address, args, batch = true, event, events, onError, onLogs, poll: poll_, pollingInterval = client.pollingInterval, strict: strict_, }) {\n const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';\n const strict = strict_ ?? false;\n const pollEvent = () => {\n const observerId = stringify([\n 'watchEvent',\n address,\n args,\n batch,\n client.uid,\n event,\n pollingInterval,\n ]);\n return observe(observerId, { onLogs, onError }, (emit) => {\n let previousBlockNumber;\n let filter;\n let initialized = false;\n const unwatch = poll(async () => {\n if (!initialized) {\n try {\n filter = (await getAction(client, createEventFilter, 'createEventFilter')({\n address,\n args,\n event: event,\n events,\n strict,\n }));\n }\n catch { }\n initialized = true;\n return;\n }\n try {\n let logs;\n if (filter) {\n logs = await getAction(client, getFilterChanges, 'getFilterChanges')({ filter });\n }\n else {\n // If the filter doesn't exist, we will fall back to use `getLogs`.\n // The fall back exists because some RPC Providers do not support filters.\n // Fetch the block number to use for `getLogs`.\n const blockNumber = await getAction(client, getBlockNumber, 'getBlockNumber')({});\n // If the block number has changed, we will need to fetch the logs.\n // If the block number doesn't exist, we are yet to reach the first poll interval,\n // so do not emit any logs.\n if (previousBlockNumber && previousBlockNumber !== blockNumber) {\n logs = await getAction(client, getLogs, 'getLogs')({\n address,\n args,\n event: event,\n events,\n fromBlock: previousBlockNumber + 1n,\n toBlock: blockNumber,\n });\n }\n else {\n logs = [];\n }\n previousBlockNumber = blockNumber;\n }\n if (logs.length === 0)\n return;\n if (batch)\n emit.onLogs(logs);\n else\n for (const log of logs)\n emit.onLogs([log]);\n }\n catch (err) {\n // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.\n // Reinitalize the filter when this occurs\n if (filter && err instanceof InvalidInputRpcError)\n initialized = false;\n emit.onError?.(err);\n }\n }, {\n emitOnBegin: true,\n interval: pollingInterval,\n });\n return async () => {\n if (filter)\n await getAction(client, uninstallFilter, 'uninstallFilter')({ filter });\n unwatch();\n };\n });\n };\n const subscribeEvent = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const events_ = events ?? (event ? [event] : undefined);\n let topics = [];\n if (events_) {\n topics = [\n events_.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args,\n })),\n ];\n if (event)\n topics = topics[0];\n }\n const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({\n params: ['logs', { address, topics }],\n onData(data) {\n if (!active)\n return;\n const log = data.result;\n try {\n const { eventName, args } = decodeEventLog({\n abi: events_ ?? [],\n data: log.data,\n topics: log.topics,\n strict,\n });\n const formatted = formatLog(log, { args, eventName });\n onLogs([formatted]);\n }\n catch (err) {\n let eventName;\n let isUnnamed;\n if (err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict_)\n return;\n eventName = err.abiItem.name;\n isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name));\n }\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n const formatted = formatLog(log, {\n args: isUnnamed ? [] : {},\n eventName,\n });\n onLogs([formatted]);\n }\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return unsubscribe;\n };\n return enablePolling ? pollEvent() : subscribeEvent();\n}\n//# sourceMappingURL=watchEvent.js.map","import { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { createPendingTransactionFilter } from './createPendingTransactionFilter.js';\nimport { getFilterChanges } from './getFilterChanges.js';\nimport { uninstallFilter } from './uninstallFilter.js';\n/**\n * Watches and returns pending transaction hashes.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchPendingTransactions\n * - JSON-RPC Methods:\n * - When `poll: true`\n * - Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter.\n * - Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newPendingTransactions\"` event.\n *\n * This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions).\n *\n * @param client - Client to use\n * @param parameters - {@link WatchPendingTransactionsParameters}\n * @returns A function that can be invoked to stop watching for new pending transaction hashes. {@link WatchPendingTransactionsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchPendingTransactions } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = await watchPendingTransactions(client, {\n * onTransactions: (hashes) => console.log(hashes),\n * })\n */\nexport function watchPendingTransactions(client, { batch = true, onError, onTransactions, poll: poll_, pollingInterval = client.pollingInterval, }) {\n const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';\n const pollPendingTransactions = () => {\n const observerId = stringify([\n 'watchPendingTransactions',\n client.uid,\n batch,\n pollingInterval,\n ]);\n return observe(observerId, { onTransactions, onError }, (emit) => {\n let filter;\n const unwatch = poll(async () => {\n try {\n if (!filter) {\n try {\n filter = await getAction(client, createPendingTransactionFilter, 'createPendingTransactionFilter')({});\n return;\n }\n catch (err) {\n unwatch();\n throw err;\n }\n }\n const hashes = await getAction(client, getFilterChanges, 'getFilterChanges')({ filter });\n if (hashes.length === 0)\n return;\n if (batch)\n emit.onTransactions(hashes);\n else\n for (const hash of hashes)\n emit.onTransactions([hash]);\n }\n catch (err) {\n emit.onError?.(err);\n }\n }, {\n emitOnBegin: true,\n interval: pollingInterval,\n });\n return async () => {\n if (filter)\n await getAction(client, uninstallFilter, 'uninstallFilter')({ filter });\n unwatch();\n };\n });\n };\n const subscribePendingTransactions = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({\n params: ['newPendingTransactions'],\n onData(data) {\n if (!active)\n return;\n const transaction = data.result;\n onTransactions([transaction]);\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return unsubscribe;\n };\n return enablePolling\n ? pollPendingTransactions()\n : subscribePendingTransactions();\n}\n//# sourceMappingURL=watchPendingTransactions.js.map","import { getEnsAddress, } from '../../actions/ens/getEnsAddress.js';\nimport { getEnsAvatar, } from '../../actions/ens/getEnsAvatar.js';\nimport { getEnsName, } from '../../actions/ens/getEnsName.js';\nimport { getEnsResolver, } from '../../actions/ens/getEnsResolver.js';\nimport { getEnsText, } from '../../actions/ens/getEnsText.js';\nimport { call, } from '../../actions/public/call.js';\nimport { createBlockFilter, } from '../../actions/public/createBlockFilter.js';\nimport { createContractEventFilter, } from '../../actions/public/createContractEventFilter.js';\nimport { createEventFilter, } from '../../actions/public/createEventFilter.js';\nimport { createPendingTransactionFilter, } from '../../actions/public/createPendingTransactionFilter.js';\nimport { estimateContractGas, } from '../../actions/public/estimateContractGas.js';\nimport { estimateFeesPerGas, } from '../../actions/public/estimateFeesPerGas.js';\nimport { estimateGas, } from '../../actions/public/estimateGas.js';\nimport { estimateMaxPriorityFeePerGas, } from '../../actions/public/estimateMaxPriorityFeePerGas.js';\nimport { getBalance, } from '../../actions/public/getBalance.js';\nimport { getBlock, } from '../../actions/public/getBlock.js';\nimport { getBlockNumber, } from '../../actions/public/getBlockNumber.js';\nimport { getBlockTransactionCount, } from '../../actions/public/getBlockTransactionCount.js';\nimport { getBytecode, } from '../../actions/public/getBytecode.js';\nimport { getChainId, } from '../../actions/public/getChainId.js';\nimport { getContractEvents, } from '../../actions/public/getContractEvents.js';\nimport { getFeeHistory, } from '../../actions/public/getFeeHistory.js';\nimport { getFilterChanges, } from '../../actions/public/getFilterChanges.js';\nimport { getFilterLogs, } from '../../actions/public/getFilterLogs.js';\nimport { getGasPrice, } from '../../actions/public/getGasPrice.js';\nimport { getLogs, } from '../../actions/public/getLogs.js';\nimport { getProof, } from '../../actions/public/getProof.js';\nimport { getStorageAt, } from '../../actions/public/getStorageAt.js';\nimport { getTransaction, } from '../../actions/public/getTransaction.js';\nimport { getTransactionConfirmations, } from '../../actions/public/getTransactionConfirmations.js';\nimport { getTransactionCount, } from '../../actions/public/getTransactionCount.js';\nimport { getTransactionReceipt, } from '../../actions/public/getTransactionReceipt.js';\nimport { multicall, } from '../../actions/public/multicall.js';\nimport { readContract, } from '../../actions/public/readContract.js';\nimport { simulateContract, } from '../../actions/public/simulateContract.js';\nimport { uninstallFilter, } from '../../actions/public/uninstallFilter.js';\nimport { verifyMessage, } from '../../actions/public/verifyMessage.js';\nimport { verifyTypedData, } from '../../actions/public/verifyTypedData.js';\nimport { waitForTransactionReceipt, } from '../../actions/public/waitForTransactionReceipt.js';\nimport { watchBlockNumber, } from '../../actions/public/watchBlockNumber.js';\nimport { watchBlocks, } from '../../actions/public/watchBlocks.js';\nimport { watchContractEvent, } from '../../actions/public/watchContractEvent.js';\nimport { watchEvent, } from '../../actions/public/watchEvent.js';\nimport { watchPendingTransactions, } from '../../actions/public/watchPendingTransactions.js';\nimport { prepareTransactionRequest, } from '../../actions/wallet/prepareTransactionRequest.js';\nimport { sendRawTransaction, } from '../../actions/wallet/sendRawTransaction.js';\nexport function publicActions(client) {\n return {\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getContractEvents: (args) => getContractEvents(client, args),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n estimateFeesPerGas: (args) => estimateFeesPerGas(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getProof: (args) => getProof(client, args),\n estimateMaxPriorityFeePerGas: (args) => estimateMaxPriorityFeePerGas(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) => getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n prepareTransactionRequest: (args) => prepareTransactionRequest(client, args),\n readContract: (args) => readContract(client, args),\n sendRawTransaction: (args) => sendRawTransaction(client, args),\n simulateContract: (args) => simulateContract(client, args),\n verifyMessage: (args) => verifyMessage(client, args),\n verifyTypedData: (args) => verifyTypedData(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n };\n}\n//# sourceMappingURL=public.js.map","import { createClient, } from './createClient.js';\nimport { publicActions } from './decorators/public.js';\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://viem.sh/docs/clients/public\n *\n * A Public Client is an interface to \"public\" [JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Public Client. {@link PublicClient}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n */\nexport function createPublicClient(parameters) {\n const { key = 'public', name = 'Public Client' } = parameters;\n const client = createClient({\n ...parameters,\n key,\n name,\n type: 'publicClient',\n });\n return client.extend(publicActions);\n}\n//# sourceMappingURL=createPublicClient.js.map","import { checksumAddress, } from '../../utils/address/getAddress.js';\n/**\n * Returns a list of account addresses owned by the wallet or client.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getAddresses\n * - JSON-RPC Methods: [`eth_accounts`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts)\n *\n * @param client - Client to use\n * @returns List of account addresses owned by the wallet or client. {@link GetAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getAddresses } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await getAddresses(client)\n */\nexport async function getAddresses(client) {\n if (client.account?.type === 'local')\n return [client.account.address];\n const addresses = await client.request({ method: 'eth_accounts' });\n return addresses.map((address) => checksumAddress(address));\n}\n//# sourceMappingURL=getAddresses.js.map","/**\n * Gets the wallets current permissions.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getPermissions\n * - JSON-RPC Methods: [`wallet_getPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @param client - Client to use\n * @returns The wallet permissions. {@link GetPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getPermissions } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await getPermissions(client)\n */\nexport async function getPermissions(client) {\n const permissions = await client.request({ method: 'wallet_getPermissions' });\n return permissions;\n}\n//# sourceMappingURL=getPermissions.js.map","import { getAddress } from '../../utils/address/getAddress.js';\n/**\n * Requests a list of accounts managed by a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestAddresses\n * - JSON-RPC Methods: [`eth_requestAccounts`](https://eips.ethereum.org/EIPS/eip-1102)\n *\n * Sends a request to the wallet, asking for permission to access the user's accounts. After the user accepts the request, it will return a list of accounts (addresses).\n *\n * This API can be useful for dapps that need to access the user's accounts in order to execute transactions or interact with smart contracts.\n *\n * @param client - Client to use\n * @returns List of accounts managed by a wallet {@link RequestAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { requestAddresses } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await requestAddresses(client)\n */\nexport async function requestAddresses(client) {\n const addresses = await client.request({ method: 'eth_requestAccounts' }, { retryCount: 0 });\n return addresses.map((address) => getAddress(address));\n}\n//# sourceMappingURL=requestAddresses.js.map","/**\n * Requests permissions for a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestPermissions\n * - JSON-RPC Methods: [`wallet_requestPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @param client - Client to use\n * @param parameters - {@link RequestPermissionsParameters}\n * @returns The wallet permissions. {@link RequestPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { requestPermissions } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await requestPermissions(client, {\n * eth_accounts: {}\n * })\n */\nexport async function requestPermissions(client, permissions) {\n return client.request({\n method: 'wallet_requestPermissions',\n params: [permissions],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=requestPermissions.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../errors/account.js';\nimport { stringToHex, toHex, } from '../../utils/encoding/toHex.js';\n/**\n * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signMessage\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data#personal-sign)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * With the calculated signature, you can:\n * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage) to verify the signature,\n * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress) to recover the signing address from a signature.\n *\n * @param client - Client to use\n * @param parameters - {@link SignMessageParameters}\n * @returns The signed message. {@link SignMessageReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * message: 'hello world',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, custom } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n * message: 'hello world',\n * })\n */\nexport async function signMessage(client, { account: account_ = client.account, message, }) {\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signMessage',\n });\n const account = parseAccount(account_);\n if (account.type === 'local')\n return account.signMessage({ message });\n const message_ = (() => {\n if (typeof message === 'string')\n return stringToHex(message);\n if (message.raw instanceof Uint8Array)\n return toHex(message.raw);\n return message.raw;\n })();\n return client.request({\n method: 'personal_sign',\n params: [message_, account.address],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=signMessage.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../errors/account.js';\nimport {} from '../../types/rpc.js';\nimport { assertCurrentChain, } from '../../utils/chain/assertCurrentChain.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { numberToHex } from '../../utils/index.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\nimport { getChainId } from '../public/getChainId.js';\n/**\n * Signs a transaction.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTransaction\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param args - {@link SignTransactionParameters}\n * @returns The signed serialized tranasction. {@link SignTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTransaction } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTransaction(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTransaction } from 'viem/actions'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTransaction(client, {\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n */\nexport async function signTransaction(client, args) {\n const { account: account_ = client.account, chain = client.chain, ...transaction } = args;\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signTransaction',\n });\n const account = parseAccount(account_);\n assertRequest({\n account,\n ...args,\n });\n const chainId = await getAction(client, getChainId, 'getChainId')({});\n if (chain !== null)\n assertCurrentChain({\n currentChainId: chainId,\n chain,\n });\n const formatters = chain?.formatters || client.chain?.formatters;\n const format = formatters?.transactionRequest?.format || formatTransactionRequest;\n if (account.type === 'local')\n return account.signTransaction({\n ...transaction,\n chainId,\n }, { serializer: client.chain?.serializers?.transaction });\n return await client.request({\n method: 'eth_signTransaction',\n params: [\n {\n ...format(transaction),\n chainId: numberToHex(chainId),\n from: account.address,\n },\n ],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=signTransaction.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError, } from '../../errors/account.js';\nimport { isHex } from '../../utils/data/isHex.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getTypesForEIP712Domain, validateTypedData, } from '../../utils/typedData.js';\n/**\n * Signs typed data and calculates an Ethereum-specific signature in [https://eips.ethereum.org/EIPS/eip-712](https://eips.ethereum.org/EIPS/eip-712): `sign(keccak256(\"\\x19\\x01\" ‖ domainSeparator ‖ hashStruct(message)))`\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTypedData\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data#signtypeddata-v4)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param client - Client to use\n * @param parameters - {@link SignTypedDataParameters}\n * @returns The signed data. {@link SignTypedDataReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTypedData(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const signature = await signTypedData(client, {\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n */\nexport async function signTypedData(client, parameters) {\n const { account: account_ = client.account, domain, message, primaryType, } = parameters;\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signTypedData',\n });\n const account = parseAccount(account_);\n const types = {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n ...parameters.types,\n };\n // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n // as we can't statically check this with TypeScript.\n validateTypedData({ domain, message, primaryType, types });\n if (account.type === 'local')\n return account.signTypedData({ domain, message, primaryType, types });\n const typedData = stringify({ domain: domain ?? {}, message, primaryType, types }, (_, value) => (isHex(value) ? value.toLowerCase() : value));\n return client.request({\n method: 'eth_signTypedData_v4',\n params: [account.address, typedData],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=signTypedData.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Switch the target chain in a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/switchChain\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-3326)\n *\n * @param client - Client to use\n * @param parameters - {@link SwitchChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet, optimism } from 'viem/chains'\n * import { switchChain } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * await switchChain(client, { id: optimism.id })\n */\nexport async function switchChain(client, { id }) {\n await client.request({\n method: 'wallet_switchEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n },\n ],\n }, { retryCount: 0 });\n}\n//# sourceMappingURL=switchChain.js.map","/**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/watchAsset\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-747)\n *\n * @param client - Client to use\n * @param parameters - {@link WatchAssetParameters}\n * @returns Boolean indicating if the token was successfully added. {@link WatchAssetReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchAsset } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const success = await watchAsset(client, {\n * type: 'ERC20',\n * options: {\n * address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * decimals: 18,\n * symbol: 'WETH',\n * },\n * })\n */\nexport async function watchAsset(client, params) {\n const added = await client.request({\n method: 'wallet_watchAsset',\n params,\n }, { retryCount: 0 });\n return added;\n}\n//# sourceMappingURL=watchAsset.js.map","import { getChainId, } from '../../actions/public/getChainId.js';\nimport { addChain, } from '../../actions/wallet/addChain.js';\nimport { deployContract, } from '../../actions/wallet/deployContract.js';\nimport { getAddresses, } from '../../actions/wallet/getAddresses.js';\nimport { getPermissions, } from '../../actions/wallet/getPermissions.js';\nimport { prepareTransactionRequest, } from '../../actions/wallet/prepareTransactionRequest.js';\nimport { requestAddresses, } from '../../actions/wallet/requestAddresses.js';\nimport { requestPermissions, } from '../../actions/wallet/requestPermissions.js';\nimport { sendRawTransaction, } from '../../actions/wallet/sendRawTransaction.js';\nimport { sendTransaction, } from '../../actions/wallet/sendTransaction.js';\nimport { signMessage, } from '../../actions/wallet/signMessage.js';\nimport { signTransaction, } from '../../actions/wallet/signTransaction.js';\nimport { signTypedData, } from '../../actions/wallet/signTypedData.js';\nimport { switchChain, } from '../../actions/wallet/switchChain.js';\nimport { watchAsset, } from '../../actions/wallet/watchAsset.js';\nimport { writeContract, } from '../../actions/wallet/writeContract.js';\nimport {} from '../../types/contract.js';\nexport function walletActions(client) {\n return {\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n prepareTransactionRequest: (args) => prepareTransactionRequest(client, args),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendRawTransaction: (args) => sendRawTransaction(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTransaction: (args) => signTransaction(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n };\n}\n//# sourceMappingURL=wallet.js.map","import { AbiEventSignatureNotFoundError, DecodeLogDataMismatch, DecodeLogTopicsMismatch, } from '../../index.js';\nimport { decodeEventLog, } from './decodeEventLog.js';\n/**\n * Extracts & decodes logs matching the provided signature(s) (`abi` + optional `eventName`)\n * from a set of opaque logs.\n *\n * @param parameters - {@link ParseEventLogsParameters}\n * @returns The logs. {@link ParseEventLogsReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { parseEventLogs } from 'viem/op-stack'\n *\n * const client = createClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const receipt = await getTransactionReceipt(client, {\n * hash: '0xec23b2ba4bc59ba61554507c1b1bc91649e6586eb2dd00c728e8ed0db8bb37ea',\n * })\n *\n * const logs = parseEventLogs({ logs: receipt.logs })\n * // [{ args: { ... }, eventName: 'TransactionDeposited', ... }, ...]\n */\nexport function parseEventLogs({ abi, eventName, logs, strict = true, }) {\n return logs\n .map((log) => {\n try {\n const event = decodeEventLog({\n ...log,\n abi,\n strict,\n });\n if (eventName && !eventName.includes(event.eventName))\n return null;\n return { ...event, ...log };\n }\n catch (err) {\n let eventName;\n let isUnnamed;\n if (err instanceof AbiEventSignatureNotFoundError)\n return null;\n if (err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict)\n return null;\n eventName = err.abiItem.name;\n isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name));\n }\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n return { ...log, args: isUnnamed ? [] : {}, eventName };\n }\n })\n .filter(Boolean);\n}\n//# sourceMappingURL=parseEventLogs.js.map","import {} from '../../utils/abi/decodeEventLog.js';\nimport { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatLog, } from '../../utils/formatters/log.js';\n/**\n * Returns a list of event logs matching the provided parameters.\n *\n * - Docs: https://viem.sh/docs/actions/public/getLogs\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/filters-and-logs/event-logs\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param client - Client to use\n * @param parameters - {@link GetLogsParameters}\n * @returns A list of event logs. {@link GetLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getLogs } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await getLogs(client)\n */\nexport async function getLogs(client, { address, blockHash, fromBlock, toBlock, event, events: events_, args, strict: strict_, } = {}) {\n const strict = strict_ ?? false;\n const events = events_ ?? (event ? [event] : undefined);\n let topics = [];\n if (events) {\n topics = [\n events.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args,\n })),\n ];\n if (event)\n topics = topics[0];\n }\n let logs;\n if (blockHash) {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [{ address, topics, blockHash }],\n });\n }\n else {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [\n {\n address,\n topics,\n fromBlock: typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n },\n ],\n });\n }\n const formattedLogs = logs.map((log) => formatLog(log));\n if (!events)\n return formattedLogs;\n return parseEventLogs({\n abi: events,\n logs: formattedLogs,\n strict,\n });\n}\n//# sourceMappingURL=getLogs.js.map","import { getAbiItem, } from '../../utils/abi/getAbiItem.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getLogs, } from './getLogs.js';\n/**\n * Returns a list of event logs emitted by a contract.\n *\n * - Docs: https://viem.sh/docs/actions/public/getContractEvents\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param client - Client to use\n * @param parameters - {@link GetContractEventsParameters}\n * @returns A list of event logs. {@link GetContractEventsReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getContractEvents } from 'viem/public'\n * import { wagmiAbi } from './abi'\n *\n * const client = createClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await getContractEvents(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: wagmiAbi,\n * eventName: 'Transfer'\n * })\n */\nexport async function getContractEvents(client, parameters) {\n const { abi, address, args, blockHash, eventName, fromBlock, toBlock, strict, } = parameters;\n const event = eventName\n ? getAbiItem({ abi, name: eventName })\n : undefined;\n const events = !event\n ? abi.filter((x) => x.type === 'event')\n : undefined;\n return getAction(client, getLogs, 'getLogs')({\n address,\n args,\n blockHash,\n event,\n events,\n fromBlock,\n toBlock,\n strict,\n });\n}\n//# sourceMappingURL=getContractEvents.js.map","/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction(client, actionFn, \n// Some minifiers drop `Function.prototype.name`, or replace it with short letters,\n// meaning that `actionFn.name` will not always work. For that case, the consumer\n// needs to pass the name explicitly.\nname) {\n const action_implicit = client[actionFn.name];\n if (typeof action_implicit === 'function')\n return action_implicit;\n const action_explicit = client[name];\n if (typeof action_explicit === 'function')\n return action_explicit;\n return (params) => actionFn(client, params);\n}\n//# sourceMappingURL=getAction.js.map","export const version = '2.14.4';\n//# sourceMappingURL=version.js.map","import { version } from '../version.js';\nexport const getVersion = () => `@wagmi/core@${version}`;\n//# sourceMappingURL=getVersion.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseError_instances, _BaseError_walk;\nimport { getVersion } from '../utils/getVersion.js';\nexport class BaseError extends Error {\n get docsBaseUrl() {\n return 'https://wagmi.sh/core';\n }\n get version() {\n return getVersion();\n }\n constructor(shortMessage, options = {}) {\n super();\n _BaseError_instances.add(this);\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'WagmiCoreError'\n });\n const details = options.cause instanceof BaseError\n ? options.cause.details\n : options.cause?.message\n ? options.cause.message\n : options.details;\n const docsPath = options.cause instanceof BaseError\n ? options.cause.docsPath || options.docsPath\n : options.docsPath;\n this.message = [\n shortMessage || 'An error occurred.',\n '',\n ...(options.metaMessages ? [...options.metaMessages, ''] : []),\n ...(docsPath\n ? [\n `Docs: ${this.docsBaseUrl}${docsPath}.html${options.docsSlug ? `#${options.docsSlug}` : ''}`,\n ]\n : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: ${this.version}`,\n ].join('\\n');\n if (options.cause)\n this.cause = options.cause;\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = options.metaMessages;\n this.shortMessage = shortMessage;\n }\n walk(fn) {\n return __classPrivateFieldGet(this, _BaseError_instances, \"m\", _BaseError_walk).call(this, this, fn);\n }\n}\n_BaseError_instances = new WeakSet(), _BaseError_walk = function _BaseError_walk(err, fn) {\n if (fn?.(err))\n return err;\n if (err.cause)\n return __classPrivateFieldGet(this, _BaseError_instances, \"m\", _BaseError_walk).call(this, err.cause, fn);\n return err;\n};\n//# sourceMappingURL=base.js.map","import { BaseError } from './base.js';\nexport class ChainNotConfiguredError extends BaseError {\n constructor() {\n super('Chain not configured.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ChainNotConfiguredError'\n });\n }\n}\nexport class ConnectorAlreadyConnectedError extends BaseError {\n constructor() {\n super('Connector already connected.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ConnectorAlreadyConnectedError'\n });\n }\n}\nexport class ConnectorNotConnectedError extends BaseError {\n constructor() {\n super('Connector not connected.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ConnectorNotConnectedError'\n });\n }\n}\nexport class ConnectorNotFoundError extends BaseError {\n constructor() {\n super('Connector not found.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ConnectorNotFoundError'\n });\n }\n}\nexport class ConnectorAccountNotFoundError extends BaseError {\n constructor({ address, connector, }) {\n super(`Account \"${address}\" not found for connector \"${connector.name}\".`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ConnectorAccountNotFoundError'\n });\n }\n}\nexport class ConnectorChainMismatchError extends BaseError {\n constructor({ connectionChainId, connectorChainId, }) {\n super(`The current chain of the connector (id: ${connectorChainId}) does not match the connection's chain (id: ${connectionChainId}).`, {\n metaMessages: [\n `Current Chain ID: ${connectorChainId}`,\n `Expected Chain ID: ${connectionChainId}`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ConnectorChainMismatchError'\n });\n }\n}\nexport class ConnectorUnavailableReconnectingError extends BaseError {\n constructor({ connector }) {\n super(`Connector \"${connector.name}\" unavailable while reconnecting.`, {\n details: [\n 'During the reconnection step, the only connector methods guaranteed to be available are: `id`, `name`, `type`, `uuid`.',\n 'All other methods are not guaranteed to be available until reconnection completes and connectors are fully restored.',\n 'This error commonly occurs for connectors that asynchronously inject after reconnection has already started.',\n ].join(' '),\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ConnectorUnavailableReconnectingError'\n });\n }\n}\n//# sourceMappingURL=config.js.map","import { ConnectorAlreadyConnectedError, } from '../errors/config.js';\n/** https://wagmi.sh/core/api/actions/connect */\nexport async function connect(config, parameters) {\n // \"Register\" connector if not already created\n let connector;\n if (typeof parameters.connector === 'function') {\n connector = config._internal.connectors.setup(parameters.connector);\n }\n else\n connector = parameters.connector;\n // Check if connector is already connected\n if (connector.uid === config.state.current)\n throw new ConnectorAlreadyConnectedError();\n try {\n config.setState((x) => ({ ...x, status: 'connecting' }));\n connector.emitter.emit('message', { type: 'connecting' });\n const data = await connector.connect({ chainId: parameters.chainId });\n const accounts = data.accounts;\n connector.emitter.off('connect', config._internal.events.connect);\n connector.emitter.on('change', config._internal.events.change);\n connector.emitter.on('disconnect', config._internal.events.disconnect);\n await config.storage?.setItem('recentConnectorId', connector.id);\n config.setState((x) => ({\n ...x,\n connections: new Map(x.connections).set(connector.uid, {\n accounts,\n chainId: data.chainId,\n connector: connector,\n }),\n current: connector.uid,\n status: 'connected',\n }));\n return { accounts, chainId: data.chainId };\n }\n catch (error) {\n config.setState((x) => ({\n ...x,\n // Keep existing connector connected in case of error\n status: x.current ? 'connected' : 'disconnected',\n }));\n throw error;\n }\n}\n//# sourceMappingURL=connect.js.map","import { createClient, custom, } from 'viem';\nimport { getAddress, parseAccount } from 'viem/utils';\nimport { ConnectorAccountNotFoundError, ConnectorChainMismatchError, ConnectorNotConnectedError, ConnectorUnavailableReconnectingError, } from '../errors/config.js';\n/** https://wagmi.sh/core/api/actions/getConnectorClient */\nexport async function getConnectorClient(config, parameters = {}) {\n // Get connection\n let connection;\n if (parameters.connector) {\n const { connector } = parameters;\n if (config.state.status === 'reconnecting' &&\n !connector.getAccounts &&\n !connector.getChainId)\n throw new ConnectorUnavailableReconnectingError({ connector });\n const [accounts, chainId] = await Promise.all([\n connector.getAccounts(),\n connector.getChainId(),\n ]);\n connection = {\n accounts: accounts,\n chainId,\n connector,\n };\n }\n else\n connection = config.state.connections.get(config.state.current);\n if (!connection)\n throw new ConnectorNotConnectedError();\n const chainId = parameters.chainId ?? connection.chainId;\n // Check connector using same chainId as connection\n const connectorChainId = await connection.connector.getChainId();\n if (connectorChainId !== connection.chainId)\n throw new ConnectorChainMismatchError({\n connectionChainId: connection.chainId,\n connectorChainId,\n });\n const connector = connection.connector;\n if (connector.getClient)\n return connector.getClient({ chainId });\n // Default using `custom` transport\n const account = parseAccount(parameters.account ?? connection.accounts[0]);\n account.address = getAddress(account.address); // TODO: Checksum address as part of `parseAccount`?\n // If account was provided, check that it exists on the connector\n if (parameters.account &&\n !connection.accounts.some((x) => x.toLowerCase() === account.address.toLowerCase()))\n throw new ConnectorAccountNotFoundError({\n address: account.address,\n connector,\n });\n const chain = config.chains.find((chain) => chain.id === chainId);\n const provider = (await connection.connector.getProvider({ chainId }));\n return createClient({\n account,\n chain,\n name: 'Connector Client',\n transport: (opts) => custom(provider)({ ...opts, retryCount: 0 }),\n });\n}\n//# sourceMappingURL=getConnectorClient.js.map","/** https://wagmi.sh/core/api/actions/disconnect */\nexport async function disconnect(config, parameters = {}) {\n let connector;\n if (parameters.connector)\n connector = parameters.connector;\n else {\n const { connections, current } = config.state;\n const connection = connections.get(current);\n connector = connection?.connector;\n }\n const connections = config.state.connections;\n if (connector) {\n await connector.disconnect();\n connector.emitter.off('change', config._internal.events.change);\n connector.emitter.off('disconnect', config._internal.events.disconnect);\n connector.emitter.on('connect', config._internal.events.connect);\n connections.delete(connector.uid);\n }\n config.setState((x) => {\n // if no connections exist, move to disconnected state\n if (connections.size === 0)\n return {\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n };\n // switch over to another connection\n const nextConnection = connections.values().next().value;\n return {\n ...x,\n connections: new Map(connections),\n current: nextConnection.connector.uid,\n };\n });\n // Set recent connector if exists\n {\n const current = config.state.current;\n if (!current)\n return;\n const connector = config.state.connections.get(current)?.connector;\n if (!connector)\n return;\n await config.storage?.setItem('recentConnectorId', connector.id);\n }\n}\n//# sourceMappingURL=disconnect.js.map","import { weiUnits } from 'viem';\nexport function getUnit(unit) {\n if (typeof unit === 'number')\n return unit;\n if (unit === 'wei')\n return 0;\n return Math.abs(weiUnits[unit]);\n}\n//# sourceMappingURL=getUnit.js.map","/** https://wagmi.sh/core/api/actions/getAccount */\nexport function getAccount(config) {\n const uid = config.state.current;\n const connection = config.state.connections.get(uid);\n const addresses = connection?.accounts;\n const address = addresses?.[0];\n const chain = config.chains.find((chain) => chain.id === connection?.chainId);\n const status = config.state.status;\n switch (status) {\n case 'connected':\n return {\n address: address,\n addresses: addresses,\n chain,\n chainId: connection?.chainId,\n connector: connection?.connector,\n isConnected: true,\n isConnecting: false,\n isDisconnected: false,\n isReconnecting: false,\n status,\n };\n case 'reconnecting':\n return {\n address,\n addresses,\n chain,\n chainId: connection?.chainId,\n connector: connection?.connector,\n isConnected: !!address,\n isConnecting: false,\n isDisconnected: false,\n isReconnecting: true,\n status,\n };\n case 'connecting':\n return {\n address,\n addresses,\n chain,\n chainId: connection?.chainId,\n connector: connection?.connector,\n isConnected: false,\n isConnecting: true,\n isDisconnected: false,\n isReconnecting: false,\n status,\n };\n case 'disconnected':\n return {\n address: undefined,\n addresses: undefined,\n chain: undefined,\n chainId: undefined,\n connector: undefined,\n isConnected: false,\n isConnecting: false,\n isDisconnected: true,\n isReconnecting: false,\n status,\n };\n }\n}\n//# sourceMappingURL=getAccount.js.map","import { multicall as viem_multicall } from 'viem/actions';\nimport { getAction } from '../utils/getAction.js';\nexport async function multicall(config, parameters) {\n const { allowFailure = true, chainId, contracts, ...rest } = parameters;\n const client = config.getClient({ chainId });\n const action = getAction(client, viem_multicall, 'multicall');\n return action({\n allowFailure,\n contracts,\n ...rest,\n });\n}\n//# sourceMappingURL=multicall.js.map","import { readContract as viem_readContract, } from 'viem/actions';\nimport { getAction } from '../utils/getAction.js';\n/** https://wagmi.sh/core/api/actions/readContract */\nexport function readContract(config, parameters) {\n const { chainId, ...rest } = parameters;\n const client = config.getClient({ chainId });\n const action = getAction(client, viem_readContract, 'readContract');\n return action(rest);\n}\n//# sourceMappingURL=readContract.js.map","import { ContractFunctionExecutionError } from 'viem';\nimport { multicall } from './multicall.js';\nimport { readContract } from './readContract.js';\nexport async function readContracts(config, parameters) {\n const { allowFailure = true, blockNumber, blockTag, ...rest } = parameters;\n const contracts = parameters.contracts;\n try {\n const contractsByChainId = {};\n for (const [index, contract] of contracts.entries()) {\n const chainId = contract.chainId ?? config.state.chainId;\n if (!contractsByChainId[chainId])\n contractsByChainId[chainId] = [];\n contractsByChainId[chainId]?.push({ contract, index });\n }\n const promises = () => Object.entries(contractsByChainId).map(([chainId, contracts]) => multicall(config, {\n ...rest,\n allowFailure,\n blockNumber,\n blockTag,\n chainId: Number.parseInt(chainId),\n contracts: contracts.map(({ contract }) => contract),\n }));\n const multicallResults = (await Promise.all(promises())).flat();\n // Reorder the contract results back to the order they were\n // provided in.\n const resultIndexes = Object.values(contractsByChainId).flatMap((contracts) => contracts.map(({ index }) => index));\n return multicallResults.reduce((results, result, index) => {\n if (results)\n results[resultIndexes[index]] = result;\n return results;\n }, []);\n }\n catch (error) {\n if (error instanceof ContractFunctionExecutionError)\n throw error;\n const promises = () => contracts.map((contract) => readContract(config, { ...contract, blockNumber, blockTag }));\n if (allowFailure)\n return (await Promise.allSettled(promises())).map((result) => {\n if (result.status === 'fulfilled')\n return { result: result.value, status: 'success' };\n return { error: result.reason, result: undefined, status: 'failure' };\n });\n return (await Promise.all(promises()));\n }\n}\n//# sourceMappingURL=readContracts.js.map","import { formatUnits, hexToString, trim } from 'viem';\nimport { getBalance as viem_getBalance, } from 'viem/actions';\nimport { getAction } from '../utils/getAction.js';\nimport { getUnit } from '../utils/getUnit.js';\nimport { readContracts } from './readContracts.js';\n/** https://wagmi.sh/core/api/actions/getBalance */\nexport async function getBalance(config, parameters) {\n const { address, blockNumber, blockTag, chainId, token: tokenAddress, unit = 'ether', } = parameters;\n if (tokenAddress) {\n try {\n return await getTokenBalance(config, {\n balanceAddress: address,\n chainId,\n symbolType: 'string',\n tokenAddress,\n });\n }\n catch (error) {\n // In the chance that there is an error upon decoding the contract result,\n // it could be likely that the contract data is represented as bytes32 instead\n // of a string.\n if (error.name ===\n 'ContractFunctionExecutionError') {\n const balance = await getTokenBalance(config, {\n balanceAddress: address,\n chainId,\n symbolType: 'bytes32',\n tokenAddress,\n });\n const symbol = hexToString(trim(balance.symbol, { dir: 'right' }));\n return { ...balance, symbol };\n }\n throw error;\n }\n }\n const client = config.getClient({ chainId });\n const action = getAction(client, viem_getBalance, 'getBalance');\n const value = await action(blockNumber ? { address, blockNumber } : { address, blockTag });\n const chain = config.chains.find((x) => x.id === chainId) ?? client.chain;\n return {\n decimals: chain.nativeCurrency.decimals,\n formatted: formatUnits(value, getUnit(unit)),\n symbol: chain.nativeCurrency.symbol,\n value,\n };\n}\nasync function getTokenBalance(config, parameters) {\n const { balanceAddress, chainId, symbolType, tokenAddress, unit } = parameters;\n const contract = {\n abi: [\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [{ type: 'address' }],\n outputs: [{ type: 'uint256' }],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: symbolType }],\n },\n ],\n address: tokenAddress,\n };\n const [value, decimals, symbol] = await readContracts(config, {\n allowFailure: false,\n contracts: [\n {\n ...contract,\n functionName: 'balanceOf',\n args: [balanceAddress],\n chainId,\n },\n { ...contract, functionName: 'decimals', chainId },\n { ...contract, functionName: 'symbol', chainId },\n ],\n });\n const formatted = formatUnits(value ?? '0', getUnit(unit ?? decimals));\n return { decimals, formatted, symbol, value };\n}\n//# sourceMappingURL=getBalance.js.map","/** https://wagmi.sh/core/api/actions/getChainId */\nexport function getChainId(config) {\n return config.state.chainId;\n}\n//# sourceMappingURL=getChainId.js.map","/** Forked from https://github.com/epoberezkin/fast-deep-equal */\nexport function deepEqual(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor)\n return false;\n let length;\n let i;\n if (Array.isArray(a) && Array.isArray(b)) {\n length = a.length;\n if (length !== b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!deepEqual(a[i], b[i]))\n return false;\n return true;\n }\n if (a.valueOf !== Object.prototype.valueOf)\n return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString)\n return a.toString() === b.toString();\n const keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key && !deepEqual(a[key], b[key]))\n return false;\n }\n return true;\n }\n // true if both NaN, false otherwise\n // biome-ignore lint/suspicious/noSelfCompare: \n return a !== a && b !== b;\n}\n//# sourceMappingURL=deepEqual.js.map","import { deepEqual } from '../utils/deepEqual.js';\nlet previousChains = [];\n/** https://wagmi.sh/core/api/actions/getChains */\nexport function getChains(config) {\n const chains = config.chains;\n if (deepEqual(previousChains, chains))\n return previousChains;\n previousChains = chains;\n return chains;\n}\n//# sourceMappingURL=getChains.js.map","export function getClient(config, parameters = {}) {\n let client = undefined;\n try {\n client = config.getClient(parameters);\n }\n catch { }\n return client;\n}\n//# sourceMappingURL=getClient.js.map","import { deepEqual } from '../utils/deepEqual.js';\nlet previousConnections = [];\n/** https://wagmi.sh/core/api/actions/getConnections */\nexport function getConnections(config) {\n const connections = [...config.state.connections.values()];\n if (config.state.status === 'reconnecting')\n return previousConnections;\n if (deepEqual(previousConnections, connections))\n return previousConnections;\n previousConnections = connections;\n return connections;\n}\n//# sourceMappingURL=getConnections.js.map","import { deepEqual } from '../utils/deepEqual.js';\nlet previousConnectors = [];\n/** https://wagmi.sh/core/api/actions/getConnectors */\nexport function getConnectors(config) {\n const connectors = config.connectors;\n if (deepEqual(previousConnectors, connectors))\n return previousConnectors;\n previousConnectors = connectors;\n return connectors;\n}\n//# sourceMappingURL=getConnectors.js.map","import { getEnsAvatar as viem_getEnsAvatar, } from 'viem/actions';\nimport { getAction } from '../utils/getAction.js';\n/** https://wagmi.sh/core/api/actions/getEnsAvatar */\nexport function getEnsAvatar(config, parameters) {\n const { chainId, ...rest } = parameters;\n const client = config.getClient({ chainId });\n const action = getAction(client, viem_getEnsAvatar, 'getEnsAvatar');\n return action(rest);\n}\n//# sourceMappingURL=getEnsAvatar.js.map","import { getEnsName as viem_getEnsName, } from 'viem/actions';\nimport { getAction } from '../utils/getAction.js';\n/** https://wagmi.sh/core/api/actions/getEnsName */\nexport function getEnsName(config, parameters) {\n const { chainId, ...rest } = parameters;\n const client = config.getClient({ chainId });\n const action = getAction(client, viem_getEnsName, 'getEnsName');\n return action(rest);\n}\n//# sourceMappingURL=getEnsName.js.map","import { publicActions } from 'viem';\nimport { getClient } from './getClient.js';\nexport function getPublicClient(config, parameters = {}) {\n const client = getClient(config, parameters);\n return client?.extend(publicActions);\n}\n//# sourceMappingURL=getPublicClient.js.map","import { walletActions } from 'viem';\nimport { getConnectorClient, } from './getConnectorClient.js';\nexport async function getWalletClient(config, parameters = {}) {\n const client = await getConnectorClient(config, parameters);\n // @ts-ignore\n return client.extend(walletActions);\n}\n//# sourceMappingURL=getWalletClient.js.map","let isReconnecting = false;\n/** https://wagmi.sh/core/api/actions/reconnect */\nexport async function reconnect(config, parameters = {}) {\n // If already reconnecting, do nothing\n if (isReconnecting)\n return [];\n isReconnecting = true;\n config.setState((x) => ({\n ...x,\n status: x.current ? 'reconnecting' : 'connecting',\n }));\n const connectors = [];\n if (parameters.connectors?.length) {\n for (const connector_ of parameters.connectors) {\n let connector;\n // \"Register\" connector if not already created\n if (typeof connector_ === 'function')\n connector = config._internal.connectors.setup(connector_);\n else\n connector = connector_;\n connectors.push(connector);\n }\n }\n else\n connectors.push(...config.connectors);\n // Try recently-used connectors first\n let recentConnectorId;\n try {\n recentConnectorId = await config.storage?.getItem('recentConnectorId');\n }\n catch { }\n const scores = {};\n for (const [, connection] of config.state.connections) {\n scores[connection.connector.id] = 1;\n }\n if (recentConnectorId)\n scores[recentConnectorId] = 0;\n const sorted = Object.keys(scores).length > 0\n ? // .toSorted()\n [...connectors].sort((a, b) => (scores[a.id] ?? 10) - (scores[b.id] ?? 10))\n : connectors;\n // Iterate through each connector and try to connect\n let connected = false;\n const connections = [];\n const providers = [];\n for (const connector of sorted) {\n const provider = await connector.getProvider().catch(() => undefined);\n if (!provider)\n continue;\n // If we already have an instance of this connector's provider,\n // then we have already checked it (ie. injected connectors can\n // share the same `window.ethereum` instance, so we don't want to\n // connect to it again).\n if (providers.some((x) => x === provider))\n continue;\n const isAuthorized = await connector.isAuthorized();\n if (!isAuthorized)\n continue;\n const data = await connector\n .connect({ isReconnecting: true })\n .catch(() => null);\n if (!data)\n continue;\n connector.emitter.off('connect', config._internal.events.connect);\n connector.emitter.on('change', config._internal.events.change);\n connector.emitter.on('disconnect', config._internal.events.disconnect);\n config.setState((x) => {\n const connections = new Map(connected ? x.connections : new Map()).set(connector.uid, { accounts: data.accounts, chainId: data.chainId, connector });\n return {\n ...x,\n current: connected ? x.current : connector.uid,\n connections,\n };\n });\n connections.push({\n accounts: data.accounts,\n chainId: data.chainId,\n connector,\n });\n providers.push(provider);\n connected = true;\n }\n // Prevent overwriting connected status from race condition\n if (config.state.status === 'reconnecting' ||\n config.state.status === 'connecting') {\n // If connecting didn't succeed, set to disconnected\n if (!connected)\n config.setState((x) => ({\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }));\n else\n config.setState((x) => ({ ...x, status: 'connected' }));\n }\n isReconnecting = false;\n return connections;\n}\n//# sourceMappingURL=reconnect.js.map","import { signMessage as viem_signMessage, } from 'viem/actions';\nimport { getAction } from '../utils/getAction.js';\nimport { getConnectorClient, } from './getConnectorClient.js';\n/** https://wagmi.sh/core/api/actions/signMessage */\nexport async function signMessage(config, parameters) {\n const { account, connector, ...rest } = parameters;\n let client;\n if (typeof account === 'object' && account.type === 'local')\n client = config.getClient();\n else\n client = await getConnectorClient(config, { account, connector });\n const action = getAction(client, viem_signMessage, 'signMessage');\n return action({\n ...rest,\n ...(account ? { account } : {}),\n });\n}\n//# sourceMappingURL=signMessage.js.map","import { BaseError } from './base.js';\nexport class ProviderNotFoundError extends BaseError {\n constructor() {\n super('Provider not found.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ProviderNotFoundError'\n });\n }\n}\nexport class SwitchChainNotSupportedError extends BaseError {\n constructor({ connector }) {\n super(`\"${connector.name}\" does not support programmatic chain switching.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'SwitchChainNotSupportedError'\n });\n }\n}\n//# sourceMappingURL=connector.js.map","import { ChainNotConfiguredError, } from '../errors/config.js';\nimport { SwitchChainNotSupportedError, } from '../errors/connector.js';\n/** https://wagmi.sh/core/api/actions/switchChain */\nexport async function switchChain(config, parameters) {\n const { addEthereumChainParameter, chainId } = parameters;\n const connection = config.state.connections.get(parameters.connector?.uid ?? config.state.current);\n if (connection) {\n const connector = connection.connector;\n if (!connector.switchChain)\n throw new SwitchChainNotSupportedError({ connector });\n const chain = await connector.switchChain({\n addEthereumChainParameter,\n chainId,\n });\n return chain;\n }\n const chain = config.chains.find((x) => x.id === chainId);\n if (!chain)\n throw new ChainNotConfiguredError();\n config.setState((x) => ({ ...x, chainId }));\n return chain;\n}\n//# sourceMappingURL=switchChain.js.map","import { deepEqual } from '../utils/deepEqual.js';\nimport { getAccount } from './getAccount.js';\n/** https://wagmi.sh/core/api/actions/watchAccount */\nexport function watchAccount(config, parameters) {\n const { onChange } = parameters;\n return config.subscribe(() => getAccount(config), onChange, {\n equalityFn(a, b) {\n const { connector: aConnector, ...aRest } = a;\n const { connector: bConnector, ...bRest } = b;\n return (deepEqual(aRest, bRest) &&\n // check connector separately\n aConnector?.id === bConnector?.id &&\n aConnector?.uid === bConnector?.uid);\n },\n });\n}\n//# sourceMappingURL=watchAccount.js.map","/** https://wagmi.sh/core/api/actions/watchChainId */\nexport function watchChainId(config, parameters) {\n const { onChange } = parameters;\n return config.subscribe((state) => state.chainId, onChange);\n}\n//# sourceMappingURL=watchChainId.js.map","import { deepEqual } from '../utils/deepEqual.js';\nimport { getConnections, } from './getConnections.js';\n/** https://wagmi.sh/core/api/actions/watchConnections */\nexport function watchConnections(config, parameters) {\n const { onChange } = parameters;\n return config.subscribe(() => getConnections(config), onChange, {\n equalityFn: deepEqual,\n });\n}\n//# sourceMappingURL=watchConnections.js.map","/** https://wagmi.sh/core/api/actions/watchConnectors */\nexport function watchConnectors(config, parameters) {\n const { onChange } = parameters;\n return config._internal.connectors.subscribe((connectors, prevConnectors) => {\n onChange(Object.values(connectors), prevConnectors);\n });\n}\n//# sourceMappingURL=watchConnectors.js.map","import { getPublicClient, } from './getPublicClient.js';\n/** https://wagmi.sh/core/api/actions/watchPublicClient */\nexport function watchPublicClient(config, parameters) {\n const { onChange } = parameters;\n return config.subscribe(() => getPublicClient(config), onChange, {\n equalityFn(a, b) {\n return a?.uid === b?.uid;\n },\n });\n}\n//# sourceMappingURL=watchPublicClient.js.map","export function createConnector(createConnectorFn) {\n return createConnectorFn;\n}\n//# sourceMappingURL=createConnector.js.map","import { ResourceUnavailableRpcError, SwitchChainError, UserRejectedRequestError, getAddress, numberToHex, withRetry, withTimeout, } from 'viem';\nimport { ChainNotConfiguredError } from '../errors/config.js';\nimport { ProviderNotFoundError } from '../errors/connector.js';\nimport { createConnector } from './createConnector.js';\n// Regex of wallets/providers that can accurately simulate contract calls & display contract revert reasons.\nconst supportsSimulationIdRegex = /(rabby|trustwallet)/;\ninjected.type = 'injected';\nexport function injected(parameters = {}) {\n const { shimDisconnect = true, unstable_shimAsyncInject } = parameters;\n function getTarget() {\n const target = parameters.target;\n if (typeof target === 'function') {\n const result = target();\n if (result)\n return result;\n }\n if (typeof target === 'object')\n return target;\n if (typeof target === 'string')\n return {\n ...(targetMap[target] ?? {\n id: target,\n name: `${target[0].toUpperCase()}${target.slice(1)}`,\n provider: `is${target[0].toUpperCase()}${target.slice(1)}`,\n }),\n };\n return {\n id: 'injected',\n name: 'Injected',\n provider(window) {\n return window?.ethereum;\n },\n };\n }\n let accountsChanged;\n let chainChanged;\n let connect;\n let disconnect;\n return createConnector((config) => ({\n get icon() {\n return getTarget().icon;\n },\n get id() {\n return getTarget().id;\n },\n get name() {\n return getTarget().name;\n },\n get supportsSimulation() {\n return supportsSimulationIdRegex.test(this.id.toLowerCase());\n },\n type: injected.type,\n async setup() {\n const provider = await this.getProvider();\n // Only start listening for events if `target` is set, otherwise `injected()` will also receive events\n if (provider?.on && parameters.target) {\n if (!connect) {\n connect = this.onConnect.bind(this);\n provider.on('connect', connect);\n }\n // We shouldn't need to listen for `'accountsChanged'` here since the `'connect'` event should suffice (and wallet shouldn't be connected yet).\n // Some wallets, like MetaMask, do not implement the `'connect'` event and overload `'accountsChanged'` instead.\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n }\n },\n async connect({ chainId, isReconnecting } = {}) {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n let accounts = [];\n if (isReconnecting)\n accounts = await this.getAccounts().catch(() => []);\n else if (shimDisconnect) {\n // Attempt to show another prompt for selecting account if `shimDisconnect` flag is enabled\n try {\n const permissions = await provider.request({\n method: 'wallet_requestPermissions',\n params: [{ eth_accounts: {} }],\n });\n accounts = permissions[0]?.caveats?.[0]?.value?.map((x) => getAddress(x));\n // `'wallet_requestPermissions'` can return a different order of accounts than `'eth_accounts'`\n // switch to `'eth_accounts'` ordering if more than one account is connected\n // https://github.com/wevm/wagmi/issues/4140\n if (accounts.length > 0) {\n const sortedAccounts = await this.getAccounts();\n accounts = sortedAccounts;\n }\n }\n catch (err) {\n const error = err;\n // Not all injected providers support `wallet_requestPermissions` (e.g. MetaMask iOS).\n // Only bubble up error if user rejects request\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error);\n // Or prompt is already open\n if (error.code === ResourceUnavailableRpcError.code)\n throw error;\n }\n }\n try {\n if (!accounts?.length && !isReconnecting) {\n const requestedAccounts = await provider.request({\n method: 'eth_requestAccounts',\n });\n accounts = requestedAccounts.map((x) => getAddress(x));\n }\n // Manage EIP-1193 event listeners\n // https://eips.ethereum.org/EIPS/eip-1193#events\n if (connect) {\n provider.removeListener('connect', connect);\n connect = undefined;\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n // Switch to chain if provided\n let currentChainId = await this.getChainId();\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code)\n throw error;\n return { id: currentChainId };\n });\n currentChainId = chain?.id ?? currentChainId;\n }\n // Remove disconnected shim if it exists\n if (shimDisconnect)\n await config.storage?.removeItem(`${this.id}.disconnected`);\n // Add connected shim if no target exists\n if (!parameters.target)\n await config.storage?.setItem('injected.connected', true);\n return { accounts, chainId: currentChainId };\n }\n catch (err) {\n const error = err;\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error);\n if (error.code === ResourceUnavailableRpcError.code)\n throw new ResourceUnavailableRpcError(error);\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n // Manage EIP-1193 event listeners\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n if (!connect) {\n connect = this.onConnect.bind(this);\n provider.on('connect', connect);\n }\n // Experimental support for MetaMask disconnect\n // https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-2.md\n try {\n // Adding timeout as not all wallets support this method and can hang\n // https://github.com/wevm/wagmi/issues/4064\n await withTimeout(() => \n // TODO: Remove explicit type for viem@3\n provider.request({\n // `'wallet_revokePermissions'` added in `viem@2.10.3`\n method: 'wallet_revokePermissions',\n params: [{ eth_accounts: {} }],\n }), { timeout: 100 });\n }\n catch { }\n // Add shim signalling connector is disconnected\n if (shimDisconnect) {\n await config.storage?.setItem(`${this.id}.disconnected`, true);\n }\n if (!parameters.target)\n await config.storage?.removeItem('injected.connected');\n },\n async getAccounts() {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n const accounts = await provider.request({ method: 'eth_accounts' });\n return accounts.map((x) => getAddress(x));\n },\n async getChainId() {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n const hexChainId = await provider.request({ method: 'eth_chainId' });\n return Number(hexChainId);\n },\n async getProvider() {\n if (typeof window === 'undefined')\n return undefined;\n let provider;\n const target = getTarget();\n if (typeof target.provider === 'function')\n provider = target.provider(window);\n else if (typeof target.provider === 'string')\n provider = findProvider(window, target.provider);\n else\n provider = target.provider;\n // Some wallets do not conform to EIP-1193 (e.g. Trust Wallet)\n // https://github.com/wevm/wagmi/issues/3526#issuecomment-1912683002\n if (provider && !provider.removeListener) {\n // Try using `off` handler if it exists, otherwise noop\n if ('off' in provider && typeof provider.off === 'function')\n provider.removeListener =\n provider.off;\n else\n provider.removeListener = () => { };\n }\n return provider;\n },\n async isAuthorized() {\n try {\n const isDisconnected = shimDisconnect &&\n // If shim exists in storage, connector is disconnected\n (await config.storage?.getItem(`${this.id}.disconnected`));\n if (isDisconnected)\n return false;\n // Don't allow injected connector to connect if no target is set and it hasn't already connected\n // (e.g. flag in storage is not set). This prevents a targetless injected connector from connecting\n // automatically whenever there is a targeted connector configured.\n if (!parameters.target) {\n const connected = await config.storage?.getItem('injected.connected');\n if (!connected)\n return false;\n }\n const provider = await this.getProvider();\n if (!provider) {\n if (unstable_shimAsyncInject !== undefined &&\n unstable_shimAsyncInject !== false) {\n // If no provider is found, check for async injection\n // https://github.com/wevm/references/issues/167\n // https://github.com/MetaMask/detect-provider\n const handleEthereum = async () => {\n if (typeof window !== 'undefined')\n window.removeEventListener('ethereum#initialized', handleEthereum);\n const provider = await this.getProvider();\n return !!provider;\n };\n const timeout = typeof unstable_shimAsyncInject === 'number'\n ? unstable_shimAsyncInject\n : 1_000;\n const res = await Promise.race([\n ...(typeof window !== 'undefined'\n ? [\n new Promise((resolve) => window.addEventListener('ethereum#initialized', () => resolve(handleEthereum()), { once: true })),\n ]\n : []),\n new Promise((resolve) => setTimeout(() => resolve(handleEthereum()), timeout)),\n ]);\n if (res)\n return true;\n }\n throw new ProviderNotFoundError();\n }\n // Use retry strategy as some injected wallets (e.g. MetaMask) fail to\n // immediately resolve JSON-RPC requests on page load.\n const accounts = await withRetry(() => this.getAccounts());\n return !!accounts.length;\n }\n catch {\n return false;\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n const chain = config.chains.find((x) => x.id === chainId);\n if (!chain)\n throw new SwitchChainError(new ChainNotConfiguredError());\n const promise = new Promise((resolve) => {\n const listener = ((data) => {\n if ('chainId' in data && data.chainId === chainId) {\n config.emitter.off('change', listener);\n resolve();\n }\n });\n config.emitter.on('change', listener);\n });\n try {\n await Promise.all([\n provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n })\n // During `'wallet_switchEthereumChain'`, MetaMask makes a `'net_version'` RPC call to the target chain.\n // If this request fails, MetaMask does not emit the `'chainChanged'` event, but will still switch the chain.\n // To counter this behavior, we request and emit the current chain ID to confirm the chain switch either via\n // this callback or an externally emitted `'chainChanged'` event.\n // https://github.com/MetaMask/metamask-extension/issues/24247\n .then(async () => {\n const currentChainId = await this.getChainId();\n if (currentChainId === chainId)\n config.emitter.emit('change', { chainId });\n }),\n promise,\n ]);\n return chain;\n }\n catch (err) {\n const error = err;\n // Indicates chain is not added to provider\n if (error.code === 4902 ||\n // Unwrapping for MetaMask Mobile\n // https://github.com/MetaMask/metamask-mobile/issues/2944#issuecomment-976988719\n error\n ?.data?.originalError?.code === 4902) {\n try {\n const { default: blockExplorer, ...blockExplorers } = chain.blockExplorers ?? {};\n let blockExplorerUrls;\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls;\n else if (blockExplorer)\n blockExplorerUrls = [\n blockExplorer.url,\n ...Object.values(blockExplorers).map((x) => x.url),\n ];\n let rpcUrls;\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls;\n else\n rpcUrls = [chain.rpcUrls.default?.http[0] ?? ''];\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency: addEthereumChainParameter?.nativeCurrency ??\n chain.nativeCurrency,\n rpcUrls,\n };\n await Promise.all([\n provider\n .request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n })\n .then(async () => {\n const currentChainId = await this.getChainId();\n if (currentChainId === chainId)\n config.emitter.emit('change', { chainId });\n else\n throw new UserRejectedRequestError(new Error('User rejected switch after adding network.'));\n }),\n promise,\n ]);\n return chain;\n }\n catch (error) {\n throw new UserRejectedRequestError(error);\n }\n }\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error);\n throw new SwitchChainError(error);\n }\n },\n async onAccountsChanged(accounts) {\n // Disconnect if there are no accounts\n if (accounts.length === 0)\n this.onDisconnect();\n // Connect if emitter is listening for connect event (e.g. is disconnected and connects through wallet interface)\n else if (config.emitter.listenerCount('connect')) {\n const chainId = (await this.getChainId()).toString();\n this.onConnect({ chainId });\n // Remove disconnected shim if it exists\n if (shimDisconnect)\n await config.storage?.removeItem(`${this.id}.disconnected`);\n }\n // Regular change event\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onConnect(connectInfo) {\n const accounts = await this.getAccounts();\n if (accounts.length === 0)\n return;\n const chainId = Number(connectInfo.chainId);\n config.emitter.emit('connect', { accounts, chainId });\n // Manage EIP-1193 event listeners\n const provider = await this.getProvider();\n if (provider) {\n if (connect) {\n provider.removeListener('connect', connect);\n connect = undefined;\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n }\n },\n async onDisconnect(error) {\n const provider = await this.getProvider();\n // If MetaMask emits a `code: 1013` error, wait for reconnection before disconnecting\n // https://github.com/MetaMask/providers/pull/120\n if (error && error.code === 1013) {\n if (provider && !!(await this.getAccounts()).length)\n return;\n }\n // No need to remove `${this.id}.disconnected` from storage because `onDisconnect` is typically\n // only called when the wallet is disconnected through the wallet's interface, meaning the wallet\n // actually disconnected and we don't need to simulate it.\n config.emitter.emit('disconnect');\n // Manage EIP-1193 event listeners\n if (provider) {\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n if (!connect) {\n connect = this.onConnect.bind(this);\n provider.on('connect', connect);\n }\n }\n },\n }));\n}\nconst targetMap = {\n coinbaseWallet: {\n id: 'coinbaseWallet',\n name: 'Coinbase Wallet',\n provider(window) {\n if (window?.coinbaseWalletExtension)\n return window.coinbaseWalletExtension;\n return findProvider(window, 'isCoinbaseWallet');\n },\n },\n metaMask: {\n id: 'metaMask',\n name: 'MetaMask',\n provider(window) {\n return findProvider(window, (provider) => {\n if (!provider.isMetaMask)\n return false;\n // Brave tries to make itself look like MetaMask\n // Could also try RPC `web3_clientVersion` if following is unreliable\n if (provider.isBraveWallet && !provider._events && !provider._state)\n return false;\n // Other wallets that try to look like MetaMask\n const flags = [\n 'isApexWallet',\n 'isAvalanche',\n 'isBitKeep',\n 'isBlockWallet',\n 'isKuCoinWallet',\n 'isMathWallet',\n 'isOkxWallet',\n 'isOKExWallet',\n 'isOneInchIOSWallet',\n 'isOneInchAndroidWallet',\n 'isOpera',\n 'isPortal',\n 'isRabby',\n 'isTokenPocket',\n 'isTokenary',\n 'isUniswapWallet',\n 'isZerion',\n ];\n for (const flag of flags)\n if (provider[flag])\n return false;\n return true;\n });\n },\n },\n phantom: {\n id: 'phantom',\n name: 'Phantom',\n provider(window) {\n if (window?.phantom?.ethereum)\n return window.phantom?.ethereum;\n return findProvider(window, 'isPhantom');\n },\n },\n};\nfunction findProvider(window, select) {\n function isProvider(provider) {\n if (typeof select === 'function')\n return select(provider);\n if (typeof select === 'string')\n return provider[select];\n return true;\n }\n const ethereum = window.ethereum;\n if (ethereum?.providers)\n return ethereum.providers.find((provider) => isProvider(provider));\n if (ethereum && isProvider(ethereum))\n return ethereum;\n return undefined;\n}\n//# sourceMappingURL=injected.js.map","/**\n * Announces an EIP-1193 Provider.\n */\nexport function announceProvider(detail) {\n const event = new CustomEvent('eip6963:announceProvider', { detail: Object.freeze(detail) });\n window.dispatchEvent(event);\n const handler = () => window.dispatchEvent(event);\n window.addEventListener('eip6963:requestProvider', handler);\n return () => window.removeEventListener('eip6963:requestProvider', handler);\n}\n/**\n * Watches for EIP-1193 Providers to be announced.\n */\nexport function requestProviders(listener) {\n if (typeof window === 'undefined')\n return;\n const handler = (event) => listener(event.detail);\n window.addEventListener('eip6963:announceProvider', handler);\n window.dispatchEvent(new CustomEvent('eip6963:requestProvider'));\n return () => window.removeEventListener('eip6963:announceProvider', handler);\n}\n//# sourceMappingURL=utils.js.map","import { requestProviders } from './utils.js';\nexport function createStore() {\n const listeners = new Set();\n let providerDetails = [];\n const request = () => requestProviders((providerDetail) => {\n if (providerDetails.some(({ info }) => info.uuid === providerDetail.info.uuid))\n return;\n providerDetails = [...providerDetails, providerDetail];\n listeners.forEach((listener) => listener(providerDetails, { added: [providerDetail] }));\n });\n let unwatch = request();\n return {\n _listeners() {\n return listeners;\n },\n clear() {\n listeners.forEach((listener) => listener([], { removed: [...providerDetails] }));\n providerDetails = [];\n },\n destroy() {\n this.clear();\n listeners.clear();\n unwatch?.();\n },\n findProvider({ rdns }) {\n return providerDetails.find((providerDetail) => providerDetail.info.rdns === rdns);\n },\n getProviders() {\n return providerDetails;\n },\n reset() {\n this.clear();\n unwatch?.();\n unwatch = request();\n },\n subscribe(listener, { emitImmediately } = {}) {\n listeners.add(listener);\n if (emitImmediately)\n listener(providerDetails, { added: providerDetails });\n return () => listeners.delete(listener);\n },\n };\n}\n//# sourceMappingURL=store.js.map","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\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","import { EventEmitter } from 'eventemitter3';\nexport class Emitter {\n constructor(uid) {\n Object.defineProperty(this, \"uid\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: uid\n });\n Object.defineProperty(this, \"_emitter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new EventEmitter()\n });\n }\n on(eventName, fn) {\n this._emitter.on(eventName, fn);\n }\n once(eventName, fn) {\n this._emitter.once(eventName, fn);\n }\n off(eventName, fn) {\n this._emitter.off(eventName, fn);\n }\n emit(eventName, ...params) {\n const data = params[0];\n this._emitter.emit(eventName, { uid: this.uid, ...data });\n }\n listenerCount(eventName) {\n return this._emitter.listenerCount(eventName);\n }\n}\nexport function createEmitter(uid) {\n return new Emitter(uid);\n}\n//# sourceMappingURL=createEmitter.js.map","export function deserialize(value, reviver) {\n return JSON.parse(value, (key, value_) => {\n let value = value_;\n if (value?.__type === 'bigint')\n value = BigInt(value.value);\n if (value?.__type === 'Map')\n value = new Map(value.value);\n return reviver?.(key, value) ?? value;\n });\n}\n//# sourceMappingURL=deserialize.js.map","/**\n * Get the reference key for the circular value\n *\n * @param keys the keys to build the reference key from\n * @param cutoff the maximum number of keys to include\n * @returns the reference key\n */\nfunction getReferenceKey(keys, cutoff) {\n return keys.slice(0, cutoff).join('.') || '.';\n}\n/**\n * Faster `Array.prototype.indexOf` implementation build for slicing / splicing\n *\n * @param array the array to match the value in\n * @param value the value to match\n * @returns the matching index, or -1\n */\nfunction getCutoff(array, value) {\n const { length } = array;\n for (let index = 0; index < length; ++index) {\n if (array[index] === value) {\n return index + 1;\n }\n }\n return 0;\n}\n/**\n * Create a replacer method that handles circular values\n *\n * @param [replacer] a custom replacer to use for non-circular values\n * @param [circularReplacer] a custom replacer to use for circular methods\n * @returns the value to stringify\n */\nfunction createReplacer(replacer, circularReplacer) {\n const hasReplacer = typeof replacer === 'function';\n const hasCircularReplacer = typeof circularReplacer === 'function';\n const cache = [];\n const keys = [];\n return function replace(key, value) {\n if (typeof value === 'object') {\n if (cache.length) {\n const thisCutoff = getCutoff(cache, this);\n if (thisCutoff === 0) {\n cache[cache.length] = this;\n }\n else {\n cache.splice(thisCutoff);\n keys.splice(thisCutoff);\n }\n keys[keys.length] = key;\n const valueCutoff = getCutoff(cache, value);\n if (valueCutoff !== 0) {\n return hasCircularReplacer\n ? circularReplacer.call(this, key, value, getReferenceKey(keys, valueCutoff))\n : `[ref=${getReferenceKey(keys, valueCutoff)}]`;\n }\n }\n else {\n cache[0] = value;\n keys[0] = key;\n }\n }\n return hasReplacer ? replacer.call(this, key, value) : value;\n };\n}\n/**\n * Stringifier that handles circular values\n *\n * Forked from https://github.com/planttheidea/fast-stringify\n *\n * @param value to stringify\n * @param [replacer] a custom replacer function for handling standard values\n * @param [indent] the number of spaces to indent the output by\n * @param [circularReplacer] a custom replacer function for handling circular values\n * @returns the stringified output\n */\nexport function serialize(value, replacer, indent, circularReplacer) {\n return JSON.stringify(value, createReplacer((key, value_) => {\n let value = value_;\n if (typeof value === 'bigint')\n value = { __type: 'bigint', value: value_.toString() };\n if (value instanceof Map)\n value = { __type: 'Map', value: Array.from(value_.entries()) };\n return replacer?.(key, value) ?? value;\n }, circularReplacer), indent ?? undefined);\n}\n//# sourceMappingURL=serialize.js.map","import { deserialize as deserialize_ } from './utils/deserialize.js';\nimport { serialize as serialize_ } from './utils/serialize.js';\nexport function createStorage(parameters) {\n const { deserialize = deserialize_, key: prefix = 'wagmi', serialize = serialize_, storage = noopStorage, } = parameters;\n function unwrap(value) {\n if (value instanceof Promise)\n return value.then((x) => x).catch(() => null);\n return value;\n }\n return {\n ...storage,\n key: prefix,\n async getItem(key, defaultValue) {\n const value = storage.getItem(`${prefix}.${key}`);\n const unwrapped = await unwrap(value);\n if (unwrapped)\n return deserialize(unwrapped) ?? null;\n return (defaultValue ?? null);\n },\n async setItem(key, value) {\n const storageKey = `${prefix}.${key}`;\n if (value === null)\n await unwrap(storage.removeItem(storageKey));\n else\n await unwrap(storage.setItem(storageKey, serialize(value)));\n },\n async removeItem(key) {\n await unwrap(storage.removeItem(`${prefix}.${key}`));\n },\n };\n}\nexport const noopStorage = {\n getItem: () => null,\n setItem: () => { },\n removeItem: () => { },\n};\n//# sourceMappingURL=createStorage.js.map","const size = 256;\nlet index = size;\nlet buffer;\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = '';\n index = 0;\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1);\n }\n }\n return buffer.substring(index, index++ + length);\n}\n//# sourceMappingURL=uid.js.map","import { createStore as createMipd, } from 'mipd';\nimport { createClient, } from 'viem';\nimport { persist, subscribeWithSelector } from 'zustand/middleware';\nimport { createStore } from 'zustand/vanilla';\nimport { injected } from './connectors/injected.js';\nimport { createEmitter } from './createEmitter.js';\nimport { createStorage, noopStorage } from './createStorage.js';\nimport { ChainNotConfiguredError } from './errors/config.js';\nimport { uid } from './utils/uid.js';\nimport { version } from './version.js';\nexport function createConfig(parameters) {\n const { multiInjectedProviderDiscovery = true, storage = createStorage({\n storage: typeof window !== 'undefined' && window.localStorage\n ? window.localStorage\n : noopStorage,\n }), syncConnectedChain = true, ssr = false, ...rest } = parameters;\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Set up connectors, clients, etc.\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const mipd = typeof window !== 'undefined' && multiInjectedProviderDiscovery\n ? createMipd()\n : undefined;\n const chains = createStore(() => rest.chains);\n const connectors = createStore(() => {\n const collection = [];\n const rdnsSet = new Set();\n for (const connectorFns of rest.connectors ?? []) {\n const connector = setup(connectorFns);\n collection.push(connector);\n if (!ssr && connector.rdns)\n rdnsSet.add(connector.rdns);\n }\n if (!ssr && mipd) {\n const providers = mipd.getProviders();\n for (const provider of providers) {\n if (rdnsSet.has(provider.info.rdns))\n continue;\n collection.push(setup(providerDetailToConnector(provider)));\n }\n }\n return collection;\n });\n function setup(connectorFn) {\n // Set up emitter with uid and add to connector so they are \"linked\" together.\n const emitter = createEmitter(uid());\n const connector = {\n ...connectorFn({\n emitter,\n chains: chains.getState(),\n storage,\n transports: rest.transports,\n }),\n emitter,\n uid: emitter.uid,\n };\n // Start listening for `connect` events on connector setup\n // This allows connectors to \"connect\" themselves without user interaction (e.g. MetaMask's \"Manually connect to current site\")\n emitter.on('connect', connect);\n connector.setup?.();\n return connector;\n }\n function providerDetailToConnector(providerDetail) {\n const { info } = providerDetail;\n const provider = providerDetail.provider;\n return injected({ target: { ...info, id: info.rdns, provider } });\n }\n const clients = new Map();\n function getClient(config = {}) {\n const chainId = config.chainId ?? store.getState().chainId;\n const chain = chains.getState().find((x) => x.id === chainId);\n // chainId specified and not configured\n if (config.chainId && !chain)\n throw new ChainNotConfiguredError();\n {\n const client = clients.get(store.getState().chainId);\n if (client && !chain)\n return client;\n if (!chain)\n throw new ChainNotConfiguredError();\n }\n // If a memoized client exists for a chain id, use that.\n {\n const client = clients.get(chainId);\n if (client)\n return client;\n }\n let client;\n if (rest.client)\n client = rest.client({ chain });\n else {\n const chainId = chain.id;\n const chainIds = chains.getState().map((x) => x.id);\n // Grab all properties off `rest` and resolve for use in `createClient`\n const properties = {};\n const entries = Object.entries(rest);\n for (const [key, value] of entries) {\n if (key === 'chains' ||\n key === 'client' ||\n key === 'connectors' ||\n key === 'transports')\n continue;\n if (typeof value === 'object') {\n // check if value is chainId-specific since some values can be objects\n // e.g. { batch: { multicall: { batchSize: 1024 } } }\n if (chainId in value)\n properties[key] = value[chainId];\n else {\n // check if value is chainId-specific, but does not have value for current chainId\n const hasChainSpecificValue = chainIds.some((x) => x in value);\n if (hasChainSpecificValue)\n continue;\n properties[key] = value;\n }\n }\n else\n properties[key] = value;\n }\n client = createClient({\n ...properties,\n chain,\n batch: properties.batch ?? { multicall: true },\n transport: (parameters) => rest.transports[chainId]({ ...parameters, connectors }),\n });\n }\n clients.set(chainId, client);\n return client;\n }\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Create store\n /////////////////////////////////////////////////////////////////////////////////////////////////\n function getInitialState() {\n return {\n chainId: chains.getState()[0].id,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n };\n }\n let currentVersion;\n const prefix = '0.0.0-canary-';\n if (version.startsWith(prefix))\n currentVersion = Number.parseInt(version.replace(prefix, ''));\n // use package major version to version store\n else\n currentVersion = Number.parseInt(version.split('.')[0] ?? '0');\n const store = createStore(subscribeWithSelector(\n // only use persist middleware if storage exists\n storage\n ? persist(getInitialState, {\n migrate(persistedState, version) {\n if (version === currentVersion)\n return persistedState;\n const initialState = getInitialState();\n const chainId = validatePersistedChainId(persistedState, initialState.chainId);\n return { ...initialState, chainId };\n },\n name: 'store',\n partialize(state) {\n // Only persist \"critical\" store properties to preserve storage size.\n return {\n connections: {\n __type: 'Map',\n value: Array.from(state.connections.entries()).map(([key, connection]) => {\n const { id, name, type, uid } = connection.connector;\n const connector = { id, name, type, uid };\n return [key, { ...connection, connector }];\n }),\n },\n chainId: state.chainId,\n current: state.current,\n };\n },\n merge(persistedState, currentState) {\n // `status` should not be persisted as it messes with reconnection\n if (typeof persistedState === 'object' &&\n persistedState &&\n 'status' in persistedState)\n delete persistedState.status;\n // Make sure persisted `chainId` is valid\n const chainId = validatePersistedChainId(persistedState, currentState.chainId);\n return {\n ...currentState,\n ...persistedState,\n chainId,\n };\n },\n skipHydration: ssr,\n storage: storage,\n version: currentVersion,\n })\n : getInitialState));\n store.setState(getInitialState());\n function validatePersistedChainId(persistedState, defaultChainId) {\n return persistedState &&\n typeof persistedState === 'object' &&\n 'chainId' in persistedState &&\n typeof persistedState.chainId === 'number' &&\n chains.getState().some((x) => x.id === persistedState.chainId)\n ? persistedState.chainId\n : defaultChainId;\n }\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Subscribe to changes\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Update default chain when connector chain changes\n if (syncConnectedChain)\n store.subscribe(({ connections, current }) => current ? connections.get(current)?.chainId : undefined, (chainId) => {\n // If chain is not configured, then don't switch over to it.\n const isChainConfigured = chains\n .getState()\n .some((x) => x.id === chainId);\n if (!isChainConfigured)\n return;\n return store.setState((x) => ({\n ...x,\n chainId: chainId ?? x.chainId,\n }));\n });\n // EIP-6963 subscribe for new wallet providers\n mipd?.subscribe((providerDetails) => {\n const connectorIdSet = new Set();\n const connectorRdnsSet = new Set();\n for (const connector of connectors.getState()) {\n connectorIdSet.add(connector.id);\n if (connector.rdns)\n connectorRdnsSet.add(connector.rdns);\n }\n const newConnectors = [];\n for (const providerDetail of providerDetails) {\n if (connectorRdnsSet.has(providerDetail.info.rdns))\n continue;\n const connector = setup(providerDetailToConnector(providerDetail));\n if (connectorIdSet.has(connector.id))\n continue;\n newConnectors.push(connector);\n }\n if (storage && !store.persist.hasHydrated())\n return;\n connectors.setState((x) => [...x, ...newConnectors], true);\n });\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Emitter listeners\n /////////////////////////////////////////////////////////////////////////////////////////////////\n function change(data) {\n store.setState((x) => {\n const connection = x.connections.get(data.uid);\n if (!connection)\n return x;\n return {\n ...x,\n connections: new Map(x.connections).set(data.uid, {\n accounts: data.accounts ??\n connection.accounts,\n chainId: data.chainId ?? connection.chainId,\n connector: connection.connector,\n }),\n };\n });\n }\n function connect(data) {\n // Disable handling if reconnecting/connecting\n if (store.getState().status === 'connecting' ||\n store.getState().status === 'reconnecting')\n return;\n store.setState((x) => {\n const connector = connectors.getState().find((x) => x.uid === data.uid);\n if (!connector)\n return x;\n if (connector.emitter.listenerCount('connect'))\n connector.emitter.off('connect', change);\n if (!connector.emitter.listenerCount('change'))\n connector.emitter.on('change', change);\n if (!connector.emitter.listenerCount('disconnect'))\n connector.emitter.on('disconnect', disconnect);\n return {\n ...x,\n connections: new Map(x.connections).set(data.uid, {\n accounts: data.accounts,\n chainId: data.chainId,\n connector: connector,\n }),\n current: data.uid,\n status: 'connected',\n };\n });\n }\n function disconnect(data) {\n store.setState((x) => {\n const connection = x.connections.get(data.uid);\n if (connection) {\n const connector = connection.connector;\n if (connector.emitter.listenerCount('change'))\n connection.connector.emitter.off('change', change);\n if (connector.emitter.listenerCount('disconnect'))\n connection.connector.emitter.off('disconnect', disconnect);\n if (!connector.emitter.listenerCount('connect'))\n connection.connector.emitter.on('connect', connect);\n }\n x.connections.delete(data.uid);\n if (x.connections.size === 0)\n return {\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n };\n const nextConnection = x.connections.values().next().value;\n return {\n ...x,\n connections: new Map(x.connections),\n current: nextConnection.connector.uid,\n };\n });\n }\n return {\n get chains() {\n return chains.getState();\n },\n get connectors() {\n return connectors.getState();\n },\n storage,\n getClient,\n get state() {\n return store.getState();\n },\n setState(value) {\n let newState;\n if (typeof value === 'function')\n newState = value(store.getState());\n else\n newState = value;\n // Reset state if it got set to something not matching the base state\n const initialState = getInitialState();\n if (typeof newState !== 'object')\n newState = initialState;\n const isCorrupt = Object.keys(initialState).some((x) => !(x in newState));\n if (isCorrupt)\n newState = initialState;\n store.setState(newState, true);\n },\n subscribe(selector, listener, options) {\n return store.subscribe(selector, listener, options\n ? {\n ...options,\n fireImmediately: options.emitImmediately,\n // Workaround cast since Zustand does not support `'exactOptionalPropertyTypes'`\n }\n : undefined);\n },\n _internal: {\n mipd,\n store,\n ssr: Boolean(ssr),\n syncConnectedChain,\n transports: rest.transports,\n chains: {\n setState(value) {\n const nextChains = (typeof value === 'function' ? value(chains.getState()) : value);\n if (nextChains.length === 0)\n return;\n return chains.setState(nextChains, true);\n },\n subscribe(listener) {\n return chains.subscribe(listener);\n },\n },\n connectors: {\n providerDetailToConnector,\n setup,\n setState(value) {\n return connectors.setState(typeof value === 'function' ? value(connectors.getState()) : value, true);\n },\n subscribe(listener) {\n return connectors.subscribe(listener);\n },\n },\n events: { change, connect, disconnect },\n },\n };\n}\n//# sourceMappingURL=createConfig.js.map","import { reconnect } from './actions/reconnect.js';\nexport function hydrate(config, parameters) {\n const { initialState, reconnectOnMount } = parameters;\n if (initialState && !config._internal.store.persist.hasHydrated())\n config.setState({\n ...initialState,\n chainId: config.chains.some((x) => x.id === initialState.chainId)\n ? initialState.chainId\n : config.chains[0].id,\n connections: reconnectOnMount ? initialState.connections : new Map(),\n status: reconnectOnMount ? 'reconnecting' : 'disconnected',\n });\n return {\n async onMount() {\n if (config._internal.ssr) {\n await config._internal.store.persist.rehydrate();\n if (config._internal.mipd) {\n config._internal.connectors.setState((connectors) => {\n const rdnsSet = new Set();\n for (const connector of connectors ?? []) {\n if (connector.rdns)\n rdnsSet.add(connector.rdns);\n }\n const mipdConnectors = [];\n const providers = config._internal.mipd?.getProviders() ?? [];\n for (const provider of providers) {\n if (rdnsSet.has(provider.info.rdns))\n continue;\n const connectorFn = config._internal.connectors.providerDetailToConnector(provider);\n const connector = config._internal.connectors.setup(connectorFn);\n mipdConnectors.push(connector);\n }\n return [...connectors, ...mipdConnectors];\n });\n }\n }\n if (reconnectOnMount)\n reconnect(config);\n else if (config.storage)\n // Reset connections that may have been hydrated from storage.\n config.setState((x) => ({\n ...x,\n connections: new Map(),\n }));\n },\n };\n}\n//# sourceMappingURL=hydrate.js.map","export function extractRpcUrls(parameters) {\n const { chain } = parameters;\n const fallbackUrl = chain.rpcUrls.default.http[0];\n if (!parameters.transports)\n return [fallbackUrl];\n const transport = parameters.transports?.[chain.id]?.({ chain });\n const transports = transport?.value?.transports || [transport];\n return transports.map(({ value }) => value?.url || fallbackUrl);\n}\n//# sourceMappingURL=extractRpcUrls.js.map","'use client';\nimport { hydrate } from '@wagmi/core';\nimport { useEffect, useRef } from 'react';\nexport function Hydrate(parameters) {\n const { children, config, initialState, reconnectOnMount = true } = parameters;\n const { onMount } = hydrate(config, {\n initialState,\n reconnectOnMount,\n });\n // Hydrate for non-SSR\n if (!config._internal.ssr)\n onMount();\n // Hydrate for SSR\n const active = useRef(true);\n // biome-ignore lint/correctness/useExhaustiveDependencies: `queryKey` not required\n useEffect(() => {\n if (!active.current)\n return;\n if (!config._internal.ssr)\n return;\n onMount();\n return () => {\n active.current = false;\n };\n }, []);\n return children;\n}\n//# sourceMappingURL=hydrate.js.map","'use client';\nimport { createContext, createElement } from 'react';\nimport { Hydrate } from './hydrate.js';\nexport const WagmiContext = createContext(undefined);\nexport function WagmiProvider(parameters) {\n const { children, config } = parameters;\n const props = { value: config };\n return createElement(Hydrate, parameters, createElement(WagmiContext.Provider, props, children));\n}\n//# sourceMappingURL=context.js.map","export const version = '2.12.29';\n//# sourceMappingURL=version.js.map","import { version } from '../version.js';\nexport const getVersion = () => `wagmi@${version}`;\n//# sourceMappingURL=getVersion.js.map","import { BaseError as CoreError } from '@wagmi/core';\nimport { getVersion } from '../utils/getVersion.js';\nexport class BaseError extends CoreError {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'WagmiError'\n });\n }\n get docsBaseUrl() {\n return 'https://wagmi.sh/react';\n }\n get version() {\n return getVersion();\n }\n}\n//# sourceMappingURL=base.js.map","import { BaseError } from './base.js';\nexport class WagmiProviderNotFoundError extends BaseError {\n constructor() {\n super('`useConfig` must be used within `WagmiProvider`.', {\n docsPath: '/api/WagmiProvider',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'WagmiProviderNotFoundError'\n });\n }\n}\n//# sourceMappingURL=context.js.map","'use client';\nimport { useContext } from 'react';\nimport { WagmiContext } from '../context.js';\nimport { WagmiProviderNotFoundError } from '../errors/context.js';\n/** https://wagmi.sh/react/api/hooks/useConfig */\nexport function useConfig(parameters = {}) {\n const config = parameters.config ?? useContext(WagmiContext);\n if (!config)\n throw new WagmiProviderNotFoundError();\n return config;\n}\n//# sourceMappingURL=useConfig.js.map","/**\n * @internal\n * We don't expose this because as far as consumers know, you can't chainge (lol) `config.chains` at runtime.\n * Setting `config.chains` via `config._internal.chains.setState(...)` is an extremely advanced use case that's not worth documenting or supporting in the public API at this time.\n */\nexport function watchChains(config, parameters) {\n const { onChange } = parameters;\n return config._internal.chains.subscribe((chains, prevChains) => {\n onChange(chains, prevChains);\n });\n}\n//# sourceMappingURL=watchChains.js.map","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","'use client';\nimport { deepEqual } from '@wagmi/core/internal';\nimport { useMemo, useRef } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js';\nconst isPlainObject = (obj) => typeof obj === 'object' && !Array.isArray(obj);\nexport function useSyncExternalStoreWithTracked(subscribe, getSnapshot, getServerSnapshot = getSnapshot, isEqual = deepEqual) {\n const trackedKeys = useRef([]);\n const result = useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, (x) => x, (a, b) => {\n if (isPlainObject(a) && isPlainObject(b) && trackedKeys.current.length) {\n for (const key of trackedKeys.current) {\n const equal = isEqual(a[key], b[key]);\n if (!equal)\n return false;\n }\n return true;\n }\n return isEqual(a, b);\n });\n return useMemo(() => {\n if (isPlainObject(result)) {\n const trackedResult = { ...result };\n let properties = {};\n for (const [key, value] of Object.entries(trackedResult)) {\n properties = {\n ...properties,\n [key]: {\n configurable: false,\n enumerable: true,\n get: () => {\n if (!trackedKeys.current.includes(key)) {\n trackedKeys.current.push(key);\n }\n return value;\n },\n },\n };\n }\n Object.defineProperties(trackedResult, properties);\n return trackedResult;\n }\n return result;\n }, [result]);\n}\n//# sourceMappingURL=useSyncExternalStoreWithTracked.js.map","'use client';\nimport { getAccount, watchAccount, } from '@wagmi/core';\nimport { useConfig } from './useConfig.js';\nimport { useSyncExternalStoreWithTracked } from './useSyncExternalStoreWithTracked.js';\n/** https://wagmi.sh/react/api/hooks/useAccount */\nexport function useAccount(parameters = {}) {\n const config = useConfig(parameters);\n return useSyncExternalStoreWithTracked((onChange) => watchAccount(config, { onChange }), () => getAccount(config));\n}\n//# sourceMappingURL=useAccount.js.map","'use client';\nimport { watchAccount } from '@wagmi/core';\nimport { useEffect } from 'react';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useAccountEffect */\nexport function useAccountEffect(parameters = {}) {\n const { onConnect, onDisconnect } = parameters;\n const config = useConfig(parameters);\n useEffect(() => {\n return watchAccount(config, {\n onChange(data, prevData) {\n if ((prevData.status === 'reconnecting' ||\n (prevData.status === 'connecting' &&\n prevData.address === undefined)) &&\n data.status === 'connected') {\n const { address, addresses, chain, chainId, connector } = data;\n const isReconnected = prevData.status === 'reconnecting' ||\n // if `previousAccount.status` is `undefined`, the connector connected immediately.\n prevData.status === undefined;\n onConnect?.({\n address,\n addresses,\n chain,\n chainId,\n connector,\n isReconnected,\n });\n }\n else if (prevData.status === 'connected' &&\n data.status === 'disconnected')\n onDisconnect?.();\n },\n });\n }, [config, onConnect, onDisconnect]);\n}\n//# sourceMappingURL=useAccountEffect.js.map","// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/utils.ts\nvar isServer = typeof window === \"undefined\" || \"Deno\" in window;\nfunction noop() {\n return void 0;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n const array = isPlainArray(a) && isPlainArray(b);\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n if (!array && a[key] === void 0 && b[key] === void 0 && aItems.includes(key)) {\n copy[key] = void 0;\n equalItems++;\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key]);\n if (copy[key] === a[key] && a[key] !== void 0) {\n equalItems++;\n }\n }\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n return b;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nexport {\n addToEnd,\n addToStart,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n shallowEqualObjects,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n this.listeners.forEach((listener) => {\n listener();\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class {\n constructor(options) {\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n const cancel = (cancelOptions) => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort?.();\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const shouldPause = () => !focusManager.isFocused() || config.networkMode !== \"always\" && !onlineManager.isOnline();\n const resolve = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess?.(value);\n continueFn?.();\n promiseResolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onError?.(value);\n continueFn?.();\n promiseReject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n const canContinue = isResolved || !shouldPause();\n if (canContinue) {\n continueResolve(value);\n }\n return canContinue;\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved) {\n return;\n }\n let promiseOrValue;\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved) {\n return;\n }\n const retry = config.retry ?? (isServer ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n if (shouldPause()) {\n return pause();\n }\n return;\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n if (canFetch(config.networkMode)) {\n run();\n } else {\n pause().then(run);\n }\n return {\n promise,\n cancel,\n continue: () => {\n const didContinue = continueFn?.();\n return didContinue ? promise : Promise.resolve();\n },\n cancelRetry,\n continueRetry\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/notifyManager.ts\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = (cb) => setTimeout(cb, 0);\n const setScheduler = (fn) => {\n scheduleFn = fn;\n };\n const batch = (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n };\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const batchCalls = (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n const setNotifyFunction = (fn) => {\n notifyFn = fn;\n };\n const setBatchNotifyFunction = (fn) => {\n batchNotifyFn = fn;\n };\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n setScheduler\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/removable.ts\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport { noop, replaceData, skipToken, timeUntilStale } from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n #initialState;\n #revertState;\n #cache;\n #promise;\n #retryer;\n #observers;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.#setOptions(config.options);\n this.#observers = [];\n this.#cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = config.state || getDefaultState(this.options);\n this.state = this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n #setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\n }\n optionalRemove() {\n if (!this.#observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state, setStateOptions) {\n this.#dispatch({ type: \"setState\", state, setStateOptions });\n }\n cancel(options) {\n const promise = this.#promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n reset() {\n this.destroy();\n this.setState(this.#initialState);\n }\n isActive() {\n return this.#observers.some(\n (observer) => observer.options.enabled !== false\n );\n }\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n isStale() {\n return this.state.isInvalidated || this.state.data === void 0 || this.#observers.some((observer) => observer.getCurrentResult().isStale);\n }\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || this.state.data === void 0 || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.#observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.#observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.#observers.includes(observer)) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n if (!this.#observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.#observers.length;\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#promise) {\n this.#retryer?.continueRetry();\n return this.#promise;\n }\n }\n if (options) {\n this.#setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.#observers.find((x) => x.options.queryFn);\n if (observer) {\n this.#setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const queryFnContext = {\n queryKey: this.queryKey,\n meta: this.meta\n };\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n addSignalProperty(queryFnContext);\n const fetchFn = () => {\n if (process.env.NODE_ENV !== \"production\") {\n if (this.options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${this.options.queryHash}'`\n );\n }\n }\n if (!this.options.queryFn || this.options.queryFn === skipToken) {\n return Promise.reject(\n new Error(`Missing queryFn: '${this.options.queryHash}'`)\n );\n }\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n this.options.queryFn,\n queryFnContext,\n this\n );\n }\n return this.options.queryFn(\n queryFnContext\n );\n };\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n this.options.behavior?.onFetch(\n context,\n this\n );\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n const onError = (error) => {\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: \"error\",\n error\n });\n }\n if (!isCancelledError(error)) {\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n }\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n };\n this.#retryer = createRetryer({\n fn: context.fetchFn,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n onError(new Error(`${this.queryHash} data is undefined`));\n return;\n }\n this.setData(data);\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode\n });\n this.#promise = this.#retryer.promise;\n return this.#promise;\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode) ? \"fetching\" : \"paused\",\n ...state.data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\",\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n case \"error\":\n const error = action.error;\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: \"idle\" };\n }\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\"\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query\n};\n//# sourceMappingURL=query.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { canFetch, createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #defaultOptions;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#defaultOptions = config.defaultOptions;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n const executeMutation = () => {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode\n });\n return this.#retryer.promise;\n };\n const restored = this.state.status === \"pending\";\n try {\n if (!restored) {\n this.#dispatch({ type: \"pending\", variables });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables\n });\n }\n }\n const data = await executeMutation();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = [];\n this.#mutationId = 0;\n }\n #mutations;\n #mutationId;\n #resuming;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.push(mutation);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n this.#mutations = this.#mutations.filter((x) => x !== mutation);\n this.notify({ type: \"removed\", mutation });\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return this.#mutations;\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.#mutations.find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.#mutations.filter(\n (mutation) => matchMutation(filters, mutation)\n );\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n this.#resuming = (this.#resuming ?? Promise.resolve()).then(() => {\n const pausedMutations = this.#mutations.filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => pausedMutations.reduce(\n (promise, mutation) => promise.then(() => mutation.continue().catch(noop)),\n Promise.resolve()\n )\n );\n }).then(() => {\n this.#resuming = void 0;\n });\n return this.#resuming;\n }\n};\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, skipToken } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = context.options.queryFn && context.options.queryFn !== skipToken ? context.options.queryFn : () => {\n if (process.env.NODE_ENV !== \"production\") {\n if (context.options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${context.options.queryHash}'`\n );\n }\n }\n return Promise.reject(\n new Error(`Missing queryFn: '${context.options.queryHash}'`)\n );\n };\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n );\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams\n );\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe((online) => {\n if (online) {\n this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n return cachedData !== void 0 ? Promise.resolve(cachedData) : this.fetchQuery(options);\n }\n getQueriesData(filters) {\n return this.getQueryCache().findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.getQueryCache().findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","// src/queryObserver.ts\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { canFetch } from \"./retryer.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\") {\n throw new Error(\"Expected enabled to be a boolean\");\n }\n this.#updateQuery();\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult(notifyOptions);\n if (mounted && (this.#currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n const trackedResult = {};\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key);\n onPropTracked?.(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n query.isFetchingOptimistic = true;\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n if (isServer || this.#currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n return;\n }\n const time = timeUntilStale(\n this.#currentResult.dataUpdatedAt,\n this.options.staleTime\n );\n const timeout = time + 1;\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (isServer || this.options.enabled === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let { error, errorUpdatedAt, fetchStatus, status } = state;\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode) ? \"fetching\" : \"paused\";\n if (state.data === void 0) {\n status = \"pending\";\n }\n }\n if (options._optimisticResults === \"isRestoring\") {\n fetchStatus = \"idle\";\n }\n }\n if (options.select && state.data !== void 0) {\n if (prevResult && state.data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(state.data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n } else {\n data = state.data;\n }\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n if (options.select && placeholderData !== void 0) {\n try {\n placeholderData = options.select(placeholderData);\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = state.data !== void 0;\n const result = {\n status,\n fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: state.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch\n };\n return result;\n }\n updateResult(notifyOptions) {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const defaultNotifyOptions = {};\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else {\n this.#currentMutation?.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const context = this.#currentResult.context;\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(action.data, variables, context);\n this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(action.error, variables, context);\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","import { replaceEqualDeep } from '@tanstack/query-core';\nexport function structuralSharing(oldData, newData) {\n return replaceEqualDeep(oldData, newData);\n}\nexport function hashFn(queryKey) {\n return JSON.stringify(queryKey, (_, value) => {\n if (isPlainObject(value))\n return Object.keys(value)\n .sort()\n .reduce((result, key) => {\n result[key] = value[key];\n return result;\n }, {});\n if (typeof value === 'bigint')\n return value.toString();\n return value;\n });\n}\n// biome-ignore lint/complexity/noBannedTypes:\nfunction isPlainObject(value) {\n if (!hasObjectPrototype(value)) {\n return false;\n }\n // If has modified constructor\n const ctor = value.constructor;\n if (typeof ctor === 'undefined')\n return true;\n // If has modified prototype\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot))\n return false;\n // If constructor does not have an Object-specific method\n // biome-ignore lint/suspicious/noPrototypeBuiltins: \n if (!prot.hasOwnProperty('isPrototypeOf'))\n return false;\n // Most likely a plain Object\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\nexport function filterQueryOptions(options) {\n // destructuring is super fast\n // biome-ignore format: no formatting\n const { \n // import('@tanstack/query-core').QueryOptions\n _defaulted, behavior, gcTime, initialData, initialDataUpdatedAt, maxPages, meta, networkMode, queryFn, queryHash, queryKey, queryKeyHashFn, retry, retryDelay, structuralSharing, \n // import('@tanstack/query-core').InfiniteQueryObserverOptions\n getPreviousPageParam, getNextPageParam, initialPageParam, \n // import('@tanstack/react-query').UseQueryOptions\n _optimisticResults, enabled, notifyOnChangeProps, placeholderData, refetchInterval, refetchIntervalInBackground, refetchOnMount, refetchOnReconnect, refetchOnWindowFocus, retryOnMount, select, staleTime, suspense, throwOnError, \n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // wagmi\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n config, connector, query, ...rest } = options;\n return rest;\n}\n//# sourceMappingURL=utils.js.map","import { connect, } from '../actions/connect.js';\nexport function connectMutationOptions(config) {\n return {\n mutationFn(variables) {\n return connect(config, variables);\n },\n mutationKey: ['connect'],\n };\n}\n//# sourceMappingURL=connect.js.map","import { disconnect, } from '../actions/disconnect.js';\nexport function disconnectMutationOptions(config) {\n return {\n mutationFn(variables) {\n return disconnect(config, variables);\n },\n mutationKey: ['disconnect'],\n };\n}\n//# sourceMappingURL=disconnect.js.map","import { getBalance, } from '../actions/getBalance.js';\nimport { filterQueryOptions } from './utils.js';\nexport function getBalanceQueryOptions(config, options = {}) {\n return {\n async queryFn({ queryKey }) {\n const { address, scopeKey: _, ...parameters } = queryKey[1];\n if (!address)\n throw new Error('address is required');\n const balance = await getBalance(config, {\n ...parameters,\n address,\n });\n return balance ?? null;\n },\n queryKey: getBalanceQueryKey(options),\n };\n}\nexport function getBalanceQueryKey(options = {}) {\n return ['balance', filterQueryOptions(options)];\n}\n//# sourceMappingURL=getBalance.js.map","import { getConnectorClient, } from '../actions/getConnectorClient.js';\nimport { filterQueryOptions } from './utils.js';\nexport function getConnectorClientQueryOptions(config, options = {}) {\n return {\n gcTime: 0,\n async queryFn({ queryKey }) {\n const { connector } = options;\n const { connectorUid: _, scopeKey: _s, ...parameters } = queryKey[1];\n return getConnectorClient(config, {\n ...parameters,\n connector,\n });\n },\n queryKey: getConnectorClientQueryKey(options),\n };\n}\nexport function getConnectorClientQueryKey(options = {}) {\n const { connector, ...parameters } = options;\n return [\n 'connectorClient',\n { ...filterQueryOptions(parameters), connectorUid: connector?.uid },\n ];\n}\n//# sourceMappingURL=getConnectorClient.js.map","import { getEnsAvatar, } from '../actions/getEnsAvatar.js';\nimport { filterQueryOptions } from './utils.js';\nexport function getEnsAvatarQueryOptions(config, options = {}) {\n return {\n async queryFn({ queryKey }) {\n const { name, scopeKey: _, ...parameters } = queryKey[1];\n if (!name)\n throw new Error('name is required');\n return getEnsAvatar(config, { ...parameters, name });\n },\n queryKey: getEnsAvatarQueryKey(options),\n };\n}\nexport function getEnsAvatarQueryKey(options = {}) {\n return ['ensAvatar', filterQueryOptions(options)];\n}\n//# sourceMappingURL=getEnsAvatar.js.map","import { getEnsName, } from '../actions/getEnsName.js';\nimport { filterQueryOptions } from './utils.js';\nexport function getEnsNameQueryOptions(config, options = {}) {\n return {\n async queryFn({ queryKey }) {\n const { address, scopeKey: _, ...parameters } = queryKey[1];\n if (!address)\n throw new Error('address is required');\n return getEnsName(config, { ...parameters, address });\n },\n queryKey: getEnsNameQueryKey(options),\n };\n}\nexport function getEnsNameQueryKey(options = {}) {\n return ['ensName', filterQueryOptions(options)];\n}\n//# sourceMappingURL=getEnsName.js.map","import { getWalletClient, } from '../actions/getWalletClient.js';\nimport { filterQueryOptions } from './utils.js';\nexport function getWalletClientQueryOptions(config, options = {}) {\n return {\n gcTime: 0,\n async queryFn({ queryKey }) {\n const { connector } = options;\n const { connectorUid: _, scopeKey: _s, ...parameters } = queryKey[1];\n return getWalletClient(config, { ...parameters, connector });\n },\n queryKey: getWalletClientQueryKey(options),\n };\n}\nexport function getWalletClientQueryKey(options = {}) {\n const { connector, ...parameters } = options;\n return [\n 'walletClient',\n { ...filterQueryOptions(parameters), connectorUid: connector?.uid },\n ];\n}\n//# sourceMappingURL=getWalletClient.js.map","import { signMessage, } from '../actions/signMessage.js';\nexport function signMessageMutationOptions(config) {\n return {\n mutationFn(variables) {\n return signMessage(config, variables);\n },\n mutationKey: ['signMessage'],\n };\n}\n//# sourceMappingURL=signMessage.js.map","import { switchChain, } from '../actions/switchChain.js';\nexport function switchChainMutationOptions(config) {\n return {\n mutationFn(variables) {\n return switchChain(config, variables);\n },\n mutationKey: ['switchChain'],\n };\n}\n//# sourceMappingURL=switchChain.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n void 0\n);\nvar useQueryClient = (queryClient) => {\n const client = React.useContext(QueryClientContext);\n if (queryClient) {\n return queryClient;\n }\n if (!client) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return client;\n};\nvar QueryClientProvider = ({\n client,\n children\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n QueryClientContext,\n QueryClientProvider,\n useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","\"use client\";\n\n// src/isRestoring.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=isRestoring.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","// src/utils.ts\nfunction shouldThrowError(throwError, params) {\n if (typeof throwError === \"function\") {\n return throwError(...params);\n }\n return !!throwError;\n}\nfunction noop() {\n}\nexport {\n noop,\n shouldThrowError\n};\n//# sourceMappingURL=utils.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"./utils.js\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && shouldThrowError(throwOnError, [result.error, query]);\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureStaleTime = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n if (typeof defaultedOptions.staleTime !== \"number\") {\n defaultedOptions.staleTime = 1e3;\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureStaleTime,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { notifyManager } from \"@tanstack/query-core\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./isRestoring.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { ensureStaleTime, fetchOptimistic, shouldSuspend } from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const client = useQueryClient(queryClient);\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedOptions = client.defaultQueryOptions(options);\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n ensureStaleTime(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange));\n observer.updateResult();\n return unsubscribe;\n },\n [observer, isRestoring]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions, { listeners: false });\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query: client.getQueryCache().get(defaultedOptions.queryHash)\n })) {\n throw result.error;\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport { MutationObserver, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { noop, shouldThrowError } from \"./utils.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map","import { useInfiniteQuery as tanstack_useInfiniteQuery, useQuery as tanstack_useQuery, useMutation, } from '@tanstack/react-query';\nimport { hashFn } from '@wagmi/core/query';\nexport { useMutation };\n// Adding some basic customization.\n// Ideally we don't have this function, but `import('@tanstack/react-query').useQuery` currently has some quirks where it is super hard to\n// pass down the inferred `initialData` type because of it's discriminated overload in the on `useQuery`.\nexport function useQuery(parameters) {\n const result = tanstack_useQuery({\n ...parameters,\n queryKeyHashFn: hashFn, // for bigint support\n });\n result.queryKey = parameters.queryKey;\n return result;\n}\n// Adding some basic customization.\nexport function useInfiniteQuery(parameters) {\n const result = tanstack_useInfiniteQuery({\n ...parameters,\n queryKeyHashFn: hashFn, // for bigint support\n });\n result.queryKey = parameters.queryKey;\n return result;\n}\n//# sourceMappingURL=query.js.map","'use client';\nimport { getChainId, watchChainId, } from '@wagmi/core';\nimport { useSyncExternalStore } from 'react';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useChainId */\nexport function useChainId(parameters = {}) {\n const config = useConfig(parameters);\n return useSyncExternalStore((onChange) => watchChainId(config, { onChange }), () => getChainId(config), () => getChainId(config));\n}\n//# sourceMappingURL=useChainId.js.map","'use client';\nimport { getBalanceQueryOptions, } from '@wagmi/core/query';\nimport { useQuery } from '../utils/query.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useBalance */\nexport function useBalance(parameters = {}) {\n const { address, query = {} } = parameters;\n const config = useConfig(parameters);\n const chainId = useChainId({ config });\n const options = getBalanceQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n const enabled = Boolean(address && (query.enabled ?? true));\n return useQuery({ ...query, ...options, enabled });\n}\n//# sourceMappingURL=useBalance.js.map","'use client';\nimport { getChains, } from '@wagmi/core';\nimport { watchChains } from '@wagmi/core/internal';\nimport { useSyncExternalStore } from 'react';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useChains */\nexport function useChains(parameters = {}) {\n const config = useConfig(parameters);\n return useSyncExternalStore((onChange) => watchChains(config, { onChange }), () => getChains(config), () => getChains(config));\n}\n//# sourceMappingURL=useChains.js.map","'use client';\nimport { getConnectors, watchConnectors, } from '@wagmi/core';\nimport { useSyncExternalStore } from 'react';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useConnectors */\nexport function useConnectors(parameters = {}) {\n const config = useConfig(parameters);\n return useSyncExternalStore((onChange) => watchConnectors(config, { onChange }), () => getConnectors(config), () => getConnectors(config));\n}\n//# sourceMappingURL=useConnectors.js.map","'use client';\nimport { useMutation } from '@tanstack/react-query';\nimport { connectMutationOptions, } from '@wagmi/core/query';\nimport { useEffect } from 'react';\nimport { useConfig } from './useConfig.js';\nimport { useConnectors } from './useConnectors.js';\n/** https://wagmi.sh/react/api/hooks/useConnect */\nexport function useConnect(parameters = {}) {\n const { mutation } = parameters;\n const config = useConfig(parameters);\n const mutationOptions = connectMutationOptions(config);\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n });\n // Reset mutation back to an idle state when the connector disconnects.\n useEffect(() => {\n return config.subscribe(({ status }) => status, (status, previousStatus) => {\n if (previousStatus === 'connected' && status === 'disconnected')\n result.reset();\n });\n }, [config, result.reset]);\n return {\n ...result,\n connect: mutate,\n connectAsync: mutateAsync,\n connectors: useConnectors({ config }),\n };\n}\n//# sourceMappingURL=useConnect.js.map","'use client';\nimport { getConnections, watchConnections, } from '@wagmi/core';\nimport { useSyncExternalStore } from 'react';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useConnections */\nexport function useConnections(parameters = {}) {\n const config = useConfig(parameters);\n return useSyncExternalStore((onChange) => watchConnections(config, { onChange }), () => getConnections(config), () => getConnections(config));\n}\n//# sourceMappingURL=useConnections.js.map","'use client';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { getConnectorClientQueryOptions, } from '@wagmi/core/query';\nimport { useEffect, useRef } from 'react';\nimport { useQuery, } from '../utils/query.js';\nimport { useAccount } from './useAccount.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useConnectorClient */\nexport function useConnectorClient(parameters = {}) {\n const { query = {}, ...rest } = parameters;\n const config = useConfig(rest);\n const queryClient = useQueryClient();\n const { address, connector, status } = useAccount({ config });\n const chainId = useChainId({ config });\n const activeConnector = parameters.connector ?? connector;\n const { queryKey, ...options } = getConnectorClientQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n connector: activeConnector,\n });\n const enabled = Boolean((status === 'connected' ||\n (status === 'reconnecting' && activeConnector?.getProvider)) &&\n (query.enabled ?? true));\n const addressRef = useRef(address);\n // biome-ignore lint/correctness/useExhaustiveDependencies: `queryKey` not required\n useEffect(() => {\n const previousAddress = addressRef.current;\n if (!address && previousAddress) {\n // remove when account is disconnected\n queryClient.removeQueries({ queryKey });\n addressRef.current = undefined;\n }\n else if (address !== previousAddress) {\n // invalidate when address changes\n queryClient.invalidateQueries({ queryKey });\n addressRef.current = address;\n }\n }, [address, queryClient]);\n return useQuery({\n ...query,\n ...options,\n queryKey,\n enabled,\n staleTime: Number.POSITIVE_INFINITY,\n });\n}\n//# sourceMappingURL=useConnectorClient.js.map","'use client';\nimport { useMutation } from '@tanstack/react-query';\nimport { disconnectMutationOptions, } from '@wagmi/core/query';\nimport { useConfig } from './useConfig.js';\nimport { useConnections } from './useConnections.js';\n/** https://wagmi.sh/react/api/hooks/useDisconnect */\nexport function useDisconnect(parameters = {}) {\n const { mutation } = parameters;\n const config = useConfig(parameters);\n const mutationOptions = disconnectMutationOptions(config);\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n });\n return {\n ...result,\n connectors: useConnections({ config }).map((connection) => connection.connector),\n disconnect: mutate,\n disconnectAsync: mutateAsync,\n };\n}\n//# sourceMappingURL=useDisconnect.js.map","'use client';\nimport { getEnsAvatarQueryOptions, } from '@wagmi/core/query';\nimport { useQuery } from '../utils/query.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useEnsAvatar */\nexport function useEnsAvatar(parameters = {}) {\n const { name, query = {} } = parameters;\n const config = useConfig(parameters);\n const chainId = useChainId({ config });\n const options = getEnsAvatarQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n const enabled = Boolean(name && (query.enabled ?? true));\n return useQuery({ ...query, ...options, enabled });\n}\n//# sourceMappingURL=useEnsAvatar.js.map","'use client';\nimport { getEnsNameQueryOptions, } from '@wagmi/core/query';\nimport { useQuery } from '../utils/query.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useEnsName */\nexport function useEnsName(parameters = {}) {\n const { address, query = {} } = parameters;\n const config = useConfig(parameters);\n const chainId = useChainId({ config });\n const options = getEnsNameQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n const enabled = Boolean(address && (query.enabled ?? true));\n return useQuery({ ...query, ...options, enabled });\n}\n//# sourceMappingURL=useEnsName.js.map","'use client';\nimport { getPublicClient, watchPublicClient, } from '@wagmi/core';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/usePublicClient */\nexport function usePublicClient(parameters = {}) {\n const config = useConfig(parameters);\n return useSyncExternalStoreWithSelector((onChange) => watchPublicClient(config, { onChange }), () => getPublicClient(config, parameters), () => getPublicClient(config, parameters), (x) => x, (a, b) => a?.uid === b?.uid);\n}\n//# sourceMappingURL=usePublicClient.js.map","'use client';\nimport { useMutation } from '@tanstack/react-query';\nimport { signMessageMutationOptions, } from '@wagmi/core/query';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useSignMessage */\nexport function useSignMessage(parameters = {}) {\n const { mutation } = parameters;\n const config = useConfig(parameters);\n const mutationOptions = signMessageMutationOptions(config);\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n });\n return {\n ...result,\n signMessage: mutate,\n signMessageAsync: mutateAsync,\n };\n}\n//# sourceMappingURL=useSignMessage.js.map","'use client';\nimport { useMutation } from '@tanstack/react-query';\nimport { switchChainMutationOptions, } from '@wagmi/core/query';\nimport { useChains } from './useChains.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useSwitchChain */\nexport function useSwitchChain(parameters = {}) {\n const { mutation } = parameters;\n const config = useConfig(parameters);\n const mutationOptions = switchChainMutationOptions(config);\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n });\n return {\n ...result,\n chains: useChains({ config }),\n switchChain: mutate,\n switchChainAsync: mutateAsync,\n };\n}\n//# sourceMappingURL=useSwitchChain.js.map","'use client';\n// Almost identical implementation to `useConnectorClient` (except for return type)\n// Should update both in tandem\nimport { useQueryClient } from '@tanstack/react-query';\nimport { getWalletClientQueryOptions, } from '@wagmi/core/query';\nimport { useEffect, useRef } from 'react';\nimport { useQuery, } from '../utils/query.js';\nimport { useAccount } from './useAccount.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useWalletClient */\nexport function useWalletClient(parameters = {}) {\n const { query = {}, ...rest } = parameters;\n const config = useConfig(rest);\n const queryClient = useQueryClient();\n const { address, connector, status } = useAccount({ config });\n const chainId = useChainId({ config });\n const activeConnector = parameters.connector ?? connector;\n const { queryKey, ...options } = getWalletClientQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n connector: parameters.connector ?? connector,\n });\n const enabled = Boolean((status === 'connected' ||\n (status === 'reconnecting' && activeConnector?.getProvider)) &&\n (query.enabled ?? true));\n const addressRef = useRef(address);\n // biome-ignore lint/correctness/useExhaustiveDependencies: `queryKey` not required\n useEffect(() => {\n const previousAddress = addressRef.current;\n if (!address && previousAddress) {\n // remove when account is disconnected\n queryClient.removeQueries({ queryKey });\n addressRef.current = undefined;\n }\n else if (address !== previousAddress) {\n // invalidate when address changes\n queryClient.invalidateQueries({ queryKey });\n addressRef.current = address;\n }\n }, [address, queryClient]);\n return useQuery({\n ...query,\n ...options,\n queryKey,\n enabled,\n staleTime: Number.POSITIVE_INFINITY,\n });\n}\n//# sourceMappingURL=useWalletClient.js.map","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t zero pad\r\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\r\n\t\t\tread_width = 8;\r\n\t\t}\r\n\t\treturn (read_buffer >> --read_width) & 1;\r\n\t}\r\n\r\n\tconst N = 31;\r\n\tconst FULL = 2**N;\r\n\tconst HALF = FULL >>> 1;\r\n\tconst QRTR = HALF >> 1;\r\n\tconst MASK = FULL - 1;\r\n\r\n\t// fill register\r\n\tlet register = 0;\r\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\r\n\r\n\tlet symbols = [];\r\n\tlet low = 0;\r\n\tlet range = FULL; // treat like a float\r\n\twhile (true) {\r\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\r\n\t\tlet start = 0;\r\n\t\tlet end = symbol_count;\r\n\t\twhile (end - start > 1) { // binary search\r\n\t\t\tlet mid = (start + end) >>> 1;\r\n\t\t\tif (value < acc[mid]) {\r\n\t\t\t\tend = mid;\r\n\t\t\t} else {\r\n\t\t\t\tstart = mid;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (start == 0) break; // first symbol is end mark\r\n\t\tsymbols.push(start);\r\n\t\tlet a = low + Math.floor(range * acc[start] / total);\r\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1;\r\n\t\twhile (((a ^ b) & HALF) == 0) {\r\n\t\t\tregister = (register << 1) & MASK | read_bit();\r\n\t\t\ta = (a << 1) & MASK;\r\n\t\t\tb = (b << 1) & MASK | 1;\r\n\t\t}\r\n\t\twhile (a & ~b & QRTR) {\r\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\r\n\t\t\ta = (a << 1) ^ HALF;\r\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\r\n\t\t}\r\n\t\tlow = a;\r\n\t\trange = 1 + b - a;\r\n\t}\r\n\tlet offset = symbol_count - 4;\r\n\treturn symbols.map(x => { // index into payload\r\n\t\tswitch (x - offset) {\r\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\r\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\r\n\t\t\tcase 1: return offset + bytes[pos_payload++];\r\n\t\t\tdefault: return x - 1;\r\n\t\t}\r\n\t});\r\n}\t\r\n\r\n// returns an iterator which returns the next symbol\r\nfunction read_payload(v) {\r\n\tlet pos = 0;\r\n\treturn () => v[pos++];\r\n}\r\nfunction read_compressed_payload(s) {\r\n\treturn read_payload(decode_arithmetic(unsafe_atob(s)));\r\n}\r\n\r\n// unsafe in the sense:\r\n// expected well-formed Base64 w/o padding \r\n// 20220922: added for https://github.com/adraffy/ens-normalize.js/issues/4\r\nfunction unsafe_atob(s) {\r\n\tlet lookup = [];\r\n\t[...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'].forEach((c, i) => lookup[c.charCodeAt(0)] = i);\r\n\tlet n = s.length;\r\n\tlet ret = new Uint8Array((6 * n) >> 3);\r\n\tfor (let i = 0, pos = 0, width = 0, carry = 0; i < n; i++) {\r\n\t\tcarry = (carry << 6) | lookup[s.charCodeAt(i)];\r\n\t\twidth += 6;\r\n\t\tif (width >= 8) {\r\n\t\t\tret[pos++] = (carry >> (width -= 8));\r\n\t\t}\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\r\nfunction signed(i) { \r\n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\r\n}\r\n\r\nfunction read_deltas(n, next) {\r\n\tlet v = Array(n);\r\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\r\n\treturn v;\r\n}\r\n\r\n// [123][5] => [0 3] [1 1] [0 0]\r\nfunction read_sorted(next, prev = 0) {\r\n\tlet ret = [];\r\n\twhile (true) {\r\n\t\tlet x = next();\r\n\t\tlet n = next();\r\n\t\tif (!n) break;\r\n\t\tprev += x;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tret.push(prev + i);\r\n\t\t}\r\n\t\tprev += n + 1;\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction read_sorted_arrays(next) {\r\n\treturn read_array_while(() => { \r\n\t\tlet v = read_sorted(next);\r\n\t\tif (v.length) return v;\r\n\t});\r\n}\r\n\r\n// returns map of x => ys\r\nfunction read_mapped(next) {\r\n\tlet ret = [];\r\n\twhile (true) {\r\n\t\tlet w = next();\r\n\t\tif (w == 0) break;\r\n\t\tret.push(read_linear_table(w, next));\r\n\t}\r\n\twhile (true) {\r\n\t\tlet w = next() - 1;\r\n\t\tif (w < 0) break;\r\n\t\tret.push(read_replacement_table(w, next));\r\n\t}\r\n\treturn ret.flat();\r\n}\r\n\r\n// read until next is falsy\r\n// return array of read values\r\nfunction read_array_while(next) {\r\n\tlet v = [];\r\n\twhile (true) {\r\n\t\tlet x = next(v.length);\r\n\t\tif (!x) break;\r\n\t\tv.push(x);\r\n\t}\r\n\treturn v;\r\n}\r\n\r\n// read w columns of length n\r\n// return as n rows of length w\r\nfunction read_transposed(n, w, next) {\r\n\tlet m = Array(n).fill().map(() => []);\r\n\tfor (let i = 0; i < w; i++) {\r\n\t\tread_deltas(n, next).forEach((x, j) => m[j].push(x));\r\n\t}\r\n\treturn m;\r\n}\r\n \r\n// returns [[x, ys], [x+dx, ys+dy], [x+2*dx, ys+2*dy], ...]\r\n// where dx/dy = steps, n = run size, w = length of y\r\nfunction read_linear_table(w, next) {\r\n\tlet dx = 1 + next();\r\n\tlet dy = next();\r\n\tlet vN = read_array_while(next);\r\n\tlet m = read_transposed(vN.length, 1+w, next);\r\n\treturn m.flatMap((v, i) => {\r\n\t\tlet [x, ...ys] = v;\r\n\t\treturn Array(vN[i]).fill().map((_, j) => {\r\n\t\t\tlet j_dy = j * dy;\r\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\r\n\t\t});\r\n\t});\r\n}\r\n\r\n// return [[x, ys...], ...]\r\n// where w = length of y\r\nfunction read_replacement_table(w, next) { \r\n\tlet n = 1 + next();\r\n\tlet m = read_transposed(n, 1+w, next);\r\n\treturn m.map(v => [v[0], v.slice(1)]);\r\n}\r\n\r\n\r\nfunction read_trie(next) {\r\n\tlet ret = [];\r\n\tlet sorted = read_sorted(next); \r\n\texpand(decode([]), []);\r\n\treturn ret; // not sorted\r\n\tfunction decode(Q) { // characters that lead into this node\r\n\t\tlet S = next(); // state: valid, save, check\r\n\t\tlet B = read_array_while(() => { // buckets leading to new nodes\r\n\t\t\tlet cps = read_sorted(next).map(i => sorted[i]);\r\n\t\t\tif (cps.length) return decode(cps);\r\n\t\t});\r\n\t\treturn {S, B, Q};\r\n\t}\r\n\tfunction expand({S, B}, cps, saved) {\r\n\t\tif (S & 4 && saved === cps[cps.length-1]) return;\r\n\t\tif (S & 2) saved = cps[cps.length-1];\r\n\t\tif (S & 1) ret.push(cps); \r\n\t\tfor (let br of B) {\r\n\t\t\tfor (let cp of br.Q) {\r\n\t\t\t\texpand(br, [...cps, cp], saved);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\n\nfunction hex_cp(cp) {\r\n\treturn cp.toString(16).toUpperCase().padStart(2, '0');\r\n}\r\n\r\nfunction quote_cp(cp) {\r\n\treturn `{${hex_cp(cp)}}`; // raffy convention: like \"\\u{X}\" w/o the \"\\u\"\r\n}\r\n\r\n/*\r\nexport function explode_cp(s) {\r\n\treturn [...s].map(c => c.codePointAt(0));\r\n}\r\n*/\r\nfunction explode_cp(s) { // this is about 2x faster\r\n\tlet cps = [];\r\n\tfor (let pos = 0, len = s.length; pos < len; ) {\r\n\t\tlet cp = s.codePointAt(pos);\r\n\t\tpos += cp < 0x10000 ? 1 : 2;\r\n\t\tcps.push(cp);\r\n\t}\r\n\treturn cps;\r\n}\r\n\r\nfunction str_from_cps(cps) {\r\n\tconst chunk = 4096;\r\n\tlet len = cps.length;\r\n\tif (len < chunk) return String.fromCodePoint(...cps);\r\n\tlet buf = [];\r\n\tfor (let i = 0; i < len; ) {\r\n\t\tbuf.push(String.fromCodePoint(...cps.slice(i, i += chunk)));\r\n\t}\r\n\treturn buf.join('');\r\n}\r\n\r\nfunction compare_arrays(a, b) {\r\n\tlet n = a.length;\r\n\tlet c = n - b.length;\r\n\tfor (let i = 0; c == 0 && i < n; i++) c = a[i] - b[i];\r\n\treturn c;\r\n}\n\n// created 2023-09-12T22:05:14.211Z\n// compressed base64-encoded blob for include-nf data\n// source: https://github.com/adraffy/ens-normalize.js/blob/main/src/make.js\n// see: https://github.com/adraffy/ens-normalize.js#security\n// SHA-256: a974b6f8541fc29d919bc85118af0a44015851fab5343f8679cb31be2bdb209e\nvar COMPRESSED = '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';\n\n// https://unicode.org/reports/tr15/\r\n// for reference implementation\r\n// see: /derive/nf.js\r\n\r\n\r\n// algorithmic hangul\r\n// https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf (page 144)\r\nconst S0 = 0xAC00;\r\nconst L0 = 0x1100;\r\nconst V0 = 0x1161;\r\nconst T0 = 0x11A7;\r\nconst L_COUNT = 19;\r\nconst V_COUNT = 21;\r\nconst T_COUNT = 28;\r\nconst N_COUNT = V_COUNT * T_COUNT;\r\nconst S_COUNT = L_COUNT * N_COUNT;\r\nconst S1 = S0 + S_COUNT;\r\nconst L1 = L0 + L_COUNT;\r\nconst V1 = V0 + V_COUNT;\r\nconst T1 = T0 + T_COUNT;\r\n\r\nfunction unpack_cc(packed) {\r\n\treturn (packed >> 24) & 0xFF;\r\n}\r\nfunction unpack_cp(packed) {\r\n\treturn packed & 0xFFFFFF;\r\n}\r\n\r\nlet SHIFTED_RANK, EXCLUSIONS, DECOMP, RECOMP;\r\n\r\nfunction init$1() {\r\n\t//console.time('nf');\r\n\tlet r = read_compressed_payload(COMPRESSED);\r\n\tSHIFTED_RANK = new Map(read_sorted_arrays(r).flatMap((v, i) => v.map(x => [x, (i+1) << 24]))); // pre-shifted\r\n\tEXCLUSIONS = new Set(read_sorted(r));\r\n\tDECOMP = new Map();\r\n\tRECOMP = new Map();\r\n\tfor (let [cp, cps] of read_mapped(r)) {\r\n\t\tif (!EXCLUSIONS.has(cp) && cps.length == 2) {\r\n\t\t\tlet [a, b] = cps;\r\n\t\t\tlet bucket = RECOMP.get(a);\r\n\t\t\tif (!bucket) {\r\n\t\t\t\tbucket = new Map();\r\n\t\t\t\tRECOMP.set(a, bucket);\r\n\t\t\t}\r\n\t\t\tbucket.set(b, cp);\r\n\t\t}\r\n\t\tDECOMP.set(cp, cps.reverse()); // stored reversed\r\n\t}\r\n\t//console.timeEnd('nf');\r\n\t// 20230905: 11ms\r\n}\r\n\r\nfunction is_hangul(cp) {\r\n\treturn cp >= S0 && cp < S1;\r\n}\r\n\r\nfunction compose_pair(a, b) {\r\n\tif (a >= L0 && a < L1 && b >= V0 && b < V1) {\r\n\t\treturn S0 + (a - L0) * N_COUNT + (b - V0) * T_COUNT;\r\n\t} else if (is_hangul(a) && b > T0 && b < T1 && (a - S0) % T_COUNT == 0) {\r\n\t\treturn a + (b - T0);\r\n\t} else {\r\n\t\tlet recomp = RECOMP.get(a);\r\n\t\tif (recomp) {\r\n\t\t\trecomp = recomp.get(b);\r\n\t\t\tif (recomp) {\r\n\t\t\t\treturn recomp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n}\r\n\r\nfunction decomposed(cps) {\r\n\tif (!SHIFTED_RANK) init$1();\r\n\tlet ret = [];\r\n\tlet buf = [];\r\n\tlet check_order = false;\r\n\tfunction add(cp) {\r\n\t\tlet cc = SHIFTED_RANK.get(cp);\r\n\t\tif (cc) {\r\n\t\t\tcheck_order = true;\r\n\t\t\tcp |= cc;\r\n\t\t}\r\n\t\tret.push(cp);\r\n\t}\r\n\tfor (let cp of cps) {\r\n\t\twhile (true) {\r\n\t\t\tif (cp < 0x80) {\r\n\t\t\t\tret.push(cp);\r\n\t\t\t} else if (is_hangul(cp)) {\r\n\t\t\t\tlet s_index = cp - S0;\r\n\t\t\t\tlet l_index = s_index / N_COUNT | 0;\r\n\t\t\t\tlet v_index = (s_index % N_COUNT) / T_COUNT | 0;\r\n\t\t\t\tlet t_index = s_index % T_COUNT;\r\n\t\t\t\tadd(L0 + l_index);\r\n\t\t\t\tadd(V0 + v_index);\r\n\t\t\t\tif (t_index > 0) add(T0 + t_index);\r\n\t\t\t} else {\r\n\t\t\t\tlet mapped = DECOMP.get(cp);\r\n\t\t\t\tif (mapped) {\r\n\t\t\t\t\tbuf.push(...mapped);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tadd(cp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!buf.length) break;\r\n\t\t\tcp = buf.pop();\r\n\t\t}\r\n\t}\r\n\tif (check_order && ret.length > 1) {\r\n\t\tlet prev_cc = unpack_cc(ret[0]);\r\n\t\tfor (let i = 1; i < ret.length; i++) {\r\n\t\t\tlet cc = unpack_cc(ret[i]);\r\n\t\t\tif (cc == 0 || prev_cc <= cc) {\r\n\t\t\t\tprev_cc = cc;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet j = i-1;\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet tmp = ret[j+1];\r\n\t\t\t\tret[j+1] = ret[j];\r\n\t\t\t\tret[j] = tmp;\r\n\t\t\t\tif (!j) break;\r\n\t\t\t\tprev_cc = unpack_cc(ret[--j]);\r\n\t\t\t\tif (prev_cc <= cc) break;\r\n\t\t\t}\r\n\t\t\tprev_cc = unpack_cc(ret[i]);\r\n\t\t}\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction composed_from_decomposed(v) {\r\n\tlet ret = [];\r\n\tlet stack = [];\r\n\tlet prev_cp = -1;\r\n\tlet prev_cc = 0;\r\n\tfor (let packed of v) {\r\n\t\tlet cc = unpack_cc(packed);\r\n\t\tlet cp = unpack_cp(packed);\r\n\t\tif (prev_cp == -1) {\r\n\t\t\tif (cc == 0) {\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tret.push(cp);\r\n\t\t\t}\r\n\t\t} else if (prev_cc > 0 && prev_cc >= cc) {\r\n\t\t\tif (cc == 0) {\r\n\t\t\t\tret.push(prev_cp, ...stack);\r\n\t\t\t\tstack.length = 0;\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(cp);\r\n\t\t\t}\r\n\t\t\tprev_cc = cc;\r\n\t\t} else {\r\n\t\t\tlet composed = compose_pair(prev_cp, cp);\r\n\t\t\tif (composed >= 0) {\r\n\t\t\t\tprev_cp = composed;\r\n\t\t\t} else if (prev_cc == 0 && cc == 0) {\r\n\t\t\t\tret.push(prev_cp);\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(cp);\r\n\t\t\t\tprev_cc = cc;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (prev_cp >= 0) {\r\n\t\tret.push(prev_cp, ...stack);\t\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\n// note: cps can be iterable\r\nfunction nfd(cps) {\r\n\treturn decomposed(cps).map(unpack_cp);\r\n}\r\nfunction nfc(cps) {\r\n\treturn composed_from_decomposed(decomposed(cps));\r\n}\n\nconst HYPHEN = 0x2D;\r\nconst STOP = 0x2E;\r\nconst STOP_CH = '.';\r\nconst FE0F = 0xFE0F;\r\nconst UNIQUE_PH = 1;\r\n\r\n// 20230913: replace [...v] with Array_from(v) to avoid large spreads\r\nconst Array_from = x => Array.from(x); // Array.from.bind(Array);\r\n\r\nfunction group_has_cp(g, cp) {\r\n\t// 20230913: keep primary and secondary distinct instead of creating valid union\r\n\treturn g.P.has(cp) || g.Q.has(cp);\r\n}\r\n\r\nclass Emoji extends Array {\r\n\tget is_emoji() { return true; } // free tagging system\r\n}\r\n\r\nlet MAPPED, IGNORED, CM, NSM, ESCAPE, NFC_CHECK, GROUPS, WHOLE_VALID, WHOLE_MAP, VALID, EMOJI_LIST, EMOJI_ROOT;\r\n\r\nfunction init() {\r\n\tif (MAPPED) return;\r\n\t\r\n\tlet r = read_compressed_payload(COMPRESSED$1);\r\n\tconst read_sorted_array = () => read_sorted(r);\r\n\tconst read_sorted_set = () => new Set(read_sorted_array());\r\n\r\n\tMAPPED = new Map(read_mapped(r)); \r\n\tIGNORED = read_sorted_set(); // ignored characters are not valid, so just read raw codepoints\r\n\r\n\t/*\r\n\t// direct include from payload is smaller than the decompression code\r\n\tconst FENCED = new Map(read_array_while(() => {\r\n\t\tlet cp = r();\r\n\t\tif (cp) return [cp, read_str(r())];\r\n\t}));\r\n\t*/\r\n\t// 20230217: we still need all CM for proper error formatting\r\n\t// but norm only needs NSM subset that are potentially-valid\r\n\tCM = read_sorted_array();\r\n\tNSM = new Set(read_sorted_array().map(i => CM[i]));\r\n\tCM = new Set(CM);\r\n\t\r\n\tESCAPE = read_sorted_set(); // characters that should not be printed\r\n\tNFC_CHECK = read_sorted_set(); // only needed to illustrate ens_tokenize() transformations\r\n\r\n\tlet chunks = read_sorted_arrays(r);\r\n\tlet unrestricted = r();\r\n\tconst read_chunked = () => new Set(read_sorted_array().flatMap(i => chunks[i]).concat(read_sorted_array()));\r\n\tGROUPS = read_array_while(i => {\r\n\t\t// minifier property mangling seems unsafe\r\n\t\t// so these are manually renamed to single chars\r\n\t\tlet N = read_array_while(r).map(x => x+0x60);\r\n\t\tif (N.length) {\r\n\t\t\tlet R = i >= unrestricted; // first arent restricted\r\n\t\t\tN[0] -= 32; // capitalize\r\n\t\t\tN = str_from_cps(N);\r\n\t\t\tif (R) N=`Restricted[${N}]`;\r\n\t\t\tlet P = read_chunked(); // primary\r\n\t\t\tlet Q = read_chunked(); // secondary\r\n\t\t\tlet M = !r(); // not-whitelisted, check for NSM\r\n\t\t\t// *** this code currently isn't needed ***\r\n\t\t\t/*\r\n\t\t\tlet V = [...P, ...Q].sort((a, b) => a-b); // derive: sorted valid\r\n\t\t\tlet M = r()-1; // number of combining mark\r\n\t\t\tif (M < 0) { // whitelisted\r\n\t\t\t\tM = new Map(read_array_while(() => {\r\n\t\t\t\t\tlet i = r();\r\n\t\t\t\t\tif (i) return [V[i-1], read_array_while(() => {\r\n\t\t\t\t\t\tlet v = read_array_while(r);\r\n\t\t\t\t\t\tif (v.length) return v.map(x => x-1);\r\n\t\t\t\t\t})];\r\n\t\t\t\t}));\r\n\t\t\t}*/\r\n\t\t\treturn {N, P, Q, M, R};\r\n\t\t}\r\n\t});\r\n\r\n\t// decode compressed wholes\r\n\tWHOLE_VALID = read_sorted_set();\r\n\tWHOLE_MAP = new Map();\r\n\tlet wholes = read_sorted_array().concat(Array_from(WHOLE_VALID)).sort((a, b) => a-b); // must be sorted\r\n\twholes.forEach((cp, i) => {\r\n\t\tlet d = r(); \r\n\t\tlet w = wholes[i] = d ? wholes[i-d] : {V: [], M: new Map()};\r\n\t\tw.V.push(cp); // add to member set\r\n\t\tif (!WHOLE_VALID.has(cp)) {\r\n\t\t\tWHOLE_MAP.set(cp, w); // register with whole map\r\n\t\t}\r\n\t});\r\n\r\n\t// compute confusable-extent complements\r\n\tfor (let {V, M} of new Set(WHOLE_MAP.values())) {\r\n\t\t// connect all groups that have each whole character\r\n\t\tlet recs = [];\r\n\t\tfor (let cp of V) {\r\n\t\t\tlet gs = GROUPS.filter(g => group_has_cp(g, cp));\r\n\t\t\tlet rec = recs.find(({G}) => gs.some(g => G.has(g)));\r\n\t\t\tif (!rec) {\r\n\t\t\t\trec = {G: new Set(), V: []};\r\n\t\t\t\trecs.push(rec);\r\n\t\t\t}\r\n\t\t\trec.V.push(cp);\r\n\t\t\tgs.forEach(g => rec.G.add(g));\r\n\t\t}\r\n\t\t// per character cache groups which are not a member of the extent\r\n\t\tlet union = recs.flatMap(x => Array_from(x.G));\r\n\t\tfor (let {G, V} of recs) {\r\n\t\t\tlet complement = new Set(union.filter(g => !G.has(g)));\r\n\t\t\tfor (let cp of V) {\r\n\t\t\t\tM.set(cp, complement);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// compute valid set\r\n\tlet union = new Set(); // exists in 1+ groups\r\n\tlet multi = new Set(); // exists in 2+ groups\r\n\tconst add_to_union = cp => union.has(cp) ? multi.add(cp) : union.add(cp);\r\n\tfor (let g of GROUPS) {\r\n\t\tfor (let cp of g.P) add_to_union(cp);\r\n\t\tfor (let cp of g.Q) add_to_union(cp);\r\n\t}\r\n\t// dual purpose WHOLE_MAP: return placeholder if unique non-confusable\r\n\tfor (let cp of union) {\r\n\t\tif (!WHOLE_MAP.has(cp) && !multi.has(cp)) {\r\n\t\t\tWHOLE_MAP.set(cp, UNIQUE_PH);\r\n\t\t}\r\n\t}\r\n\tVALID = new Set(Array_from(union).concat(Array_from(nfd(union)))); // possibly valid\r\n\r\n\t// decode emoji\r\n\t// 20230719: emoji are now fully-expanded to avoid quirk logic \r\n\tEMOJI_LIST = read_trie(r).map(v => Emoji.from(v)).sort(compare_arrays);\r\n\tEMOJI_ROOT = new Map(); // this has approx 7K nodes (2+ per emoji)\r\n\tfor (let cps of EMOJI_LIST) {\r\n\t\t// 20230719: change to *slightly* stricter algorithm which disallows \r\n\t\t// insertion of misplaced FE0F in emoji sequences (matching ENSIP-15)\r\n\t\t// example: beautified [A B] (eg. flag emoji) \r\n\t\t// before: allow: [A FE0F B], error: [A FE0F FE0F B] \r\n\t\t// after: error: both\r\n\t\t// note: this code now matches ENSNormalize.{cs,java} logic\r\n\t\tlet prev = [EMOJI_ROOT];\r\n\t\tfor (let cp of cps) {\r\n\t\t\tlet next = prev.map(node => {\r\n\t\t\t\tlet child = node.get(cp);\r\n\t\t\t\tif (!child) {\r\n\t\t\t\t\t// should this be object? \r\n\t\t\t\t\t// (most have 1-2 items, few have many)\r\n\t\t\t\t\t// 20230719: no, v8 default map is 4?\r\n\t\t\t\t\tchild = new Map();\r\n\t\t\t\t\tnode.set(cp, child);\r\n\t\t\t\t}\r\n\t\t\t\treturn child;\r\n\t\t\t});\r\n\t\t\tif (cp === FE0F) {\r\n\t\t\t\tprev.push(...next); // less than 20 elements\r\n\t\t\t} else {\r\n\t\t\t\tprev = next;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (let x of prev) {\r\n\t\t\tx.V = cps;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// if escaped: {HEX}\r\n// else: \"x\" {HEX}\r\nfunction quoted_cp(cp) {\r\n\treturn (should_escape(cp) ? '' : `${bidi_qq(safe_str_from_cps([cp]))} `) + quote_cp(cp);\r\n}\r\n\r\n// 20230211: some messages can be mixed-directional and result in spillover\r\n// use 200E after a quoted string to force the remainder of a string from \r\n// acquring the direction of the quote\r\n// https://www.w3.org/International/questions/qa-bidi-unicode-controls#exceptions\r\nfunction bidi_qq(s) {\r\n\treturn `\"${s}\"\\u200E`; // strong LTR\r\n}\r\n\r\nfunction check_label_extension(cps) {\r\n\tif (cps.length >= 4 && cps[2] == HYPHEN && cps[3] == HYPHEN) {\r\n\t\tthrow new Error(`invalid label extension: \"${str_from_cps(cps.slice(0, 4))}\"`);\r\n\t}\r\n}\r\nfunction check_leading_underscore(cps) {\r\n\tconst UNDERSCORE = 0x5F;\r\n\tfor (let i = cps.lastIndexOf(UNDERSCORE); i > 0; ) {\r\n\t\tif (cps[--i] !== UNDERSCORE) {\r\n\t\t\tthrow new Error('underscore allowed only at start');\r\n\t\t}\r\n\t}\r\n}\r\n// check that a fenced cp is not leading, trailing, or touching another fenced cp\r\nfunction check_fenced(cps) {\r\n\tlet cp = cps[0];\r\n\tlet prev = FENCED.get(cp);\r\n\tif (prev) throw error_placement(`leading ${prev}`);\r\n\tlet n = cps.length;\r\n\tlet last = -1; // prevents trailing from throwing\r\n\tfor (let i = 1; i < n; i++) {\r\n\t\tcp = cps[i];\r\n\t\tlet match = FENCED.get(cp);\r\n\t\tif (match) {\r\n\t\t\t// since cps[0] isn't fenced, cps[1] cannot throw\r\n\t\t\tif (last == i) throw error_placement(`${prev} + ${match}`);\r\n\t\t\tlast = i + 1;\r\n\t\t\tprev = match;\r\n\t\t}\r\n\t}\r\n\tif (last == n) throw error_placement(`trailing ${prev}`);\r\n}\r\n\r\n// create a safe to print string \r\n// invisibles are escaped\r\n// leading cm uses placeholder\r\n// quoter(cp) => string, eg. 3000 => \"{3000}\"\r\n// note: in html, you'd call this function then replace [<>&] with entities\r\nfunction safe_str_from_cps(cps, quoter = quote_cp) {\r\n\t//if (Number.isInteger(cps)) cps = [cps];\r\n\t//if (!Array.isArray(cps)) throw new TypeError(`expected codepoints`);\r\n\tlet buf = [];\r\n\tif (is_combining_mark(cps[0])) buf.push('◌');\r\n\tlet prev = 0;\r\n\tlet n = cps.length;\r\n\tfor (let i = 0; i < n; i++) {\r\n\t\tlet cp = cps[i];\r\n\t\tif (should_escape(cp)) {\r\n\t\t\tbuf.push(str_from_cps(cps.slice(prev, i)));\r\n\t\t\tbuf.push(quoter(cp));\r\n\t\t\tprev = i + 1;\r\n\t\t}\r\n\t}\r\n\tbuf.push(str_from_cps(cps.slice(prev, n)));\r\n\treturn buf.join('');\r\n}\r\n\r\n// note: set(s) cannot be exposed because they can be modified\r\n// note: Object.freeze() doesn't work\r\nfunction is_combining_mark(cp) {\r\n\tinit();\r\n\treturn CM.has(cp);\r\n}\r\nfunction should_escape(cp) {\r\n\tinit();\r\n\treturn ESCAPE.has(cp);\r\n}\r\n\r\n// return all supported emoji as fully-qualified emoji \r\n// ordered by length then lexicographic \r\nfunction ens_emoji() {\r\n\tinit();\r\n\treturn EMOJI_LIST.map(x => x.slice()); // emoji are exposed so copy\r\n}\r\n\r\nfunction ens_normalize_fragment(frag, decompose) {\r\n\tinit();\r\n\tlet nf = decompose ? nfd : nfc;\r\n\treturn frag.split(STOP_CH).map(label => str_from_cps(tokens_from_str(explode_cp(label), nf, filter_fe0f).flat())).join(STOP_CH);\r\n}\r\n\r\nfunction ens_normalize(name) {\r\n\treturn flatten(split(name, nfc, filter_fe0f));\r\n}\r\n\r\nfunction ens_beautify(name) {\r\n\tlet labels = split(name, nfc, x => x); // emoji not exposed\r\n\tfor (let {type, output, error} of labels) {\r\n\t\tif (error) break; // flatten will throw\r\n\r\n\t\t// replace leading/trailing hyphen\r\n\t\t// 20230121: consider beautifing all or leading/trailing hyphen to unicode variant\r\n\t\t// not exactly the same in every font, but very similar: \"-\" vs \"‐\"\r\n\t\t/*\r\n\t\tconst UNICODE_HYPHEN = 0x2010;\r\n\t\t// maybe this should replace all for visual consistancy?\r\n\t\t// `node tools/reg-count.js regex ^-\\{2,\\}` => 592\r\n\t\t//for (let i = 0; i < output.length; i++) if (output[i] == 0x2D) output[i] = 0x2010;\r\n\t\tif (output[0] == HYPHEN) output[0] = UNICODE_HYPHEN;\r\n\t\tlet end = output.length-1;\r\n\t\tif (output[end] == HYPHEN) output[end] = UNICODE_HYPHEN;\r\n\t\t*/\r\n\t\t// 20230123: WHATWG URL uses \"CheckHyphens\" false\r\n\t\t// https://url.spec.whatwg.org/#idna\r\n\r\n\t\t// update ethereum symbol\r\n\t\t// ξ => Ξ if not greek\r\n\t\tif (type !== 'Greek') { \r\n\t\t\tlet prev = 0;\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet next = output.indexOf(0x3BE, prev);\r\n\t\t\t\tif (next < 0) break;\r\n\t\t\t\toutput[next] = 0x39E; \r\n\t\t\t\tprev = next + 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// 20221213: fixes bidi subdomain issue, but breaks invariant (200E is disallowed)\r\n\t\t// could be fixed with special case for: 2D (.) + 200E (LTR)\r\n\t\t// https://discuss.ens.domains/t/bidi-label-ordering-spoof/15824\r\n\t\t//output.splice(0, 0, 0x200E);\r\n\t}\r\n\treturn flatten(labels);\r\n}\r\n\r\nfunction ens_split(name, preserve_emoji) {\r\n\treturn split(name, nfc, preserve_emoji ? x => x.slice() : filter_fe0f); // emoji are exposed so copy\r\n}\r\n\r\nfunction split(name, nf, ef) {\r\n\tif (!name) return []; // 20230719: empty name allowance\r\n\tinit();\r\n\tlet offset = 0;\r\n\t// https://unicode.org/reports/tr46/#Validity_Criteria\r\n\t// 4.) \"The label must not contain a U+002E ( . ) FULL STOP.\"\r\n\treturn name.split(STOP_CH).map(label => {\r\n\t\tlet input = explode_cp(label);\r\n\t\tlet info = {\r\n\t\t\tinput,\r\n\t\t\toffset, // codepoint, not substring!\r\n\t\t};\r\n\t\toffset += input.length + 1; // + stop\r\n\t\ttry {\r\n\t\t\t// 1.) \"The label must be in Unicode Normalization Form NFC\"\r\n\t\t\tlet tokens = info.tokens = tokens_from_str(input, nf, ef);\r\n\t\t\tlet token_count = tokens.length;\r\n\t\t\tlet type;\r\n\t\t\tif (!token_count) { // the label was effectively empty (could of had ignored characters)\r\n\t\t\t\t//norm = [];\r\n\t\t\t\t//type = 'None'; // use this instead of next match, \"ASCII\"\r\n\t\t\t\t// 20230120: change to strict\r\n\t\t\t\t// https://discuss.ens.domains/t/ens-name-normalization-2nd/14564/59\r\n\t\t\t\tthrow new Error(`empty label`);\r\n\t\t\t} \r\n\t\t\tlet norm = info.output = tokens.flat();\r\n\t\t\tcheck_leading_underscore(norm);\r\n\t\t\tlet emoji = info.emoji = token_count > 1 || tokens[0].is_emoji; // same as: tokens.some(x => x.is_emoji);\r\n\t\t\tif (!emoji && norm.every(cp => cp < 0x80)) { // special case for ascii\r\n\t\t\t\t// 20230123: matches matches WHATWG, see note 3.3\r\n\t\t\t\tcheck_label_extension(norm); // only needed for ascii\r\n\t\t\t\t// cant have fenced\r\n\t\t\t\t// cant have cm\r\n\t\t\t\t// cant have wholes\r\n\t\t\t\t// see derive: \"Fastpath ASCII\"\r\n\t\t\t\ttype = 'ASCII';\r\n\t\t\t} else {\r\n\t\t\t\tlet chars = tokens.flatMap(x => x.is_emoji ? [] : x); // all of the nfc tokens concat together\r\n\t\t\t\tif (!chars.length) { // theres no text, just emoji\r\n\t\t\t\t\ttype = 'Emoji';\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// 5.) \"The label must not begin with a combining mark, that is: General_Category=Mark.\"\r\n\t\t\t\t\tif (CM.has(norm[0])) throw error_placement('leading combining mark');\r\n\t\t\t\t\tfor (let i = 1; i < token_count; i++) { // we've already checked the first token\r\n\t\t\t\t\t\tlet cps = tokens[i];\r\n\t\t\t\t\t\tif (!cps.is_emoji && CM.has(cps[0])) { // every text token has emoji neighbors, eg. EtEEEtEt...\r\n\t\t\t\t\t\t\t// bidi_qq() not needed since emoji is LTR and cps is a CM\r\n\t\t\t\t\t\t\tthrow error_placement(`emoji + combining mark: \"${str_from_cps(tokens[i-1])} + ${safe_str_from_cps([cps[0]])}\"`); \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheck_fenced(norm);\r\n\t\t\t\t\tlet unique = Array_from(new Set(chars));\r\n\t\t\t\t\tlet [g] = determine_group(unique); // take the first match\r\n\t\t\t\t\t// see derive: \"Matching Groups have Same CM Style\"\r\n\t\t\t\t\t// alternative: could form a hybrid type: Latin/Japanese/...\t\r\n\t\t\t\t\tcheck_group(g, chars); // need text in order\r\n\t\t\t\t\tcheck_whole(g, unique); // only need unique text (order would be required for multiple-char confusables)\r\n\t\t\t\t\ttype = g.N;\r\n\t\t\t\t\t// 20230121: consider exposing restricted flag\r\n\t\t\t\t\t// it's simpler to just check for 'Restricted'\r\n\t\t\t\t\t// or even better: type.endsWith(']')\r\n\t\t\t\t\t//if (g.R) info.restricted = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tinfo.type = type;\r\n\t\t} catch (err) {\r\n\t\t\tinfo.error = err; // use full error object\r\n\t\t}\r\n\t\treturn info;\r\n\t});\r\n}\r\n\r\nfunction check_whole(group, unique) {\r\n\tlet maker;\r\n\tlet shared = [];\r\n\tfor (let cp of unique) {\r\n\t\tlet whole = WHOLE_MAP.get(cp);\r\n\t\tif (whole === UNIQUE_PH) return; // unique, non-confusable\r\n\t\tif (whole) {\r\n\t\t\tlet set = whole.M.get(cp); // groups which have a character that look-like this character\r\n\t\t\tmaker = maker ? maker.filter(g => set.has(g)) : Array_from(set);\r\n\t\t\tif (!maker.length) return; // confusable intersection is empty\r\n\t\t} else {\r\n\t\t\tshared.push(cp); \r\n\t\t}\r\n\t}\r\n\tif (maker) {\r\n\t\t// we have 1+ confusable\r\n\t\t// check if any of the remaining groups\r\n\t\t// contain the shared characters too\r\n\t\tfor (let g of maker) {\r\n\t\t\tif (shared.every(cp => group_has_cp(g, cp))) {\r\n\t\t\t\tthrow new Error(`whole-script confusable: ${group.N}/${g.N}`);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// assumption: unique.size > 0\r\n// returns list of matching groups\r\nfunction determine_group(unique) {\r\n\tlet groups = GROUPS;\r\n\tfor (let cp of unique) {\r\n\t\t// note: we need to dodge CM that are whitelisted\r\n\t\t// but that code isn't currently necessary\r\n\t\tlet gs = groups.filter(g => group_has_cp(g, cp));\r\n\t\tif (!gs.length) {\r\n\t\t\tif (!GROUPS.some(g => group_has_cp(g, cp))) { \r\n\t\t\t\t// the character was composed of valid parts\r\n\t\t\t\t// but it's NFC form is invalid\r\n\t\t\t\t// 20230716: change to more exact statement, see: ENSNormalize.{cs,java}\r\n\t\t\t\t// note: this doesn't have to be a composition\r\n\t\t\t\t// 20230720: change to full check\r\n\t\t\t\tthrow error_disallowed(cp); // this should be rare\r\n\t\t\t} else {\r\n\t\t\t\t// there is no group that contains all these characters\r\n\t\t\t\t// throw using the highest priority group that matched\r\n\t\t\t\t// https://www.unicode.org/reports/tr39/#mixed_script_confusables\r\n\t\t\t\tthrow error_group_member(groups[0], cp);\r\n\t\t\t}\r\n\t\t}\r\n\t\tgroups = gs;\r\n\t\tif (gs.length == 1) break; // there is only one group left\r\n\t}\r\n\t// there are at least 1 group(s) with all of these characters\r\n\treturn groups;\r\n}\r\n\r\n// throw on first error\r\nfunction flatten(split) {\r\n\treturn split.map(({input, error, output}) => {\r\n\t\tif (error) {\r\n\t\t\t// don't print label again if just a single label\r\n\t\t\tlet msg = error.message;\r\n\t\t\t// bidi_qq() only necessary if msg is digits\r\n\t\t\tthrow new Error(split.length == 1 ? msg : `Invalid label ${bidi_qq(safe_str_from_cps(input))}: ${msg}`); \r\n\t\t}\r\n\t\treturn str_from_cps(output);\r\n\t}).join(STOP_CH);\r\n}\r\n\r\nfunction error_disallowed(cp) {\r\n\t// TODO: add cp to error?\r\n\treturn new Error(`disallowed character: ${quoted_cp(cp)}`); \r\n}\r\nfunction error_group_member(g, cp) {\r\n\tlet quoted = quoted_cp(cp);\r\n\tlet gg = GROUPS.find(g => g.P.has(cp)); // only check primary\r\n\tif (gg) {\r\n\t\tquoted = `${gg.N} ${quoted}`;\r\n\t}\r\n\treturn new Error(`illegal mixture: ${g.N} + ${quoted}`);\r\n}\r\nfunction error_placement(where) {\r\n\treturn new Error(`illegal placement: ${where}`);\r\n}\r\n\r\n// assumption: cps.length > 0\r\n// assumption: cps[0] isn't a CM\r\n// assumption: the previous character isn't an emoji\r\nfunction check_group(g, cps) {\r\n\tfor (let cp of cps) {\r\n\t\tif (!group_has_cp(g, cp)) {\r\n\t\t\t// for whitelisted scripts, this will throw illegal mixture on invalid cm, eg. \"e{300}{300}\"\r\n\t\t\t// at the moment, it's unnecessary to introduce an extra error type\r\n\t\t\t// until there exists a whitelisted multi-character\r\n\t\t\t// eg. if (M < 0 && is_combining_mark(cp)) { ... }\r\n\t\t\t// there are 3 cases:\r\n\t\t\t// 1. illegal cm for wrong group => mixture error\r\n\t\t\t// 2. illegal cm for same group => cm error\r\n\t\t\t// requires set of whitelist cm per group: \r\n\t\t\t// eg. new Set([...g.P, ...g.Q].flatMap(nfc).filter(cp => CM.has(cp)))\r\n\t\t\t// 3. wrong group => mixture error\r\n\t\t\tthrow error_group_member(g, cp);\r\n\t\t}\r\n\t}\r\n\t//if (M >= 0) { // we have a known fixed cm count\r\n\tif (g.M) { // we need to check for NSM\r\n\t\tlet decomposed = nfd(cps);\r\n\t\tfor (let i = 1, e = decomposed.length; i < e; i++) { // see: assumption\r\n\t\t\t// 20230210: bugfix: using cps instead of decomposed h/t Carbon225\r\n\t\t\t/*\r\n\t\t\tif (CM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\twhile (j < e && CM.has(decomposed[j])) j++;\r\n\t\t\t\tif (j - i > M) {\r\n\t\t\t\t\tthrow new Error(`too many combining marks: ${g.N} ${bidi_qq(str_from_cps(decomposed.slice(i-1, j)))} (${j-i}/${M})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t\t// 20230217: switch to NSM counting\r\n\t\t\t// https://www.unicode.org/reports/tr39/#Optional_Detection\r\n\t\t\tif (NSM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\tfor (let cp; j < e && NSM.has(cp = decomposed[j]); j++) {\r\n\t\t\t\t\t// a. Forbid sequences of the same nonspacing mark.\r\n\t\t\t\t\tfor (let k = i; k < j; k++) { // O(n^2) but n < 100\r\n\t\t\t\t\t\tif (decomposed[k] == cp) {\r\n\t\t\t\t\t\t\tthrow new Error(`duplicate non-spacing marks: ${quoted_cp(cp)}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// parse to end so we have full nsm count\r\n\t\t\t\t// b. Forbid sequences of more than 4 nonspacing marks (gc=Mn or gc=Me).\r\n\t\t\t\tif (j - i > NSM_MAX) {\r\n\t\t\t\t\t// note: this slice starts with a base char or spacing-mark cm\r\n\t\t\t\t\tthrow new Error(`excessive non-spacing marks: ${bidi_qq(safe_str_from_cps(decomposed.slice(i-1, j)))} (${j-i}/${NSM_MAX})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// *** this code currently isn't needed ***\r\n\t/*\r\n\tlet cm_whitelist = M instanceof Map;\r\n\tfor (let i = 0, e = cps.length; i < e; ) {\r\n\t\tlet cp = cps[i++];\r\n\t\tlet seqs = cm_whitelist && M.get(cp);\r\n\t\tif (seqs) { \r\n\t\t\t// list of codepoints that can follow\r\n\t\t\t// if this exists, this will always be 1+\r\n\t\t\tlet j = i;\r\n\t\t\twhile (j < e && CM.has(cps[j])) j++;\r\n\t\t\tlet cms = cps.slice(i, j);\r\n\t\t\tlet match = seqs.find(seq => !compare_arrays(seq, cms));\r\n\t\t\tif (!match) throw new Error(`disallowed combining mark sequence: \"${safe_str_from_cps([cp, ...cms])}\"`);\r\n\t\t\ti = j;\r\n\t\t} else if (!V.has(cp)) {\r\n\t\t\t// https://www.unicode.org/reports/tr39/#mixed_script_confusables\r\n\t\t\tlet quoted = quoted_cp(cp);\r\n\t\t\tfor (let cp of cps) {\r\n\t\t\t\tlet u = UNIQUE.get(cp);\r\n\t\t\t\tif (u && u !== g) {\r\n\t\t\t\t\t// if both scripts are restricted this error is confusing\r\n\t\t\t\t\t// because we don't differentiate RestrictedA from RestrictedB \r\n\t\t\t\t\tif (!u.R) quoted = `${quoted} is ${u.N}`;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthrow new Error(`disallowed ${g.N} character: ${quoted}`);\r\n\t\t\t//throw new Error(`disallowed character: ${quoted} (expected ${g.N})`);\r\n\t\t\t//throw new Error(`${g.N} does not allow: ${quoted}`);\r\n\t\t}\r\n\t}\r\n\tif (!cm_whitelist) {\r\n\t\tlet decomposed = nfd(cps);\r\n\t\tfor (let i = 1, e = decomposed.length; i < e; i++) { // we know it can't be cm leading\r\n\t\t\tif (CM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\twhile (j < e && CM.has(decomposed[j])) j++;\r\n\t\t\t\tif (j - i > M) {\r\n\t\t\t\t\tthrow new Error(`too many combining marks: \"${str_from_cps(decomposed.slice(i-1, j))}\" (${j-i}/${M})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n}\r\n\r\n// given a list of codepoints\r\n// returns a list of lists, where emoji are a fully-qualified (as Array subclass)\r\n// eg. explode_cp(\"abc💩d\") => [[61, 62, 63], Emoji[1F4A9, FE0F], [64]]\r\n// 20230818: rename for 'process' name collision h/t Javarome\r\n// https://github.com/adraffy/ens-normalize.js/issues/23\r\nfunction tokens_from_str(input, nf, ef) {\r\n\tlet ret = [];\r\n\tlet chars = [];\r\n\tinput = input.slice().reverse(); // flip so we can pop\r\n\twhile (input.length) {\r\n\t\tlet emoji = consume_emoji_reversed(input);\r\n\t\tif (emoji) {\r\n\t\t\tif (chars.length) {\r\n\t\t\t\tret.push(nf(chars));\r\n\t\t\t\tchars = [];\r\n\t\t\t}\r\n\t\t\tret.push(ef(emoji));\r\n\t\t} else {\r\n\t\t\tlet cp = input.pop();\r\n\t\t\tif (VALID.has(cp)) {\r\n\t\t\t\tchars.push(cp);\r\n\t\t\t} else {\r\n\t\t\t\tlet cps = MAPPED.get(cp);\r\n\t\t\t\tif (cps) {\r\n\t\t\t\t\tchars.push(...cps); // less than 10 elements\r\n\t\t\t\t} else if (!IGNORED.has(cp)) {\r\n\t\t\t\t\t// 20230912: unicode 15.1 changed the order of processing such that\r\n\t\t\t\t\t// disallowed parts are only rejected after NFC\r\n\t\t\t\t\t// https://unicode.org/reports/tr46/#Validity_Criteria\r\n\t\t\t\t\t// this doesn't impact normalization as of today\r\n\t\t\t\t\t// technically, this error can be removed as the group logic will apply similar logic\r\n\t\t\t\t\t// however the error type might be less clear\r\n\t\t\t\t\tthrow error_disallowed(cp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (chars.length) {\r\n\t\tret.push(nf(chars));\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction filter_fe0f(cps) {\r\n\treturn cps.filter(cp => cp != FE0F);\r\n}\r\n\r\n// given array of codepoints\r\n// returns the longest valid emoji sequence (or undefined if no match)\r\n// *MUTATES* the supplied array\r\n// disallows interleaved ignored characters\r\n// fills (optional) eaten array with matched codepoints\r\nfunction consume_emoji_reversed(cps, eaten) {\r\n\tlet node = EMOJI_ROOT;\r\n\tlet emoji;\r\n\tlet pos = cps.length;\r\n\twhile (pos) {\r\n\t\tnode = node.get(cps[--pos]);\r\n\t\tif (!node) break;\r\n\t\tlet {V} = node;\r\n\t\tif (V) { // this is a valid emoji (so far)\r\n\t\t\temoji = V;\r\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // (optional) copy input, used for ens_tokenize()\r\n\t\t\tcps.length = pos; // truncate\r\n\t\t}\r\n\t}\r\n\treturn emoji;\r\n}\r\n\r\n// ************************************************************\r\n// tokenizer \r\n\r\nconst TY_VALID = 'valid';\r\nconst TY_MAPPED = 'mapped';\r\nconst TY_IGNORED = 'ignored';\r\nconst TY_DISALLOWED = 'disallowed';\r\nconst TY_EMOJI = 'emoji';\r\nconst TY_NFC = 'nfc';\r\nconst TY_STOP = 'stop';\r\n\r\nfunction ens_tokenize(name, {\r\n\tnf = true, // collapse unnormalized runs into a single token\r\n} = {}) {\r\n\tinit();\r\n\tlet input = explode_cp(name).reverse();\r\n\tlet eaten = [];\r\n\tlet tokens = [];\r\n\twhile (input.length) {\r\n\t\tlet emoji = consume_emoji_reversed(input, eaten);\r\n\t\tif (emoji) {\r\n\t\t\ttokens.push({\r\n\t\t\t\ttype: TY_EMOJI,\r\n\t\t\t\temoji: emoji.slice(), // copy emoji\r\n\t\t\t\tinput: eaten,\r\n\t\t\t\tcps: filter_fe0f(emoji)\r\n\t\t\t});\r\n\t\t\teaten = []; // reset buffer\r\n\t\t} else {\r\n\t\t\tlet cp = input.pop();\r\n\t\t\tif (cp == STOP) {\r\n\t\t\t\ttokens.push({type: TY_STOP, cp});\r\n\t\t\t} else if (VALID.has(cp)) {\r\n\t\t\t\ttokens.push({type: TY_VALID, cps: [cp]});\r\n\t\t\t} else if (IGNORED.has(cp)) {\r\n\t\t\t\ttokens.push({type: TY_IGNORED, cp});\r\n\t\t\t} else {\r\n\t\t\t\tlet cps = MAPPED.get(cp);\r\n\t\t\t\tif (cps) {\r\n\t\t\t\t\ttokens.push({type: TY_MAPPED, cp, cps: cps.slice()});\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttokens.push({type: TY_DISALLOWED, cp});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (nf) {\r\n\t\tfor (let i = 0, start = -1; i < tokens.length; i++) {\r\n\t\t\tlet token = tokens[i];\r\n\t\t\tif (is_valid_or_mapped(token.type)) {\r\n\t\t\t\tif (requires_check(token.cps)) { // normalization might be needed\r\n\t\t\t\t\tlet end = i + 1;\r\n\t\t\t\t\tfor (let pos = end; pos < tokens.length; pos++) { // find adjacent text\r\n\t\t\t\t\t\tlet {type, cps} = tokens[pos];\r\n\t\t\t\t\t\tif (is_valid_or_mapped(type)) {\r\n\t\t\t\t\t\t\tif (!requires_check(cps)) break;\r\n\t\t\t\t\t\t\tend = pos + 1;\r\n\t\t\t\t\t\t} else if (type !== TY_IGNORED) { // || type !== TY_DISALLOWED) { \r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (start < 0) start = i;\r\n\t\t\t\t\tlet slice = tokens.slice(start, end);\r\n\t\t\t\t\tlet cps0 = slice.flatMap(x => is_valid_or_mapped(x.type) ? x.cps : []); // strip junk tokens\r\n\t\t\t\t\tlet cps = nfc(cps0);\r\n\t\t\t\t\tif (compare_arrays(cps, cps0)) { // bundle into an nfc token\r\n\t\t\t\t\t\ttokens.splice(start, end - start, {\r\n\t\t\t\t\t\t\ttype: TY_NFC, \r\n\t\t\t\t\t\t\tinput: cps0, // there are 3 states: tokens0 ==(process)=> input ==(nfc)=> tokens/cps\r\n\t\t\t\t\t\t\tcps, \r\n\t\t\t\t\t\t\ttokens0: collapse_valid_tokens(slice),\r\n\t\t\t\t\t\t\ttokens: ens_tokenize(str_from_cps(cps), {nf: false})\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\ti = start;\r\n\t\t\t\t\t} else { \r\n\t\t\t\t\t\ti = end - 1; // skip to end of slice\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart = -1; // reset\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstart = i; // remember last\r\n\t\t\t\t}\r\n\t\t\t} else if (token.type !== TY_IGNORED) { // 20221024: is this correct?\r\n\t\t\t\tstart = -1; // reset\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn collapse_valid_tokens(tokens);\r\n}\r\n\r\nfunction is_valid_or_mapped(type) {\r\n\treturn type == TY_VALID || type == TY_MAPPED;\r\n}\r\n\r\nfunction requires_check(cps) {\r\n\treturn cps.some(cp => NFC_CHECK.has(cp));\r\n}\r\n\r\nfunction collapse_valid_tokens(tokens) {\r\n\tfor (let i = 0; i < tokens.length; i++) {\r\n\t\tif (tokens[i].type == TY_VALID) {\r\n\t\t\tlet j = i + 1;\r\n\t\t\twhile (j < tokens.length && tokens[j].type == TY_VALID) j++;\r\n\t\t\ttokens.splice(i, j - i, {type: TY_VALID, cps: tokens.slice(i, j).flatMap(x => x.cps)});\r\n\t\t}\r\n\t}\r\n\treturn tokens;\r\n}\n\nexport { ens_beautify, ens_emoji, ens_normalize, ens_normalize_fragment, ens_split, ens_tokenize, is_combining_mark, nfc, nfd, safe_str_from_cps, should_escape };\n","import { ens_normalize } from '@adraffy/ens-normalize';\n/**\n * @description Normalizes ENS name according to ENSIP-15.\n *\n * @example\n * normalize('wevm.eth')\n * 'wevm.eth'\n *\n * @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names\n * @see https://github.com/ensdomains/docs/blob/9edf9443de4333a0ea7ec658a870672d5d180d53/ens-improvement-proposals/ensip-15-normalization-standard.md\n */\nexport function normalize(name) {\n return ens_normalize(name);\n}\n//# sourceMappingURL=normalize.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const arbitrum = /*#__PURE__*/ defineChain({\n id: 42161,\n name: 'Arbitrum One',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://arb1.arbitrum.io/rpc'],\n },\n },\n blockExplorers: {\n default: {\n name: 'Arbiscan',\n url: 'https://arbiscan.io',\n apiUrl: 'https://api.arbiscan.io/api',\n },\n },\n contracts: {\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 7654707,\n },\n },\n});\n//# sourceMappingURL=arbitrum.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const avalanche = /*#__PURE__*/ defineChain({\n id: 43114,\n name: 'Avalanche',\n nativeCurrency: {\n decimals: 18,\n name: 'Avalanche',\n symbol: 'AVAX',\n },\n rpcUrls: {\n default: { http: ['https://api.avax.network/ext/bc/C/rpc'] },\n },\n blockExplorers: {\n default: {\n name: 'SnowScan',\n url: 'https://snowscan.xyz',\n apiUrl: 'https://api.snowscan.xyz/api',\n },\n },\n contracts: {\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 11907934,\n },\n },\n});\n//# sourceMappingURL=avalanche.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const avalancheFuji = /*#__PURE__*/ defineChain({\n id: 43113,\n name: 'Avalanche Fuji',\n nativeCurrency: {\n decimals: 18,\n name: 'Avalanche Fuji',\n symbol: 'AVAX',\n },\n rpcUrls: {\n default: { http: ['https://api.avax-test.network/ext/bc/C/rpc'] },\n },\n blockExplorers: {\n default: {\n name: 'SnowScan',\n url: 'https://testnet.snowscan.xyz',\n apiUrl: 'https://api-testnet.snowscan.xyz',\n },\n },\n contracts: {\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 7096959,\n },\n },\n testnet: true,\n});\n//# sourceMappingURL=avalancheFuji.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const mainnet = /*#__PURE__*/ defineChain({\n id: 1,\n name: 'Ethereum',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://cloudflare-eth.com'],\n },\n },\n blockExplorers: {\n default: {\n name: 'Etherscan',\n url: 'https://etherscan.io',\n apiUrl: 'https://api.etherscan.io/api',\n },\n },\n contracts: {\n ensRegistry: {\n address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n },\n ensUniversalResolver: {\n address: '0xce01f8eee7E479C928F8919abD53E553a36CeF67',\n blockCreated: 19258213,\n },\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 14353601,\n },\n },\n});\n//# sourceMappingURL=mainnet.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\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}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return
...
\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n if (target instanceof ShadowRoot) {\n target = target.host;\n }\n else {\n target = target.parentNode;\n }\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","function getVarName(variable) {\n var matches = variable.match(/^var\\((.*)\\)$/);\n if (matches) {\n return matches[1];\n }\n return variable;\n}\n\nfunction get(obj, path) {\n var result = obj;\n for (var key of path) {\n if (!(key in result)) {\n throw new Error(\"Path \".concat(path.join(' -> '), \" does not exist in object\"));\n }\n result = result[key];\n }\n return result;\n}\n\nfunction walkObject(obj, fn) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var clone = {};\n for (var key in obj) {\n var _value = obj[key];\n var currentPath = [...path, key];\n if (typeof _value === 'string' || typeof _value === 'number' || _value == null) {\n clone[key] = fn(_value, currentPath);\n } else if (typeof _value === 'object' && !Array.isArray(_value)) {\n clone[key] = walkObject(_value, fn, currentPath);\n } else {\n console.warn(\"Skipping invalid key \\\"\".concat(currentPath.join('.'), \"\\\". Should be a string, number, null or object. Received: \\\"\").concat(Array.isArray(_value) ? 'Array' : typeof _value, \"\\\"\"));\n }\n }\n return clone;\n}\n\nexport { get, getVarName, walkObject };\n","import { walkObject, get, getVarName } from '@vanilla-extract/private';\n\nfunction assignInlineVars(varsOrContract, tokens) {\n var styles = {};\n if (typeof tokens === 'object') {\n var _contract = varsOrContract;\n walkObject(tokens, (value, path) => {\n if (value == null) {\n return;\n }\n var varName = get(_contract, path);\n styles[getVarName(varName)] = String(value);\n });\n } else {\n var _vars = varsOrContract;\n for (var varName in _vars) {\n var value = _vars[varName];\n if (value == null) {\n continue;\n }\n styles[getVarName(varName)] = value;\n }\n }\n Object.defineProperty(styles, 'toString', {\n value: function value() {\n return Object.keys(this).map(key => \"\".concat(key, \":\").concat(this[key])).join(';');\n },\n writable: false\n });\n return styles;\n}\n\nfunction setVar(element, variable, value) {\n element.style.setProperty(getVarName(variable), value);\n}\nfunction setElementVars(element, varsOrContract, tokens) {\n if (typeof tokens === 'object') {\n var _contract = varsOrContract;\n walkObject(tokens, (value, path) => {\n if (value == null) {\n return;\n }\n setVar(element, get(_contract, path), String(value));\n });\n } else {\n var _vars = varsOrContract;\n for (var varName in _vars) {\n var value = _vars[varName];\n if (value == null) {\n continue;\n }\n setVar(element, varName, _vars[varName]);\n }\n }\n}\n\nexport { assignInlineVars, setElementVars };\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.37\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.37',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i, // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 ' + BROWSER]], [\n /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/2345 Browser\n ], [NAME, VERSION], [\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i, // Links\n /panasonic;(viera)/i // Panasonic Viera\n ], [NAME, VERSION], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","const Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n this.data = new TextEncoder().encode(data)\n } else {\n this.data = new Uint8Array(data)\n }\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\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","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","import { ChainNotConfiguredError, createConnector, } from '@wagmi/core';\nimport { SwitchChainError, UserRejectedRequestError, getAddress, numberToHex, } from 'viem';\ncoinbaseWallet.type = 'coinbaseWallet';\nexport function coinbaseWallet(parameters = {}) {\n if (parameters.version === '3' || parameters.headlessMode)\n return version3(parameters);\n return version4(parameters);\n}\nfunction version4(parameters) {\n let sdk;\n let walletProvider;\n let accountsChanged;\n let chainChanged;\n let disconnect;\n return createConnector((config) => ({\n id: 'coinbaseWalletSDK',\n name: 'Coinbase Wallet',\n rdns: 'com.coinbase.wallet',\n supportsSimulation: true,\n type: coinbaseWallet.type,\n async connect({ chainId } = {}) {\n try {\n const provider = await this.getProvider();\n const accounts = (await provider.request({\n method: 'eth_requestAccounts',\n })).map((x) => getAddress(x));\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n // Switch to chain if provided\n let currentChainId = await this.getChainId();\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code)\n throw error;\n return { id: currentChainId };\n });\n currentChainId = chain?.id ?? currentChainId;\n }\n return { accounts, chainId: currentChainId };\n }\n catch (error) {\n if (/(user closed modal|accounts received is empty|user denied account|request rejected)/i.test(error.message))\n throw new UserRejectedRequestError(error);\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (accountsChanged) {\n provider.removeListener('accountsChanged', accountsChanged);\n accountsChanged = undefined;\n }\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n provider.disconnect();\n provider.close?.();\n },\n async getAccounts() {\n const provider = await this.getProvider();\n return (await provider.request({\n method: 'eth_accounts',\n })).map((x) => getAddress(x));\n },\n async getChainId() {\n const provider = await this.getProvider();\n const chainId = (await provider.request({\n method: 'eth_chainId',\n }));\n return Number(chainId);\n },\n async getProvider() {\n if (!walletProvider) {\n // Unwrapping import for Vite compatibility.\n // See: https://github.com/vitejs/vite/issues/9703\n const CoinbaseWalletSDK = await (async () => {\n const SDK = await import('@coinbase/wallet-sdk');\n if (typeof SDK.CoinbaseWalletSDK !== 'function' &&\n typeof SDK.default === 'function')\n return SDK.default;\n return SDK.CoinbaseWalletSDK;\n })();\n sdk = new CoinbaseWalletSDK({\n ...parameters,\n appChainIds: config.chains.map((x) => x.id),\n });\n walletProvider = sdk.makeWeb3Provider({\n ...parameters,\n options: parameters.preference ?? 'all',\n });\n }\n return walletProvider;\n },\n async isAuthorized() {\n try {\n const accounts = await this.getAccounts();\n return !!accounts.length;\n }\n catch {\n return false;\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const chain = config.chains.find((chain) => chain.id === chainId);\n if (!chain)\n throw new SwitchChainError(new ChainNotConfiguredError());\n const provider = await this.getProvider();\n try {\n await provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chain.id) }],\n });\n return chain;\n }\n catch (error) {\n // Indicates chain is not added to provider\n if (error.code === 4902) {\n try {\n let blockExplorerUrls;\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls;\n else\n blockExplorerUrls = chain.blockExplorers?.default.url\n ? [chain.blockExplorers?.default.url]\n : [];\n let rpcUrls;\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls;\n else\n rpcUrls = [chain.rpcUrls.default?.http[0] ?? ''];\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency: addEthereumChainParameter?.nativeCurrency ??\n chain.nativeCurrency,\n rpcUrls,\n };\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n });\n return chain;\n }\n catch (error) {\n throw new UserRejectedRequestError(error);\n }\n }\n throw new SwitchChainError(error);\n }\n },\n onAccountsChanged(accounts) {\n if (accounts.length === 0)\n this.onDisconnect();\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onDisconnect(_error) {\n config.emitter.emit('disconnect');\n const provider = await this.getProvider();\n if (accountsChanged) {\n provider.removeListener('accountsChanged', accountsChanged);\n accountsChanged = undefined;\n }\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n },\n }));\n}\nfunction version3(parameters) {\n const reloadOnDisconnect = false;\n let sdk;\n let walletProvider;\n let accountsChanged;\n let chainChanged;\n let disconnect;\n return createConnector((config) => ({\n id: 'coinbaseWalletSDK',\n name: 'Coinbase Wallet',\n supportsSimulation: true,\n type: coinbaseWallet.type,\n async connect({ chainId } = {}) {\n try {\n const provider = await this.getProvider();\n const accounts = (await provider.request({\n method: 'eth_requestAccounts',\n })).map((x) => getAddress(x));\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n // Switch to chain if provided\n let currentChainId = await this.getChainId();\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code)\n throw error;\n return { id: currentChainId };\n });\n currentChainId = chain?.id ?? currentChainId;\n }\n return { accounts, chainId: currentChainId };\n }\n catch (error) {\n if (/(user closed modal|accounts received is empty|user denied account)/i.test(error.message))\n throw new UserRejectedRequestError(error);\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (accountsChanged) {\n provider.removeListener('accountsChanged', accountsChanged);\n accountsChanged = undefined;\n }\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n provider.disconnect();\n provider.close();\n },\n async getAccounts() {\n const provider = await this.getProvider();\n return (await provider.request({\n method: 'eth_accounts',\n })).map((x) => getAddress(x));\n },\n async getChainId() {\n const provider = await this.getProvider();\n const chainId = await provider.request({\n method: 'eth_chainId',\n });\n return Number(chainId);\n },\n async getProvider() {\n if (!walletProvider) {\n // Unwrapping import for Vite compatibility.\n // See: https://github.com/vitejs/vite/issues/9703\n const CoinbaseWalletSDK = await (async () => {\n const { default: SDK } = await import('cbw-sdk');\n if (typeof SDK !== 'function' && typeof SDK.default === 'function')\n return SDK.default;\n return SDK;\n })();\n sdk = new CoinbaseWalletSDK({ ...parameters, reloadOnDisconnect });\n // Force types to retrieve private `walletExtension` method from the Coinbase Wallet SDK.\n const walletExtensionChainId = sdk.walletExtension?.getChainId();\n const chain = config.chains.find((chain) => parameters.chainId\n ? chain.id === parameters.chainId\n : chain.id === walletExtensionChainId) || config.chains[0];\n const chainId = parameters.chainId || chain?.id;\n const jsonRpcUrl = parameters.jsonRpcUrl || chain?.rpcUrls.default.http[0];\n walletProvider = sdk.makeWeb3Provider(jsonRpcUrl, chainId);\n }\n return walletProvider;\n },\n async isAuthorized() {\n try {\n const accounts = await this.getAccounts();\n return !!accounts.length;\n }\n catch {\n return false;\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const chain = config.chains.find((chain) => chain.id === chainId);\n if (!chain)\n throw new SwitchChainError(new ChainNotConfiguredError());\n const provider = await this.getProvider();\n try {\n await provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chain.id) }],\n });\n return chain;\n }\n catch (error) {\n // Indicates chain is not added to provider\n if (error.code === 4902) {\n try {\n let blockExplorerUrls;\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls;\n else\n blockExplorerUrls = chain.blockExplorers?.default.url\n ? [chain.blockExplorers?.default.url]\n : [];\n let rpcUrls;\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls;\n else\n rpcUrls = [chain.rpcUrls.default?.http[0] ?? ''];\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency: addEthereumChainParameter?.nativeCurrency ??\n chain.nativeCurrency,\n rpcUrls,\n };\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n });\n return chain;\n }\n catch (error) {\n throw new UserRejectedRequestError(error);\n }\n }\n throw new SwitchChainError(error);\n }\n },\n onAccountsChanged(accounts) {\n if (accounts.length === 0)\n this.onDisconnect();\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onDisconnect(_error) {\n config.emitter.emit('disconnect');\n const provider = await this.getProvider();\n if (accountsChanged) {\n provider.removeListener('accountsChanged', accountsChanged);\n accountsChanged = undefined;\n }\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n },\n }));\n}\n//# sourceMappingURL=coinbaseWallet.js.map","import { ProviderNotFoundError, createConnector, } from '@wagmi/core';\nimport { getAddress, withTimeout } from 'viem';\nsafe.type = 'safe';\nexport function safe(parameters = {}) {\n const { shimDisconnect = false } = parameters;\n let provider_;\n let disconnect;\n return createConnector((config) => ({\n id: 'safe',\n name: 'Safe',\n type: safe.type,\n async connect() {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n const accounts = await this.getAccounts();\n const chainId = await this.getChainId();\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n // Remove disconnected shim if it exists\n if (shimDisconnect)\n await config.storage?.removeItem('safe.disconnected');\n return { accounts, chainId };\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n // Add shim signalling connector is disconnected\n if (shimDisconnect)\n await config.storage?.setItem('safe.disconnected', true);\n },\n async getAccounts() {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n return (await provider.request({ method: 'eth_accounts' })).map(getAddress);\n },\n async getProvider() {\n // Only allowed in iframe context\n const isIframe = typeof window !== 'undefined' && window?.parent !== window;\n if (!isIframe)\n return;\n if (!provider_) {\n const { default: SDK } = await import('@safe-global/safe-apps-sdk');\n const sdk = new SDK(parameters);\n // `getInfo` hangs when not used in Safe App iFrame\n // https://github.com/safe-global/safe-apps-sdk/issues/263#issuecomment-1029835840\n const safe = await withTimeout(() => sdk.safe.getInfo(), {\n timeout: parameters.unstable_getInfoTimeout ?? 10,\n });\n if (!safe)\n throw new Error('Could not load Safe information');\n // Unwrapping import for Vite compatibility.\n // See: https://github.com/vitejs/vite/issues/9703\n const SafeAppProvider = await (async () => {\n const Provider = await import('@safe-global/safe-apps-provider');\n if (typeof Provider.SafeAppProvider !== 'function' &&\n typeof Provider.default.SafeAppProvider === 'function')\n return Provider.default.SafeAppProvider;\n return Provider.SafeAppProvider;\n })();\n provider_ = new SafeAppProvider(safe, sdk);\n }\n return provider_;\n },\n async getChainId() {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n return Number(provider.chainId);\n },\n async isAuthorized() {\n try {\n const isDisconnected = shimDisconnect &&\n // If shim exists in storage, connector is disconnected\n (await config.storage?.getItem('safe.disconnected'));\n if (isDisconnected)\n return false;\n const accounts = await this.getAccounts();\n return !!accounts.length;\n }\n catch {\n return false;\n }\n },\n onAccountsChanged() {\n // Not relevant for Safe because changing account requires app reload.\n },\n onChainChanged() {\n // Not relevant for Safe because Safe smart contract wallets only exist on single chain.\n },\n onDisconnect() {\n config.emitter.emit('disconnect');\n },\n }));\n}\n//# sourceMappingURL=safe.js.map","import { ChainNotConfiguredError, ProviderNotFoundError, createConnector, extractRpcUrls, } from '@wagmi/core';\nimport { SwitchChainError, UserRejectedRequestError, getAddress, numberToHex, } from 'viem';\nwalletConnect.type = 'walletConnect';\nexport function walletConnect(parameters) {\n const isNewChainsStale = parameters.isNewChainsStale ?? true;\n let provider_;\n let providerPromise;\n const NAMESPACE = 'eip155';\n let accountsChanged;\n let chainChanged;\n let connect;\n let displayUri;\n let sessionDelete;\n let disconnect;\n return createConnector((config) => ({\n id: 'walletConnect',\n name: 'WalletConnect',\n type: walletConnect.type,\n async setup() {\n const provider = await this.getProvider().catch(() => null);\n if (!provider)\n return;\n if (!connect) {\n connect = this.onConnect.bind(this);\n provider.on('connect', connect);\n }\n if (!sessionDelete) {\n sessionDelete = this.onSessionDelete.bind(this);\n provider.on('session_delete', sessionDelete);\n }\n },\n async connect({ chainId, ...rest } = {}) {\n try {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n if (!displayUri) {\n displayUri = this.onDisplayUri;\n provider.on('display_uri', displayUri);\n }\n let targetChainId = chainId;\n if (!targetChainId) {\n const state = (await config.storage?.getItem('state')) ?? {};\n const isChainSupported = config.chains.some((x) => x.id === state.chainId);\n if (isChainSupported)\n targetChainId = state.chainId;\n else\n targetChainId = config.chains[0]?.id;\n }\n if (!targetChainId)\n throw new Error('No chains found on connector.');\n const isChainsStale = await this.isChainsStale();\n // If there is an active session with stale chains, disconnect current session.\n if (provider.session && isChainsStale)\n await provider.disconnect();\n // If there isn't an active session or chains are stale, connect.\n if (!provider.session || isChainsStale) {\n const optionalChains = config.chains\n .filter((chain) => chain.id !== targetChainId)\n .map((optionalChain) => optionalChain.id);\n await provider.connect({\n optionalChains: [targetChainId, ...optionalChains],\n ...('pairingTopic' in rest\n ? { pairingTopic: rest.pairingTopic }\n : {}),\n });\n this.setRequestedChainsIds(config.chains.map((x) => x.id));\n }\n // If session exists and chains are authorized, enable provider for required chain\n const accounts = (await provider.enable()).map((x) => getAddress(x));\n const currentChainId = await this.getChainId();\n if (displayUri) {\n provider.removeListener('display_uri', displayUri);\n displayUri = undefined;\n }\n if (connect) {\n provider.removeListener('connect', connect);\n connect = undefined;\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n if (!sessionDelete) {\n sessionDelete = this.onSessionDelete.bind(this);\n provider.on('session_delete', sessionDelete);\n }\n return { accounts, chainId: currentChainId };\n }\n catch (error) {\n if (/(user rejected|connection request reset)/i.test(error?.message)) {\n throw new UserRejectedRequestError(error);\n }\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n try {\n await provider?.disconnect();\n }\n catch (error) {\n if (!/No matching key/i.test(error.message))\n throw error;\n }\n finally {\n if (chainChanged) {\n provider?.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider?.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n if (!connect) {\n connect = this.onConnect.bind(this);\n provider?.on('connect', connect);\n }\n if (accountsChanged) {\n provider?.removeListener('accountsChanged', accountsChanged);\n accountsChanged = undefined;\n }\n if (sessionDelete) {\n provider?.removeListener('session_delete', sessionDelete);\n sessionDelete = undefined;\n }\n this.setRequestedChainsIds([]);\n }\n },\n async getAccounts() {\n const provider = await this.getProvider();\n return provider.accounts.map((x) => getAddress(x));\n },\n async getProvider({ chainId } = {}) {\n async function initProvider() {\n const optionalChains = config.chains.map((x) => x.id);\n if (!optionalChains.length)\n return;\n const { EthereumProvider } = await import('@walletconnect/ethereum-provider');\n return await EthereumProvider.init({\n ...parameters,\n disableProviderPing: true,\n optionalChains,\n projectId: parameters.projectId,\n rpcMap: Object.fromEntries(config.chains.map((chain) => {\n const [url] = extractRpcUrls({\n chain,\n transports: config.transports,\n });\n return [chain.id, url];\n })),\n showQrModal: parameters.showQrModal ?? true,\n });\n }\n if (!provider_) {\n if (!providerPromise)\n providerPromise = initProvider();\n provider_ = await providerPromise;\n provider_?.events.setMaxListeners(Number.POSITIVE_INFINITY);\n }\n if (chainId)\n await this.switchChain?.({ chainId });\n return provider_;\n },\n async getChainId() {\n const provider = await this.getProvider();\n return provider.chainId;\n },\n async isAuthorized() {\n try {\n const [accounts, provider] = await Promise.all([\n this.getAccounts(),\n this.getProvider(),\n ]);\n // If an account does not exist on the session, then the connector is unauthorized.\n if (!accounts.length)\n return false;\n // If the chains are stale on the session, then the connector is unauthorized.\n const isChainsStale = await this.isChainsStale();\n if (isChainsStale && provider.session) {\n await provider.disconnect().catch(() => { });\n return false;\n }\n return true;\n }\n catch {\n return false;\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const provider = await this.getProvider();\n if (!provider)\n throw new ProviderNotFoundError();\n const chain = config.chains.find((x) => x.id === chainId);\n if (!chain)\n throw new SwitchChainError(new ChainNotConfiguredError());\n try {\n await Promise.all([\n new Promise((resolve) => {\n const listener = ({ chainId: currentChainId, }) => {\n if (currentChainId === chainId) {\n config.emitter.off('change', listener);\n resolve();\n }\n };\n config.emitter.on('change', listener);\n }),\n provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n }),\n ]);\n const requestedChains = await this.getRequestedChainsIds();\n this.setRequestedChainsIds([...requestedChains, chainId]);\n return chain;\n }\n catch (err) {\n const error = err;\n if (/(user rejected)/i.test(error.message))\n throw new UserRejectedRequestError(error);\n // Indicates chain is not added to provider\n try {\n let blockExplorerUrls;\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls;\n else\n blockExplorerUrls = chain.blockExplorers?.default.url\n ? [chain.blockExplorers?.default.url]\n : [];\n let rpcUrls;\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls;\n else\n rpcUrls = [...chain.rpcUrls.default.http];\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency: addEthereumChainParameter?.nativeCurrency ?? chain.nativeCurrency,\n rpcUrls,\n };\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n });\n const requestedChains = await this.getRequestedChainsIds();\n this.setRequestedChainsIds([...requestedChains, chainId]);\n return chain;\n }\n catch (error) {\n throw new UserRejectedRequestError(error);\n }\n }\n },\n onAccountsChanged(accounts) {\n if (accounts.length === 0)\n this.onDisconnect();\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onConnect(connectInfo) {\n const chainId = Number(connectInfo.chainId);\n const accounts = await this.getAccounts();\n config.emitter.emit('connect', { accounts, chainId });\n },\n async onDisconnect(_error) {\n this.setRequestedChainsIds([]);\n config.emitter.emit('disconnect');\n const provider = await this.getProvider();\n if (accountsChanged) {\n provider.removeListener('accountsChanged', accountsChanged);\n accountsChanged = undefined;\n }\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n if (sessionDelete) {\n provider.removeListener('session_delete', sessionDelete);\n sessionDelete = undefined;\n }\n if (!connect) {\n connect = this.onConnect.bind(this);\n provider.on('connect', connect);\n }\n },\n onDisplayUri(uri) {\n config.emitter.emit('message', { type: 'display_uri', data: uri });\n },\n onSessionDelete() {\n this.onDisconnect();\n },\n getNamespaceChainsIds() {\n if (!provider_)\n return [];\n const chainIds = provider_.session?.namespaces[NAMESPACE]?.accounts?.map((account) => Number.parseInt(account.split(':')[1] || ''));\n return chainIds ?? [];\n },\n async getRequestedChainsIds() {\n return ((await config.storage?.getItem(this.requestedChainsStorageKey)) ?? []);\n },\n /**\n * Checks if the target chains match the chains that were\n * initially requested by the connector for the WalletConnect session.\n * If there is a mismatch, this means that the chains on the connector\n * are considered stale, and need to be revalidated at a later point (via\n * connection).\n *\n * There may be a scenario where a dapp adds a chain to the\n * connector later on, however, this chain will not have been approved or rejected\n * by the wallet. In this case, the chain is considered stale.\n */\n async isChainsStale() {\n if (!isNewChainsStale)\n return false;\n const connectorChains = config.chains.map((x) => x.id);\n const namespaceChains = this.getNamespaceChainsIds();\n if (namespaceChains.length &&\n !namespaceChains.some((id) => connectorChains.includes(id)))\n return false;\n const requestedChains = await this.getRequestedChainsIds();\n return !connectorChains.every((id) => requestedChains.includes(id));\n },\n async setRequestedChainsIds(chains) {\n await config.storage?.setItem(this.requestedChainsStorageKey, chains);\n },\n get requestedChainsStorageKey() {\n return `${this.id}.requestedChains`;\n },\n }));\n}\n//# sourceMappingURL=walletConnect.js.map","\"use client\";\nimport {\n lightTheme\n} from \"./chunk-72HZGUJA.js\";\nimport {\n darkTheme\n} from \"./chunk-RZWDCITT.js\";\nimport {\n midnightTheme\n} from \"./chunk-7ZP3ENJ2.js\";\nimport \"./chunk-DQLAW7KN.js\";\nimport {\n en_US_default\n} from \"./chunk-OPUWJDB4.js\";\n\n// src/components/ConnectButton/ConnectButton.tsx\nimport React60, { useContext as useContext22, useEffect as useEffect18, useState as useState15 } from \"react\";\n\n// src/css/sprinkles.css.ts\nimport { createMapValueFn as _51c72 } from \"@vanilla-extract/sprinkles/createUtils\";\nimport { createNormalizeValueFn as _a49f6 } from \"@vanilla-extract/sprinkles/createUtils\";\nimport { createSprinkles as _ad221 } from \"@vanilla-extract/sprinkles/createRuntimeSprinkles\";\nvar largeScreenMinWidth = 768;\nvar mapResponsiveValue = _51c72({ conditions: { defaultCondition: \"smallScreen\", conditionNames: [\"smallScreen\", \"largeScreen\"], responsiveArray: void 0 } });\nvar normalizeResponsiveValue = _a49f6({ conditions: { defaultCondition: \"smallScreen\", conditionNames: [\"smallScreen\", \"largeScreen\"], responsiveArray: void 0 } });\nvar sprinkles = _ad221({ conditions: { defaultCondition: \"base\", conditionNames: [\"base\", \"hover\", \"active\"], responsiveArray: void 0 }, styles: { background: { values: { accentColor: { conditions: { base: \"ju367v9i\", hover: \"ju367v9j\", active: \"ju367v9k\" }, defaultClass: \"ju367v9i\" }, accentColorForeground: { conditions: { base: \"ju367v9l\", hover: \"ju367v9m\", active: \"ju367v9n\" }, defaultClass: \"ju367v9l\" }, actionButtonBorder: { conditions: { base: \"ju367v9o\", hover: \"ju367v9p\", active: \"ju367v9q\" }, defaultClass: \"ju367v9o\" }, actionButtonBorderMobile: { conditions: { base: \"ju367v9r\", hover: \"ju367v9s\", active: \"ju367v9t\" }, defaultClass: \"ju367v9r\" }, actionButtonSecondaryBackground: { conditions: { base: \"ju367v9u\", hover: \"ju367v9v\", active: \"ju367v9w\" }, defaultClass: \"ju367v9u\" }, closeButton: { conditions: { base: \"ju367v9x\", hover: \"ju367v9y\", active: \"ju367v9z\" }, defaultClass: \"ju367v9x\" }, closeButtonBackground: { conditions: { base: \"ju367va0\", hover: \"ju367va1\", active: \"ju367va2\" }, defaultClass: \"ju367va0\" }, connectButtonBackground: { conditions: { base: \"ju367va3\", hover: \"ju367va4\", active: \"ju367va5\" }, defaultClass: \"ju367va3\" }, connectButtonBackgroundError: { conditions: { base: \"ju367va6\", hover: \"ju367va7\", active: \"ju367va8\" }, defaultClass: \"ju367va6\" }, connectButtonInnerBackground: { conditions: { base: \"ju367va9\", hover: \"ju367vaa\", active: \"ju367vab\" }, defaultClass: \"ju367va9\" }, connectButtonText: { conditions: { base: \"ju367vac\", hover: \"ju367vad\", active: \"ju367vae\" }, defaultClass: \"ju367vac\" }, connectButtonTextError: { conditions: { base: \"ju367vaf\", hover: \"ju367vag\", active: \"ju367vah\" }, defaultClass: \"ju367vaf\" }, connectionIndicator: { conditions: { base: \"ju367vai\", hover: \"ju367vaj\", active: \"ju367vak\" }, defaultClass: \"ju367vai\" }, downloadBottomCardBackground: { conditions: { base: \"ju367val\", hover: \"ju367vam\", active: \"ju367van\" }, defaultClass: \"ju367val\" }, downloadTopCardBackground: { conditions: { base: \"ju367vao\", hover: \"ju367vap\", active: \"ju367vaq\" }, defaultClass: \"ju367vao\" }, error: { conditions: { base: \"ju367var\", hover: \"ju367vas\", active: \"ju367vat\" }, defaultClass: \"ju367var\" }, generalBorder: { conditions: { base: \"ju367vau\", hover: \"ju367vav\", active: \"ju367vaw\" }, defaultClass: \"ju367vau\" }, generalBorderDim: { conditions: { base: \"ju367vax\", hover: \"ju367vay\", active: \"ju367vaz\" }, defaultClass: \"ju367vax\" }, menuItemBackground: { conditions: { base: \"ju367vb0\", hover: \"ju367vb1\", active: \"ju367vb2\" }, defaultClass: \"ju367vb0\" }, modalBackdrop: { conditions: { base: \"ju367vb3\", hover: \"ju367vb4\", active: \"ju367vb5\" }, defaultClass: \"ju367vb3\" }, modalBackground: { conditions: { base: \"ju367vb6\", hover: \"ju367vb7\", active: \"ju367vb8\" }, defaultClass: \"ju367vb6\" }, modalBorder: { conditions: { base: \"ju367vb9\", hover: \"ju367vba\", active: \"ju367vbb\" }, defaultClass: \"ju367vb9\" }, modalText: { conditions: { base: \"ju367vbc\", hover: \"ju367vbd\", active: \"ju367vbe\" }, defaultClass: \"ju367vbc\" }, modalTextDim: { conditions: { base: \"ju367vbf\", hover: \"ju367vbg\", active: \"ju367vbh\" }, defaultClass: \"ju367vbf\" }, modalTextSecondary: { conditions: { base: \"ju367vbi\", hover: \"ju367vbj\", active: \"ju367vbk\" }, defaultClass: \"ju367vbi\" }, profileAction: { conditions: { base: \"ju367vbl\", hover: \"ju367vbm\", active: \"ju367vbn\" }, defaultClass: \"ju367vbl\" }, profileActionHover: { conditions: { base: \"ju367vbo\", hover: \"ju367vbp\", active: \"ju367vbq\" }, defaultClass: \"ju367vbo\" }, profileForeground: { conditions: { base: \"ju367vbr\", hover: \"ju367vbs\", active: \"ju367vbt\" }, defaultClass: \"ju367vbr\" }, selectedOptionBorder: { conditions: { base: \"ju367vbu\", hover: \"ju367vbv\", active: \"ju367vbw\" }, defaultClass: \"ju367vbu\" }, standby: { conditions: { base: \"ju367vbx\", hover: \"ju367vby\", active: \"ju367vbz\" }, defaultClass: \"ju367vbx\" } } }, borderColor: { values: { accentColor: { conditions: { base: \"ju367vc0\", hover: \"ju367vc1\", active: \"ju367vc2\" }, defaultClass: \"ju367vc0\" }, accentColorForeground: { conditions: { base: \"ju367vc3\", hover: \"ju367vc4\", active: \"ju367vc5\" }, defaultClass: \"ju367vc3\" }, actionButtonBorder: { conditions: { base: \"ju367vc6\", hover: \"ju367vc7\", active: \"ju367vc8\" }, defaultClass: \"ju367vc6\" }, actionButtonBorderMobile: { conditions: { base: \"ju367vc9\", hover: \"ju367vca\", active: \"ju367vcb\" }, defaultClass: \"ju367vc9\" }, actionButtonSecondaryBackground: { conditions: { base: \"ju367vcc\", hover: \"ju367vcd\", active: \"ju367vce\" }, defaultClass: \"ju367vcc\" }, closeButton: { conditions: { base: \"ju367vcf\", hover: \"ju367vcg\", active: \"ju367vch\" }, defaultClass: \"ju367vcf\" }, closeButtonBackground: { conditions: { base: \"ju367vci\", hover: \"ju367vcj\", active: \"ju367vck\" }, defaultClass: \"ju367vci\" }, connectButtonBackground: { conditions: { base: \"ju367vcl\", hover: \"ju367vcm\", active: \"ju367vcn\" }, defaultClass: \"ju367vcl\" }, connectButtonBackgroundError: { conditions: { base: \"ju367vco\", hover: \"ju367vcp\", active: \"ju367vcq\" }, defaultClass: \"ju367vco\" }, connectButtonInnerBackground: { conditions: { base: \"ju367vcr\", hover: \"ju367vcs\", active: \"ju367vct\" }, defaultClass: \"ju367vcr\" }, connectButtonText: { conditions: { base: \"ju367vcu\", hover: \"ju367vcv\", active: \"ju367vcw\" }, defaultClass: \"ju367vcu\" }, connectButtonTextError: { conditions: { base: \"ju367vcx\", hover: \"ju367vcy\", active: \"ju367vcz\" }, defaultClass: \"ju367vcx\" }, connectionIndicator: { conditions: { base: \"ju367vd0\", hover: \"ju367vd1\", active: \"ju367vd2\" }, defaultClass: \"ju367vd0\" }, downloadBottomCardBackground: { conditions: { base: \"ju367vd3\", hover: \"ju367vd4\", active: \"ju367vd5\" }, defaultClass: \"ju367vd3\" }, downloadTopCardBackground: { conditions: { base: \"ju367vd6\", hover: \"ju367vd7\", active: \"ju367vd8\" }, defaultClass: \"ju367vd6\" }, error: { conditions: { base: \"ju367vd9\", hover: \"ju367vda\", active: \"ju367vdb\" }, defaultClass: \"ju367vd9\" }, generalBorder: { conditions: { base: \"ju367vdc\", hover: \"ju367vdd\", active: \"ju367vde\" }, defaultClass: \"ju367vdc\" }, generalBorderDim: { conditions: { base: \"ju367vdf\", hover: \"ju367vdg\", active: \"ju367vdh\" }, defaultClass: \"ju367vdf\" }, menuItemBackground: { conditions: { base: \"ju367vdi\", hover: \"ju367vdj\", active: \"ju367vdk\" }, defaultClass: \"ju367vdi\" }, modalBackdrop: { conditions: { base: \"ju367vdl\", hover: \"ju367vdm\", active: \"ju367vdn\" }, defaultClass: \"ju367vdl\" }, modalBackground: { conditions: { base: \"ju367vdo\", hover: \"ju367vdp\", active: \"ju367vdq\" }, defaultClass: \"ju367vdo\" }, modalBorder: { conditions: { base: \"ju367vdr\", hover: \"ju367vds\", active: \"ju367vdt\" }, defaultClass: \"ju367vdr\" }, modalText: { conditions: { base: \"ju367vdu\", hover: \"ju367vdv\", active: \"ju367vdw\" }, defaultClass: \"ju367vdu\" }, modalTextDim: { conditions: { base: \"ju367vdx\", hover: \"ju367vdy\", active: \"ju367vdz\" }, defaultClass: \"ju367vdx\" }, modalTextSecondary: { conditions: { base: \"ju367ve0\", hover: \"ju367ve1\", active: \"ju367ve2\" }, defaultClass: \"ju367ve0\" }, profileAction: { conditions: { base: \"ju367ve3\", hover: \"ju367ve4\", active: \"ju367ve5\" }, defaultClass: \"ju367ve3\" }, profileActionHover: { conditions: { base: \"ju367ve6\", hover: \"ju367ve7\", active: \"ju367ve8\" }, defaultClass: \"ju367ve6\" }, profileForeground: { conditions: { base: \"ju367ve9\", hover: \"ju367vea\", active: \"ju367veb\" }, defaultClass: \"ju367ve9\" }, selectedOptionBorder: { conditions: { base: \"ju367vec\", hover: \"ju367ved\", active: \"ju367vee\" }, defaultClass: \"ju367vec\" }, standby: { conditions: { base: \"ju367vef\", hover: \"ju367veg\", active: \"ju367veh\" }, defaultClass: \"ju367vef\" } } }, boxShadow: { values: { connectButton: { conditions: { base: \"ju367vei\", hover: \"ju367vej\", active: \"ju367vek\" }, defaultClass: \"ju367vei\" }, dialog: { conditions: { base: \"ju367vel\", hover: \"ju367vem\", active: \"ju367ven\" }, defaultClass: \"ju367vel\" }, profileDetailsAction: { conditions: { base: \"ju367veo\", hover: \"ju367vep\", active: \"ju367veq\" }, defaultClass: \"ju367veo\" }, selectedOption: { conditions: { base: \"ju367ver\", hover: \"ju367ves\", active: \"ju367vet\" }, defaultClass: \"ju367ver\" }, selectedWallet: { conditions: { base: \"ju367veu\", hover: \"ju367vev\", active: \"ju367vew\" }, defaultClass: \"ju367veu\" }, walletLogo: { conditions: { base: \"ju367vex\", hover: \"ju367vey\", active: \"ju367vez\" }, defaultClass: \"ju367vex\" } } }, color: { values: { accentColor: { conditions: { base: \"ju367vf0\", hover: \"ju367vf1\", active: \"ju367vf2\" }, defaultClass: \"ju367vf0\" }, accentColorForeground: { conditions: { base: \"ju367vf3\", hover: \"ju367vf4\", active: \"ju367vf5\" }, defaultClass: \"ju367vf3\" }, actionButtonBorder: { conditions: { base: \"ju367vf6\", hover: \"ju367vf7\", active: \"ju367vf8\" }, defaultClass: \"ju367vf6\" }, actionButtonBorderMobile: { conditions: { base: \"ju367vf9\", hover: \"ju367vfa\", active: \"ju367vfb\" }, defaultClass: \"ju367vf9\" }, actionButtonSecondaryBackground: { conditions: { base: \"ju367vfc\", hover: \"ju367vfd\", active: \"ju367vfe\" }, defaultClass: \"ju367vfc\" }, closeButton: { conditions: { base: \"ju367vff\", hover: \"ju367vfg\", active: \"ju367vfh\" }, defaultClass: \"ju367vff\" }, closeButtonBackground: { conditions: { base: \"ju367vfi\", hover: \"ju367vfj\", active: \"ju367vfk\" }, defaultClass: \"ju367vfi\" }, connectButtonBackground: { conditions: { base: \"ju367vfl\", hover: \"ju367vfm\", active: \"ju367vfn\" }, defaultClass: \"ju367vfl\" }, connectButtonBackgroundError: { conditions: { base: \"ju367vfo\", hover: \"ju367vfp\", active: \"ju367vfq\" }, defaultClass: \"ju367vfo\" }, connectButtonInnerBackground: { conditions: { base: \"ju367vfr\", hover: \"ju367vfs\", active: \"ju367vft\" }, defaultClass: \"ju367vfr\" }, connectButtonText: { conditions: { base: \"ju367vfu\", hover: \"ju367vfv\", active: \"ju367vfw\" }, defaultClass: \"ju367vfu\" }, connectButtonTextError: { conditions: { base: \"ju367vfx\", hover: \"ju367vfy\", active: \"ju367vfz\" }, defaultClass: \"ju367vfx\" }, connectionIndicator: { conditions: { base: \"ju367vg0\", hover: \"ju367vg1\", active: \"ju367vg2\" }, defaultClass: \"ju367vg0\" }, downloadBottomCardBackground: { conditions: { base: \"ju367vg3\", hover: \"ju367vg4\", active: \"ju367vg5\" }, defaultClass: \"ju367vg3\" }, downloadTopCardBackground: { conditions: { base: \"ju367vg6\", hover: \"ju367vg7\", active: \"ju367vg8\" }, defaultClass: \"ju367vg6\" }, error: { conditions: { base: \"ju367vg9\", hover: \"ju367vga\", active: \"ju367vgb\" }, defaultClass: \"ju367vg9\" }, generalBorder: { conditions: { base: \"ju367vgc\", hover: \"ju367vgd\", active: \"ju367vge\" }, defaultClass: \"ju367vgc\" }, generalBorderDim: { conditions: { base: \"ju367vgf\", hover: \"ju367vgg\", active: \"ju367vgh\" }, defaultClass: \"ju367vgf\" }, menuItemBackground: { conditions: { base: \"ju367vgi\", hover: \"ju367vgj\", active: \"ju367vgk\" }, defaultClass: \"ju367vgi\" }, modalBackdrop: { conditions: { base: \"ju367vgl\", hover: \"ju367vgm\", active: \"ju367vgn\" }, defaultClass: \"ju367vgl\" }, modalBackground: { conditions: { base: \"ju367vgo\", hover: \"ju367vgp\", active: \"ju367vgq\" }, defaultClass: \"ju367vgo\" }, modalBorder: { conditions: { base: \"ju367vgr\", hover: \"ju367vgs\", active: \"ju367vgt\" }, defaultClass: \"ju367vgr\" }, modalText: { conditions: { base: \"ju367vgu\", hover: \"ju367vgv\", active: \"ju367vgw\" }, defaultClass: \"ju367vgu\" }, modalTextDim: { conditions: { base: \"ju367vgx\", hover: \"ju367vgy\", active: \"ju367vgz\" }, defaultClass: \"ju367vgx\" }, modalTextSecondary: { conditions: { base: \"ju367vh0\", hover: \"ju367vh1\", active: \"ju367vh2\" }, defaultClass: \"ju367vh0\" }, profileAction: { conditions: { base: \"ju367vh3\", hover: \"ju367vh4\", active: \"ju367vh5\" }, defaultClass: \"ju367vh3\" }, profileActionHover: { conditions: { base: \"ju367vh6\", hover: \"ju367vh7\", active: \"ju367vh8\" }, defaultClass: \"ju367vh6\" }, profileForeground: { conditions: { base: \"ju367vh9\", hover: \"ju367vha\", active: \"ju367vhb\" }, defaultClass: \"ju367vh9\" }, selectedOptionBorder: { conditions: { base: \"ju367vhc\", hover: \"ju367vhd\", active: \"ju367vhe\" }, defaultClass: \"ju367vhc\" }, standby: { conditions: { base: \"ju367vhf\", hover: \"ju367vhg\", active: \"ju367vhh\" }, defaultClass: \"ju367vhf\" } } } } }, { conditions: { defaultCondition: \"smallScreen\", conditionNames: [\"smallScreen\", \"largeScreen\"], responsiveArray: void 0 }, styles: { alignItems: { values: { \"flex-start\": { conditions: { smallScreen: \"ju367v0\", largeScreen: \"ju367v1\" }, defaultClass: \"ju367v0\" }, \"flex-end\": { conditions: { smallScreen: \"ju367v2\", largeScreen: \"ju367v3\" }, defaultClass: \"ju367v2\" }, center: { conditions: { smallScreen: \"ju367v4\", largeScreen: \"ju367v5\" }, defaultClass: \"ju367v4\" } } }, display: { values: { none: { conditions: { smallScreen: \"ju367v6\", largeScreen: \"ju367v7\" }, defaultClass: \"ju367v6\" }, block: { conditions: { smallScreen: \"ju367v8\", largeScreen: \"ju367v9\" }, defaultClass: \"ju367v8\" }, flex: { conditions: { smallScreen: \"ju367va\", largeScreen: \"ju367vb\" }, defaultClass: \"ju367va\" }, inline: { conditions: { smallScreen: \"ju367vc\", largeScreen: \"ju367vd\" }, defaultClass: \"ju367vc\" } } } } }, { conditions: void 0, styles: { margin: { mappings: [\"marginTop\", \"marginBottom\", \"marginLeft\", \"marginRight\"] }, marginX: { mappings: [\"marginLeft\", \"marginRight\"] }, marginY: { mappings: [\"marginTop\", \"marginBottom\"] }, padding: { mappings: [\"paddingTop\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\"] }, paddingX: { mappings: [\"paddingLeft\", \"paddingRight\"] }, paddingY: { mappings: [\"paddingTop\", \"paddingBottom\"] }, alignSelf: { values: { \"flex-start\": { defaultClass: \"ju367ve\" }, \"flex-end\": { defaultClass: \"ju367vf\" }, center: { defaultClass: \"ju367vg\" } } }, backgroundSize: { values: { cover: { defaultClass: \"ju367vh\" } } }, borderRadius: { values: { \"1\": { defaultClass: \"ju367vi\" }, \"6\": { defaultClass: \"ju367vj\" }, \"10\": { defaultClass: \"ju367vk\" }, \"13\": { defaultClass: \"ju367vl\" }, actionButton: { defaultClass: \"ju367vm\" }, connectButton: { defaultClass: \"ju367vn\" }, menuButton: { defaultClass: \"ju367vo\" }, modal: { defaultClass: \"ju367vp\" }, modalMobile: { defaultClass: \"ju367vq\" }, \"25%\": { defaultClass: \"ju367vr\" }, full: { defaultClass: \"ju367vs\" } } }, borderStyle: { values: { solid: { defaultClass: \"ju367vt\" } } }, borderWidth: { values: { \"0\": { defaultClass: \"ju367vu\" }, \"1\": { defaultClass: \"ju367vv\" }, \"2\": { defaultClass: \"ju367vw\" }, \"4\": { defaultClass: \"ju367vx\" } } }, cursor: { values: { pointer: { defaultClass: \"ju367vy\" }, none: { defaultClass: \"ju367vz\" } } }, pointerEvents: { values: { none: { defaultClass: \"ju367v10\" }, all: { defaultClass: \"ju367v11\" } } }, minHeight: { values: { \"8\": { defaultClass: \"ju367v12\" }, \"44\": { defaultClass: \"ju367v13\" } } }, flexDirection: { values: { row: { defaultClass: \"ju367v14\" }, column: { defaultClass: \"ju367v15\" } } }, fontFamily: { values: { body: { defaultClass: \"ju367v16\" } } }, fontSize: { values: { \"12\": { defaultClass: \"ju367v17\" }, \"13\": { defaultClass: \"ju367v18\" }, \"14\": { defaultClass: \"ju367v19\" }, \"16\": { defaultClass: \"ju367v1a\" }, \"18\": { defaultClass: \"ju367v1b\" }, \"20\": { defaultClass: \"ju367v1c\" }, \"23\": { defaultClass: \"ju367v1d\" } } }, fontWeight: { values: { regular: { defaultClass: \"ju367v1e\" }, medium: { defaultClass: \"ju367v1f\" }, semibold: { defaultClass: \"ju367v1g\" }, bold: { defaultClass: \"ju367v1h\" }, heavy: { defaultClass: \"ju367v1i\" } } }, gap: { values: { \"0\": { defaultClass: \"ju367v1j\" }, \"1\": { defaultClass: \"ju367v1k\" }, \"2\": { defaultClass: \"ju367v1l\" }, \"3\": { defaultClass: \"ju367v1m\" }, \"4\": { defaultClass: \"ju367v1n\" }, \"5\": { defaultClass: \"ju367v1o\" }, \"6\": { defaultClass: \"ju367v1p\" }, \"8\": { defaultClass: \"ju367v1q\" }, \"10\": { defaultClass: \"ju367v1r\" }, \"12\": { defaultClass: \"ju367v1s\" }, \"14\": { defaultClass: \"ju367v1t\" }, \"16\": { defaultClass: \"ju367v1u\" }, \"18\": { defaultClass: \"ju367v1v\" }, \"20\": { defaultClass: \"ju367v1w\" }, \"24\": { defaultClass: \"ju367v1x\" }, \"28\": { defaultClass: \"ju367v1y\" }, \"32\": { defaultClass: \"ju367v1z\" }, \"36\": { defaultClass: \"ju367v20\" }, \"44\": { defaultClass: \"ju367v21\" }, \"64\": { defaultClass: \"ju367v22\" }, \"-1\": { defaultClass: \"ju367v23\" } } }, height: { values: { \"1\": { defaultClass: \"ju367v24\" }, \"2\": { defaultClass: \"ju367v25\" }, \"4\": { defaultClass: \"ju367v26\" }, \"8\": { defaultClass: \"ju367v27\" }, \"12\": { defaultClass: \"ju367v28\" }, \"20\": { defaultClass: \"ju367v29\" }, \"24\": { defaultClass: \"ju367v2a\" }, \"28\": { defaultClass: \"ju367v2b\" }, \"30\": { defaultClass: \"ju367v2c\" }, \"32\": { defaultClass: \"ju367v2d\" }, \"34\": { defaultClass: \"ju367v2e\" }, \"36\": { defaultClass: \"ju367v2f\" }, \"40\": { defaultClass: \"ju367v2g\" }, \"44\": { defaultClass: \"ju367v2h\" }, \"48\": { defaultClass: \"ju367v2i\" }, \"54\": { defaultClass: \"ju367v2j\" }, \"60\": { defaultClass: \"ju367v2k\" }, \"200\": { defaultClass: \"ju367v2l\" }, full: { defaultClass: \"ju367v2m\" }, max: { defaultClass: \"ju367v2n\" } } }, justifyContent: { values: { \"flex-start\": { defaultClass: \"ju367v2o\" }, \"flex-end\": { defaultClass: \"ju367v2p\" }, center: { defaultClass: \"ju367v2q\" }, \"space-between\": { defaultClass: \"ju367v2r\" }, \"space-around\": { defaultClass: \"ju367v2s\" } } }, textAlign: { values: { left: { defaultClass: \"ju367v2t\" }, center: { defaultClass: \"ju367v2u\" }, inherit: { defaultClass: \"ju367v2v\" } } }, marginBottom: { values: { \"0\": { defaultClass: \"ju367v2w\" }, \"1\": { defaultClass: \"ju367v2x\" }, \"2\": { defaultClass: \"ju367v2y\" }, \"3\": { defaultClass: \"ju367v2z\" }, \"4\": { defaultClass: \"ju367v30\" }, \"5\": { defaultClass: \"ju367v31\" }, \"6\": { defaultClass: \"ju367v32\" }, \"8\": { defaultClass: \"ju367v33\" }, \"10\": { defaultClass: \"ju367v34\" }, \"12\": { defaultClass: \"ju367v35\" }, \"14\": { defaultClass: \"ju367v36\" }, \"16\": { defaultClass: \"ju367v37\" }, \"18\": { defaultClass: \"ju367v38\" }, \"20\": { defaultClass: \"ju367v39\" }, \"24\": { defaultClass: \"ju367v3a\" }, \"28\": { defaultClass: \"ju367v3b\" }, \"32\": { defaultClass: \"ju367v3c\" }, \"36\": { defaultClass: \"ju367v3d\" }, \"44\": { defaultClass: \"ju367v3e\" }, \"64\": { defaultClass: \"ju367v3f\" }, \"-1\": { defaultClass: \"ju367v3g\" } } }, marginLeft: { values: { \"0\": { defaultClass: \"ju367v3h\" }, \"1\": { defaultClass: \"ju367v3i\" }, \"2\": { defaultClass: \"ju367v3j\" }, \"3\": { defaultClass: \"ju367v3k\" }, \"4\": { defaultClass: \"ju367v3l\" }, \"5\": { defaultClass: \"ju367v3m\" }, \"6\": { defaultClass: \"ju367v3n\" }, \"8\": { defaultClass: \"ju367v3o\" }, \"10\": { defaultClass: \"ju367v3p\" }, \"12\": { defaultClass: \"ju367v3q\" }, \"14\": { defaultClass: \"ju367v3r\" }, \"16\": { defaultClass: \"ju367v3s\" }, \"18\": { defaultClass: \"ju367v3t\" }, \"20\": { defaultClass: \"ju367v3u\" }, \"24\": { defaultClass: \"ju367v3v\" }, \"28\": { defaultClass: \"ju367v3w\" }, \"32\": { defaultClass: \"ju367v3x\" }, \"36\": { defaultClass: \"ju367v3y\" }, \"44\": { defaultClass: \"ju367v3z\" }, \"64\": { defaultClass: \"ju367v40\" }, \"-1\": { defaultClass: \"ju367v41\" } } }, marginRight: { values: { \"0\": { defaultClass: \"ju367v42\" }, \"1\": { defaultClass: \"ju367v43\" }, \"2\": { defaultClass: \"ju367v44\" }, \"3\": { defaultClass: \"ju367v45\" }, \"4\": { defaultClass: \"ju367v46\" }, \"5\": { defaultClass: \"ju367v47\" }, \"6\": { defaultClass: \"ju367v48\" }, \"8\": { defaultClass: \"ju367v49\" }, \"10\": { defaultClass: \"ju367v4a\" }, \"12\": { defaultClass: \"ju367v4b\" }, \"14\": { defaultClass: \"ju367v4c\" }, \"16\": { defaultClass: \"ju367v4d\" }, \"18\": { defaultClass: \"ju367v4e\" }, \"20\": { defaultClass: \"ju367v4f\" }, \"24\": { defaultClass: \"ju367v4g\" }, \"28\": { defaultClass: \"ju367v4h\" }, \"32\": { defaultClass: \"ju367v4i\" }, \"36\": { defaultClass: \"ju367v4j\" }, \"44\": { defaultClass: \"ju367v4k\" }, \"64\": { defaultClass: \"ju367v4l\" }, \"-1\": { defaultClass: \"ju367v4m\" } } }, marginTop: { values: { \"0\": { defaultClass: \"ju367v4n\" }, \"1\": { defaultClass: \"ju367v4o\" }, \"2\": { defaultClass: \"ju367v4p\" }, \"3\": { defaultClass: \"ju367v4q\" }, \"4\": { defaultClass: \"ju367v4r\" }, \"5\": { defaultClass: \"ju367v4s\" }, \"6\": { defaultClass: \"ju367v4t\" }, \"8\": { defaultClass: \"ju367v4u\" }, \"10\": { defaultClass: \"ju367v4v\" }, \"12\": { defaultClass: \"ju367v4w\" }, \"14\": { defaultClass: \"ju367v4x\" }, \"16\": { defaultClass: \"ju367v4y\" }, \"18\": { defaultClass: \"ju367v4z\" }, \"20\": { defaultClass: \"ju367v50\" }, \"24\": { defaultClass: \"ju367v51\" }, \"28\": { defaultClass: \"ju367v52\" }, \"32\": { defaultClass: \"ju367v53\" }, \"36\": { defaultClass: \"ju367v54\" }, \"44\": { defaultClass: \"ju367v55\" }, \"64\": { defaultClass: \"ju367v56\" }, \"-1\": { defaultClass: \"ju367v57\" } } }, maxWidth: { values: { \"1\": { defaultClass: \"ju367v58\" }, \"2\": { defaultClass: \"ju367v59\" }, \"4\": { defaultClass: \"ju367v5a\" }, \"8\": { defaultClass: \"ju367v5b\" }, \"12\": { defaultClass: \"ju367v5c\" }, \"20\": { defaultClass: \"ju367v5d\" }, \"24\": { defaultClass: \"ju367v5e\" }, \"28\": { defaultClass: \"ju367v5f\" }, \"30\": { defaultClass: \"ju367v5g\" }, \"32\": { defaultClass: \"ju367v5h\" }, \"34\": { defaultClass: \"ju367v5i\" }, \"36\": { defaultClass: \"ju367v5j\" }, \"40\": { defaultClass: \"ju367v5k\" }, \"44\": { defaultClass: \"ju367v5l\" }, \"48\": { defaultClass: \"ju367v5m\" }, \"54\": { defaultClass: \"ju367v5n\" }, \"60\": { defaultClass: \"ju367v5o\" }, \"200\": { defaultClass: \"ju367v5p\" }, full: { defaultClass: \"ju367v5q\" }, max: { defaultClass: \"ju367v5r\" } } }, minWidth: { values: { \"1\": { defaultClass: \"ju367v5s\" }, \"2\": { defaultClass: \"ju367v5t\" }, \"4\": { defaultClass: \"ju367v5u\" }, \"8\": { defaultClass: \"ju367v5v\" }, \"12\": { defaultClass: \"ju367v5w\" }, \"20\": { defaultClass: \"ju367v5x\" }, \"24\": { defaultClass: \"ju367v5y\" }, \"28\": { defaultClass: \"ju367v5z\" }, \"30\": { defaultClass: \"ju367v60\" }, \"32\": { defaultClass: \"ju367v61\" }, \"34\": { defaultClass: \"ju367v62\" }, \"36\": { defaultClass: \"ju367v63\" }, \"40\": { defaultClass: \"ju367v64\" }, \"44\": { defaultClass: \"ju367v65\" }, \"48\": { defaultClass: \"ju367v66\" }, \"54\": { defaultClass: \"ju367v67\" }, \"60\": { defaultClass: \"ju367v68\" }, \"200\": { defaultClass: \"ju367v69\" }, full: { defaultClass: \"ju367v6a\" }, max: { defaultClass: \"ju367v6b\" } } }, overflow: { values: { hidden: { defaultClass: \"ju367v6c\" } } }, paddingBottom: { values: { \"0\": { defaultClass: \"ju367v6d\" }, \"1\": { defaultClass: \"ju367v6e\" }, \"2\": { defaultClass: \"ju367v6f\" }, \"3\": { defaultClass: \"ju367v6g\" }, \"4\": { defaultClass: \"ju367v6h\" }, \"5\": { defaultClass: \"ju367v6i\" }, \"6\": { defaultClass: \"ju367v6j\" }, \"8\": { defaultClass: \"ju367v6k\" }, \"10\": { defaultClass: \"ju367v6l\" }, \"12\": { defaultClass: \"ju367v6m\" }, \"14\": { defaultClass: \"ju367v6n\" }, \"16\": { defaultClass: \"ju367v6o\" }, \"18\": { defaultClass: \"ju367v6p\" }, \"20\": { defaultClass: \"ju367v6q\" }, \"24\": { defaultClass: \"ju367v6r\" }, \"28\": { defaultClass: \"ju367v6s\" }, \"32\": { defaultClass: \"ju367v6t\" }, \"36\": { defaultClass: \"ju367v6u\" }, \"44\": { defaultClass: \"ju367v6v\" }, \"64\": { defaultClass: \"ju367v6w\" }, \"-1\": { defaultClass: \"ju367v6x\" } } }, paddingLeft: { values: { \"0\": { defaultClass: \"ju367v6y\" }, \"1\": { defaultClass: \"ju367v6z\" }, \"2\": { defaultClass: \"ju367v70\" }, \"3\": { defaultClass: \"ju367v71\" }, \"4\": { defaultClass: \"ju367v72\" }, \"5\": { defaultClass: \"ju367v73\" }, \"6\": { defaultClass: \"ju367v74\" }, \"8\": { defaultClass: \"ju367v75\" }, \"10\": { defaultClass: \"ju367v76\" }, \"12\": { defaultClass: \"ju367v77\" }, \"14\": { defaultClass: \"ju367v78\" }, \"16\": { defaultClass: \"ju367v79\" }, \"18\": { defaultClass: \"ju367v7a\" }, \"20\": { defaultClass: \"ju367v7b\" }, \"24\": { defaultClass: \"ju367v7c\" }, \"28\": { defaultClass: \"ju367v7d\" }, \"32\": { defaultClass: \"ju367v7e\" }, \"36\": { defaultClass: \"ju367v7f\" }, \"44\": { defaultClass: \"ju367v7g\" }, \"64\": { defaultClass: \"ju367v7h\" }, \"-1\": { defaultClass: \"ju367v7i\" } } }, paddingRight: { values: { \"0\": { defaultClass: \"ju367v7j\" }, \"1\": { defaultClass: \"ju367v7k\" }, \"2\": { defaultClass: \"ju367v7l\" }, \"3\": { defaultClass: \"ju367v7m\" }, \"4\": { defaultClass: \"ju367v7n\" }, \"5\": { defaultClass: \"ju367v7o\" }, \"6\": { defaultClass: \"ju367v7p\" }, \"8\": { defaultClass: \"ju367v7q\" }, \"10\": { defaultClass: \"ju367v7r\" }, \"12\": { defaultClass: \"ju367v7s\" }, \"14\": { defaultClass: \"ju367v7t\" }, \"16\": { defaultClass: \"ju367v7u\" }, \"18\": { defaultClass: \"ju367v7v\" }, \"20\": { defaultClass: \"ju367v7w\" }, \"24\": { defaultClass: \"ju367v7x\" }, \"28\": { defaultClass: \"ju367v7y\" }, \"32\": { defaultClass: \"ju367v7z\" }, \"36\": { defaultClass: \"ju367v80\" }, \"44\": { defaultClass: \"ju367v81\" }, \"64\": { defaultClass: \"ju367v82\" }, \"-1\": { defaultClass: \"ju367v83\" } } }, paddingTop: { values: { \"0\": { defaultClass: \"ju367v84\" }, \"1\": { defaultClass: \"ju367v85\" }, \"2\": { defaultClass: \"ju367v86\" }, \"3\": { defaultClass: \"ju367v87\" }, \"4\": { defaultClass: \"ju367v88\" }, \"5\": { defaultClass: \"ju367v89\" }, \"6\": { defaultClass: \"ju367v8a\" }, \"8\": { defaultClass: \"ju367v8b\" }, \"10\": { defaultClass: \"ju367v8c\" }, \"12\": { defaultClass: \"ju367v8d\" }, \"14\": { defaultClass: \"ju367v8e\" }, \"16\": { defaultClass: \"ju367v8f\" }, \"18\": { defaultClass: \"ju367v8g\" }, \"20\": { defaultClass: \"ju367v8h\" }, \"24\": { defaultClass: \"ju367v8i\" }, \"28\": { defaultClass: \"ju367v8j\" }, \"32\": { defaultClass: \"ju367v8k\" }, \"36\": { defaultClass: \"ju367v8l\" }, \"44\": { defaultClass: \"ju367v8m\" }, \"64\": { defaultClass: \"ju367v8n\" }, \"-1\": { defaultClass: \"ju367v8o\" } } }, position: { values: { absolute: { defaultClass: \"ju367v8p\" }, fixed: { defaultClass: \"ju367v8q\" }, relative: { defaultClass: \"ju367v8r\" } } }, WebkitUserSelect: { values: { none: { defaultClass: \"ju367v8s\" } } }, right: { values: { \"0\": { defaultClass: \"ju367v8t\" } } }, transition: { values: { \"default\": { defaultClass: \"ju367v8u\" }, transform: { defaultClass: \"ju367v8v\" } } }, userSelect: { values: { none: { defaultClass: \"ju367v8w\" } } }, width: { values: { \"1\": { defaultClass: \"ju367v8x\" }, \"2\": { defaultClass: \"ju367v8y\" }, \"4\": { defaultClass: \"ju367v8z\" }, \"8\": { defaultClass: \"ju367v90\" }, \"12\": { defaultClass: \"ju367v91\" }, \"20\": { defaultClass: \"ju367v92\" }, \"24\": { defaultClass: \"ju367v93\" }, \"28\": { defaultClass: \"ju367v94\" }, \"30\": { defaultClass: \"ju367v95\" }, \"32\": { defaultClass: \"ju367v96\" }, \"34\": { defaultClass: \"ju367v97\" }, \"36\": { defaultClass: \"ju367v98\" }, \"40\": { defaultClass: \"ju367v99\" }, \"44\": { defaultClass: \"ju367v9a\" }, \"48\": { defaultClass: \"ju367v9b\" }, \"54\": { defaultClass: \"ju367v9c\" }, \"60\": { defaultClass: \"ju367v9d\" }, \"200\": { defaultClass: \"ju367v9e\" }, full: { defaultClass: \"ju367v9f\" }, max: { defaultClass: \"ju367v9g\" } } }, backdropFilter: { values: { modalOverlay: { defaultClass: \"ju367v9h\" } } } } });\nvar themeVars = { colors: { accentColor: \"var(--rk-colors-accentColor)\", accentColorForeground: \"var(--rk-colors-accentColorForeground)\", actionButtonBorder: \"var(--rk-colors-actionButtonBorder)\", actionButtonBorderMobile: \"var(--rk-colors-actionButtonBorderMobile)\", actionButtonSecondaryBackground: \"var(--rk-colors-actionButtonSecondaryBackground)\", closeButton: \"var(--rk-colors-closeButton)\", closeButtonBackground: \"var(--rk-colors-closeButtonBackground)\", connectButtonBackground: \"var(--rk-colors-connectButtonBackground)\", connectButtonBackgroundError: \"var(--rk-colors-connectButtonBackgroundError)\", connectButtonInnerBackground: \"var(--rk-colors-connectButtonInnerBackground)\", connectButtonText: \"var(--rk-colors-connectButtonText)\", connectButtonTextError: \"var(--rk-colors-connectButtonTextError)\", connectionIndicator: \"var(--rk-colors-connectionIndicator)\", downloadBottomCardBackground: \"var(--rk-colors-downloadBottomCardBackground)\", downloadTopCardBackground: \"var(--rk-colors-downloadTopCardBackground)\", error: \"var(--rk-colors-error)\", generalBorder: \"var(--rk-colors-generalBorder)\", generalBorderDim: \"var(--rk-colors-generalBorderDim)\", menuItemBackground: \"var(--rk-colors-menuItemBackground)\", modalBackdrop: \"var(--rk-colors-modalBackdrop)\", modalBackground: \"var(--rk-colors-modalBackground)\", modalBorder: \"var(--rk-colors-modalBorder)\", modalText: \"var(--rk-colors-modalText)\", modalTextDim: \"var(--rk-colors-modalTextDim)\", modalTextSecondary: \"var(--rk-colors-modalTextSecondary)\", profileAction: \"var(--rk-colors-profileAction)\", profileActionHover: \"var(--rk-colors-profileActionHover)\", profileForeground: \"var(--rk-colors-profileForeground)\", selectedOptionBorder: \"var(--rk-colors-selectedOptionBorder)\", standby: \"var(--rk-colors-standby)\" }, fonts: { body: \"var(--rk-fonts-body)\" }, radii: { actionButton: \"var(--rk-radii-actionButton)\", connectButton: \"var(--rk-radii-connectButton)\", menuButton: \"var(--rk-radii-menuButton)\", modal: \"var(--rk-radii-modal)\", modalMobile: \"var(--rk-radii-modalMobile)\" }, shadows: { connectButton: \"var(--rk-shadows-connectButton)\", dialog: \"var(--rk-shadows-dialog)\", profileDetailsAction: \"var(--rk-shadows-profileDetailsAction)\", selectedOption: \"var(--rk-shadows-selectedOption)\", selectedWallet: \"var(--rk-shadows-selectedWallet)\", walletLogo: \"var(--rk-shadows-walletLogo)\" }, blurs: { modalOverlay: \"var(--rk-blurs-modalOverlay)\" } };\n\n// src/css/touchableStyles.css.ts\nvar active = { shrink: \"_12cbo8i6\", shrinkSm: \"_12cbo8i7\" };\nvar base = \"_12cbo8i3 ju367v8r\";\nvar hover = { grow: \"_12cbo8i4\", growLg: \"_12cbo8i5\" };\n\n// src/css/touchableStyles.ts\nfunction touchableStyles({ active: active2, hover: hover2 }) {\n return [base, hover2 && hover[hover2], active[active2]];\n}\n\n// src/hooks/useConnectionStatus.ts\nimport { useAccount as useAccount2 } from \"wagmi\";\n\n// src/components/RainbowKitProvider/AuthenticationContext.tsx\nimport React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState\n} from \"react\";\nimport { useAccount, useAccountEffect } from \"wagmi\";\nfunction createAuthenticationAdapter(adapter) {\n return adapter;\n}\nvar AuthenticationContext = createContext(\n null\n);\nfunction RainbowKitAuthenticationProvider({\n adapter,\n children,\n enabled = true,\n status\n}) {\n const { connector } = useAccount();\n const [currentConnectorUid, setCurrentConnectorUid] = useState();\n useAccountEffect({\n onDisconnect: () => {\n adapter.signOut();\n setCurrentConnectorUid(void 0);\n }\n });\n const handleChangedAccount = (data) => {\n if (data.accounts) {\n setCurrentConnectorUid(void 0);\n adapter.signOut();\n }\n };\n useEffect(() => {\n if (typeof connector?.emitter?.on === \"function\" && status === \"authenticated\") {\n setCurrentConnectorUid(connector?.uid);\n connector.emitter.on(\"change\", handleChangedAccount);\n return () => {\n connector.emitter.off(\"change\", handleChangedAccount);\n };\n }\n }, [connector?.emitter, status]);\n useEffect(() => {\n if (currentConnectorUid && typeof connector?.emitter?.on === \"function\" && status === \"authenticated\") {\n if (connector?.uid !== currentConnectorUid) {\n setCurrentConnectorUid(void 0);\n adapter.signOut();\n }\n }\n }, [connector?.emitter, currentConnectorUid, status]);\n return /* @__PURE__ */ React.createElement(\n AuthenticationContext.Provider,\n {\n value: useMemo(\n () => enabled ? { adapter, status } : null,\n [enabled, adapter, status]\n )\n },\n children\n );\n}\nfunction useAuthenticationAdapter() {\n const { adapter } = useContext(AuthenticationContext) ?? {};\n if (!adapter) {\n throw new Error(\"No authentication adapter found\");\n }\n return adapter;\n}\nfunction useAuthenticationStatus() {\n const contextValue = useContext(AuthenticationContext);\n return contextValue?.status ?? null;\n}\n\n// src/hooks/useConnectionStatus.ts\nfunction useConnectionStatus() {\n const authenticationStatus = useAuthenticationStatus();\n const { isConnected } = useAccount2();\n if (!isConnected) {\n return \"disconnected\";\n }\n if (!authenticationStatus) {\n return \"connected\";\n }\n if (authenticationStatus === \"loading\" || authenticationStatus === \"unauthenticated\") {\n return authenticationStatus;\n }\n return \"connected\";\n}\n\n// src/utils/isMobile.ts\nfunction isAndroid() {\n return typeof navigator !== \"undefined\" && /android/i.test(navigator.userAgent);\n}\nfunction isSmallIOS() {\n return typeof navigator !== \"undefined\" && /iPhone|iPod/.test(navigator.userAgent);\n}\nfunction isLargeIOS() {\n return typeof navigator !== \"undefined\" && (/iPad/.test(navigator.userAgent) || navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1);\n}\nfunction isIOS() {\n return isSmallIOS() || isLargeIOS();\n}\nfunction isMobile() {\n return isAndroid() || isIOS();\n}\n\n// src/components/AsyncImage/AsyncImage.tsx\nimport React3, { useReducer as useReducer2 } from \"react\";\n\n// src/components/Box/Box.ts\nimport clsx2 from \"clsx\";\nimport React2 from \"react\";\n\n// src/css/atoms.ts\nimport clsx from \"clsx\";\n\n// src/css/reset.css.ts\nvar base2 = \"iekbcc0\";\nvar element = { a: \"iekbcca\", blockquote: \"iekbcc2\", button: \"iekbcc9\", input: \"iekbcc8 iekbcc5 iekbcc4\", mark: \"iekbcc6\", ol: \"iekbcc1\", q: \"iekbcc2\", select: \"iekbcc7 iekbcc5 iekbcc4\", table: \"iekbcc3\", textarea: \"iekbcc5 iekbcc4\", ul: \"iekbcc1\" };\n\n// src/css/atoms.ts\nvar atoms = ({ reset, ...rest }) => {\n if (!reset)\n return sprinkles(rest);\n const elementReset = element[reset];\n const sprinklesClasses = sprinkles(rest);\n return clsx(base2, elementReset, sprinklesClasses);\n};\n\n// src/components/Box/Box.ts\nvar Box = React2.forwardRef(\n ({ as = \"div\", className, testId, ...props }, ref) => {\n const atomProps = {};\n const nativeProps = {};\n for (const key in props) {\n if (sprinkles.properties.has(key)) {\n atomProps[key] = props[key];\n } else {\n nativeProps[key] = props[key];\n }\n }\n const atomicClasses = atoms({\n reset: typeof as === \"string\" ? as : \"div\",\n ...atomProps\n });\n return React2.createElement(as, {\n className: clsx2(atomicClasses, className),\n ...nativeProps,\n \"data-testid\": testId ? `rk-${testId.replace(/^rk-/, \"\")}` : void 0,\n ref\n });\n }\n);\nBox.displayName = \"Box\";\n\n// src/components/AsyncImage/useAsyncImage.ts\nimport { useEffect as useEffect2, useReducer } from \"react\";\nvar cachedUrls = /* @__PURE__ */ new Map();\nvar cachedRequestPromises = /* @__PURE__ */ new Map();\nasync function loadAsyncImage(asyncImage) {\n const cachedRequestPromise = cachedRequestPromises.get(asyncImage);\n if (cachedRequestPromise) {\n return cachedRequestPromise;\n }\n const load = async () => asyncImage().then(async (url) => {\n cachedUrls.set(asyncImage, url);\n return url;\n });\n const requestPromise = load().catch((_err) => {\n return load().catch((_err2) => {\n cachedRequestPromises.delete(asyncImage);\n });\n });\n cachedRequestPromises.set(asyncImage, requestPromise);\n return requestPromise;\n}\nasync function loadImages(...urls) {\n return await Promise.all(\n urls.map((url) => typeof url === \"function\" ? loadAsyncImage(url) : url)\n );\n}\nfunction useForceUpdate() {\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n return forceUpdate;\n}\nfunction useAsyncImage(url) {\n const cachedUrl = typeof url === \"function\" ? cachedUrls.get(url) : void 0;\n const forceUpdate = useForceUpdate();\n useEffect2(() => {\n if (typeof url === \"function\" && !cachedUrl) {\n loadAsyncImage(url).then(forceUpdate);\n }\n }, [url, cachedUrl, forceUpdate]);\n return typeof url === \"function\" ? cachedUrl : url;\n}\n\n// src/components/AsyncImage/AsyncImage.tsx\nfunction AsyncImage({\n alt,\n background,\n borderColor,\n borderRadius,\n useAsImage,\n boxShadow,\n height,\n src: srcProp,\n width,\n testId\n}) {\n const ios = isIOS();\n const src7 = useAsyncImage(srcProp);\n const isRemoteImage = src7 && /^http/.test(src7);\n const [isRemoteImageLoaded, setRemoteImageLoaded] = useReducer2(\n () => true,\n false\n );\n return /* @__PURE__ */ React3.createElement(\n Box,\n {\n \"aria-label\": alt,\n borderRadius,\n boxShadow,\n height: typeof height === \"string\" ? height : void 0,\n overflow: \"hidden\",\n position: \"relative\",\n role: \"img\",\n style: {\n background,\n height: typeof height === \"number\" ? height : void 0,\n width: typeof width === \"number\" ? width : void 0\n },\n width: typeof width === \"string\" ? width : void 0,\n testId\n },\n /* @__PURE__ */ React3.createElement(\n Box,\n {\n ...isRemoteImage ? (\n // biome-ignore format: design system keys\n {\n \"aria-hidden\": true,\n as: \"img\",\n onLoad: setRemoteImageLoaded,\n src: src7\n }\n ) : { \"aria-hidden\": true, as: \"img\", src: src7 },\n height: \"full\",\n position: \"absolute\",\n ...ios ? { WebkitUserSelect: \"none\" } : {},\n style: {\n WebkitTouchCallout: \"none\",\n transition: \"opacity .15s linear\",\n userSelect: \"none\",\n ...!useAsImage && isRemoteImage ? {\n opacity: isRemoteImageLoaded ? 1 : 0\n } : {}\n },\n width: \"full\"\n }\n ),\n borderColor ? /* @__PURE__ */ React3.createElement(\n Box,\n {\n ...typeof borderColor === \"object\" && \"custom\" in borderColor ? { style: { borderColor: borderColor.custom } } : { borderColor },\n borderRadius,\n borderStyle: \"solid\",\n borderWidth: \"1\",\n height: \"full\",\n position: \"relative\",\n width: \"full\"\n }\n ) : null\n );\n}\n\n// src/components/Avatar/Avatar.tsx\nimport React6, { useContext as useContext2 } from \"react\";\n\n// src/components/Icons/Spinner.tsx\nimport React4, { useMemo as useMemo2 } from \"react\";\n\n// src/components/Icons/Icons.css.ts\nvar SpinnerIconClassName = \"_1luule42\";\nvar SpinnerIconPathClassName = \"_1luule43\";\n\n// src/components/Icons/Spinner.tsx\nvar useRandomId = (prefix) => useMemo2(\n () => `${prefix}_${Math.round(Math.random() * 1e9)}`,\n [prefix]\n);\nvar SpinnerIcon = ({\n height = 21,\n width = 21\n}) => {\n const id = useRandomId(\"spinner\");\n return /* @__PURE__ */ React4.createElement(\n \"svg\",\n {\n className: SpinnerIconClassName,\n fill: \"none\",\n height,\n viewBox: \"0 0 21 21\",\n width,\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React4.createElement(\"title\", null, \"Loading\"),\n /* @__PURE__ */ React4.createElement(\"clipPath\", { id }, /* @__PURE__ */ React4.createElement(\"path\", { d: \"M10.5 3C6.35786 3 3 6.35786 3 10.5C3 14.6421 6.35786 18 10.5 18C11.3284 18 12 18.6716 12 19.5C12 20.3284 11.3284 21 10.5 21C4.70101 21 0 16.299 0 10.5C0 4.70101 4.70101 0 10.5 0C16.299 0 21 4.70101 21 10.5C21 11.3284 20.3284 12 19.5 12C18.6716 12 18 11.3284 18 10.5C18 6.35786 14.6421 3 10.5 3Z\" })),\n /* @__PURE__ */ React4.createElement(\n \"foreignObject\",\n {\n clipPath: `url(#${id})`,\n height: \"21\",\n width: \"21\",\n x: \"0\",\n y: \"0\"\n },\n /* @__PURE__ */ React4.createElement(\"div\", { className: SpinnerIconPathClassName })\n )\n );\n};\n\n// src/components/RainbowKitProvider/AvatarContext.ts\nimport { createContext as createContext2 } from \"react\";\n\n// src/components/Avatar/EmojiAvatar.tsx\nimport React5, { useEffect as useEffect3, useMemo as useMemo3, useState as useState2 } from \"react\";\n\n// src/components/Avatar/emojiAvatarForAddress.ts\nvar colors = [\n \"#FC5C54\",\n \"#FFD95A\",\n \"#E95D72\",\n \"#6A87C8\",\n \"#5FD0F3\",\n \"#75C06B\",\n \"#FFDD86\",\n \"#5FC6D4\",\n \"#FF949A\",\n \"#FF8024\",\n \"#9BA1A4\",\n \"#EC66FF\",\n \"#FF8CBC\",\n \"#FF9A23\",\n \"#C5DADB\",\n \"#A8CE63\",\n \"#71ABFF\",\n \"#FFE279\",\n \"#B6B1B6\",\n \"#FF6780\",\n \"#A575FF\",\n \"#4D82FF\",\n \"#FFB35A\"\n];\nvar avatars = [\n { color: colors[0], emoji: \"\\u{1F336}\" },\n { color: colors[1], emoji: \"\\u{1F911}\" },\n { color: colors[2], emoji: \"\\u{1F419}\" },\n { color: colors[3], emoji: \"\\u{1FAD0}\" },\n { color: colors[4], emoji: \"\\u{1F433}\" },\n { color: colors[0], emoji: \"\\u{1F936}\" },\n { color: colors[5], emoji: \"\\u{1F332}\" },\n { color: colors[6], emoji: \"\\u{1F31E}\" },\n { color: colors[7], emoji: \"\\u{1F412}\" },\n { color: colors[8], emoji: \"\\u{1F435}\" },\n { color: colors[9], emoji: \"\\u{1F98A}\" },\n { color: colors[10], emoji: \"\\u{1F43C}\" },\n { color: colors[11], emoji: \"\\u{1F984}\" },\n { color: colors[12], emoji: \"\\u{1F437}\" },\n { color: colors[13], emoji: \"\\u{1F427}\" },\n { color: colors[8], emoji: \"\\u{1F9A9}\" },\n { color: colors[14], emoji: \"\\u{1F47D}\" },\n { color: colors[0], emoji: \"\\u{1F388}\" },\n { color: colors[8], emoji: \"\\u{1F349}\" },\n { color: colors[1], emoji: \"\\u{1F389}\" },\n { color: colors[15], emoji: \"\\u{1F432}\" },\n { color: colors[16], emoji: \"\\u{1F30E}\" },\n { color: colors[17], emoji: \"\\u{1F34A}\" },\n { color: colors[18], emoji: \"\\u{1F42D}\" },\n { color: colors[19], emoji: \"\\u{1F363}\" },\n { color: colors[1], emoji: \"\\u{1F425}\" },\n { color: colors[20], emoji: \"\\u{1F47E}\" },\n { color: colors[15], emoji: \"\\u{1F966}\" },\n { color: colors[0], emoji: \"\\u{1F479}\" },\n { color: colors[17], emoji: \"\\u{1F640}\" },\n { color: colors[4], emoji: \"\\u26F1\" },\n { color: colors[21], emoji: \"\\u26F5\\uFE0F\" },\n { color: colors[17], emoji: \"\\u{1F973}\" },\n { color: colors[8], emoji: \"\\u{1F92F}\" },\n { color: colors[22], emoji: \"\\u{1F920}\" }\n];\nfunction hashCode(text) {\n let hash = 0;\n if (text.length === 0)\n return hash;\n for (let i = 0; i < text.length; i++) {\n const chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return hash;\n}\nfunction emojiAvatarForAddress(address) {\n const resolvedAddress = typeof address === \"string\" ? address : \"\";\n const avatarIndex = Math.abs(\n hashCode(resolvedAddress.toLowerCase()) % avatars.length\n );\n return avatars[avatarIndex ?? 0];\n}\n\n// src/components/Avatar/EmojiAvatar.tsx\nvar EmojiAvatar = ({ address, ensImage, size }) => {\n const [loaded, setLoaded] = useState2(false);\n useEffect3(() => {\n if (ensImage) {\n const img = new Image();\n img.src = ensImage;\n img.onload = () => setLoaded(true);\n }\n }, [ensImage]);\n const { color: backgroundColor, emoji } = useMemo3(\n () => emojiAvatarForAddress(address),\n [address]\n );\n return ensImage ? loaded ? /* @__PURE__ */ React5.createElement(\n Box,\n {\n backgroundSize: \"cover\",\n borderRadius: \"full\",\n position: \"absolute\",\n style: {\n backgroundImage: `url(${ensImage})`,\n backgroundPosition: \"center\",\n height: size,\n width: size\n }\n }\n ) : /* @__PURE__ */ React5.createElement(\n Box,\n {\n alignItems: \"center\",\n backgroundSize: \"cover\",\n borderRadius: \"full\",\n color: \"modalText\",\n display: \"flex\",\n justifyContent: \"center\",\n position: \"absolute\",\n style: {\n height: size,\n width: size\n }\n },\n /* @__PURE__ */ React5.createElement(SpinnerIcon, null)\n ) : /* @__PURE__ */ React5.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n style: {\n ...!ensImage && { backgroundColor },\n height: size,\n width: size\n }\n },\n emoji\n );\n};\n\n// src/components/RainbowKitProvider/AvatarContext.ts\nvar defaultAvatar = EmojiAvatar;\nvar AvatarContext = createContext2(defaultAvatar);\n\n// src/components/Avatar/Avatar.tsx\nfunction Avatar({ address, imageUrl, loading, size }) {\n const AvatarComponent = useContext2(AvatarContext);\n return /* @__PURE__ */ React6.createElement(\n Box,\n {\n \"aria-hidden\": true,\n borderRadius: \"full\",\n overflow: \"hidden\",\n position: \"relative\",\n style: {\n height: `${size}px`,\n width: `${size}px`\n },\n userSelect: \"none\"\n },\n /* @__PURE__ */ React6.createElement(\n Box,\n {\n alignItems: \"center\",\n borderRadius: \"full\",\n display: \"flex\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n position: \"absolute\",\n style: {\n fontSize: `${Math.round(size * 0.55)}px`,\n height: `${size}px`,\n transform: loading ? \"scale(0.72)\" : void 0,\n transition: \".25s ease\",\n transitionDelay: loading ? void 0 : \".1s\",\n width: `${size}px`,\n willChange: \"transform\"\n },\n userSelect: \"none\"\n },\n /* @__PURE__ */ React6.createElement(AvatarComponent, { address, ensImage: imageUrl, size })\n ),\n loading && /* @__PURE__ */ React6.createElement(\n Box,\n {\n color: \"accentColor\",\n display: \"flex\",\n height: \"full\",\n position: \"absolute\",\n width: \"full\"\n },\n /* @__PURE__ */ React6.createElement(SpinnerIcon, { height: \"100%\", width: \"100%\" })\n )\n );\n}\n\n// src/components/Icons/Dropdown.tsx\nimport React7 from \"react\";\nvar DropdownIcon = () => /* @__PURE__ */ React7.createElement(\"svg\", { fill: \"none\", height: \"7\", width: \"14\", xmlns: \"http://www.w3.org/2000/svg\" }, /* @__PURE__ */ React7.createElement(\"title\", null, \"Dropdown\"), /* @__PURE__ */ React7.createElement(\n \"path\",\n {\n d: \"M12.75 1.54001L8.51647 5.0038C7.77974 5.60658 6.72026 5.60658 5.98352 5.0038L1.75 1.54001\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"2.5\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }\n));\n\n// src/components/RainbowKitProvider/I18nContext.tsx\nimport React8, {\n createContext as createContext3,\n useEffect as useEffect4,\n useMemo as useMemo4,\n useState as useState3\n} from \"react\";\n\n// src/locales/I18n.ts\nvar defaultOptions = {\n defaultLocale: \"en\",\n locale: \"en\"\n};\nvar I18n = class {\n constructor(localeTranslations) {\n this.listeners = /* @__PURE__ */ new Set();\n this.defaultLocale = defaultOptions.defaultLocale;\n this.enableFallback = false;\n this.locale = defaultOptions.locale;\n this.cachedLocales = [];\n this.translations = {};\n for (const [locale, translation] of Object.entries(localeTranslations)) {\n this.cachedLocales = [...this.cachedLocales, locale];\n this.translations = {\n ...this.translations,\n ...this.flattenTranslation(translation, locale)\n };\n }\n }\n missingMessage(key) {\n return `[missing: \"${this.locale}.${key}\" translation]`;\n }\n flattenTranslation(translationObject, locale) {\n const result = {};\n const flatten = (currentTranslationObj, parentKey) => {\n for (const key of Object.keys(currentTranslationObj)) {\n const newKey = `${parentKey}.${key}`;\n const currentValue = currentTranslationObj[key];\n if (typeof currentValue === \"object\" && currentValue !== null) {\n flatten(currentValue, newKey);\n } else {\n result[newKey] = currentValue;\n }\n }\n };\n flatten(translationObject, locale);\n return result;\n }\n translateWithReplacements(translation, replacements = {}) {\n let translatedString = translation;\n for (const placeholder in replacements) {\n const replacementValue = replacements[placeholder];\n translatedString = translatedString.replace(\n `%{${placeholder}}`,\n replacementValue\n );\n }\n return translatedString;\n }\n t(key, replacements, options) {\n const translationKey = `${this.locale}.${key}`;\n const translation = this.translations[translationKey];\n if (!translation) {\n if (this.enableFallback) {\n const fallbackTranslationKey = `${this.defaultLocale}.${key}`;\n const fallbackTranslation = this.translations[fallbackTranslationKey];\n if (fallbackTranslation) {\n return this.translateWithReplacements(\n fallbackTranslation,\n replacements\n );\n }\n }\n if (options?.rawKeyIfTranslationMissing)\n return key;\n return this.missingMessage(key);\n }\n return this.translateWithReplacements(translation, replacements);\n }\n isLocaleCached(locale) {\n return this.cachedLocales.includes(locale);\n }\n updateLocale(locale) {\n this.locale = locale;\n this.notifyListeners();\n }\n setTranslations(locale, translations) {\n const cachedLocale = this.isLocaleCached(locale);\n if (!cachedLocale) {\n this.cachedLocales = [...this.cachedLocales, locale];\n this.translations = {\n ...this.translations,\n ...this.flattenTranslation(translations, locale)\n };\n }\n this.locale = locale;\n this.notifyListeners();\n }\n notifyListeners() {\n for (const listener of this.listeners) {\n listener();\n }\n }\n onChange(fn) {\n this.listeners.add(fn);\n return () => {\n this.listeners.delete(fn);\n };\n }\n};\n\n// src/locales/index.ts\nvar i18n = new I18n({\n en: JSON.parse(en_US_default),\n \"en-US\": JSON.parse(en_US_default)\n});\ni18n.defaultLocale = \"en-US\";\ni18n.locale = \"en-US\";\ni18n.enableFallback = true;\nvar fetchTranslations = async (locale) => {\n switch (locale) {\n case \"ar\":\n case \"ar-AR\":\n return (await import(\"./ar_AR-EFG7DWCD.js\")).default;\n case \"en\":\n case \"en-US\":\n return (await import(\"./en_US-762U7H2X.js\")).default;\n case \"es\":\n case \"es-419\":\n return (await import(\"./es_419-HHD3PTWJ.js\")).default;\n case \"fr\":\n case \"fr-FR\":\n return (await import(\"./fr_FR-YJOM2FKT.js\")).default;\n case \"hi\":\n case \"hi-IN\":\n return (await import(\"./hi_IN-6LCB42ZP.js\")).default;\n case \"id\":\n case \"id-ID\":\n return (await import(\"./id_ID-XEJUOSPY.js\")).default;\n case \"ja\":\n case \"ja-JP\":\n return (await import(\"./ja_JP-Y2UY5DJF.js\")).default;\n case \"ko\":\n case \"ko-KR\":\n return (await import(\"./ko_KR-XEZDL32S.js\")).default;\n case \"pt\":\n case \"pt-BR\":\n return (await import(\"./pt_BR-URWA5SSF.js\")).default;\n case \"ru\":\n case \"ru-RU\":\n return (await import(\"./ru_RU-S2JHPZU4.js\")).default;\n case \"th\":\n case \"th-TH\":\n return (await import(\"./th_TH-ERMCTL3T.js\")).default;\n case \"tr\":\n case \"tr-TR\":\n return (await import(\"./tr_TR-7U4SQPKU.js\")).default;\n case \"ua\":\n case \"uk-UA\":\n return (await import(\"./uk_UA-EWJFZZZQ.js\")).default;\n case \"vi\":\n case \"vi-VN\":\n return (await import(\"./vi_VN-PML3AXSR.js\")).default;\n case \"zh\":\n case \"zh-CN\":\n case \"zh-Hans\":\n return (await import(\"./zh_CN-R6N3SRTH.js\")).default;\n case \"zh-HK\":\n return (await import(\"./zh_HK-ZZAF3UAE.js\")).default;\n case \"zh-Hant\":\n case \"zh-TW\":\n return (await import(\"./zh_TW-KSS4HRUK.js\")).default;\n default:\n return (await import(\"./en_US-762U7H2X.js\")).default;\n }\n};\nasync function setLocale(locale) {\n const isCached = i18n.isLocaleCached(locale);\n if (isCached) {\n i18n.updateLocale(locale);\n return;\n }\n const translations = await fetchTranslations(locale);\n i18n.setTranslations(locale, JSON.parse(translations));\n}\n\n// src/utils/locale.ts\nvar detectedBrowserLocale = () => {\n if (typeof window !== \"undefined\" && typeof navigator !== \"undefined\") {\n if (navigator.languages?.length) {\n return navigator.languages[0];\n }\n if (navigator.language) {\n return navigator.language;\n }\n }\n};\n\n// src/components/RainbowKitProvider/I18nContext.tsx\nvar I18nContext = createContext3({ i18n });\nvar I18nProvider = ({ children, locale }) => {\n const [updateCount, setUpdateCount] = useState3(0);\n const browserLocale = useMemo4(\n () => detectedBrowserLocale(),\n []\n );\n useEffect4(() => {\n const unsubscribe = i18n.onChange(() => {\n setUpdateCount((count) => count + 1);\n });\n return unsubscribe;\n }, []);\n useEffect4(() => {\n if (locale && locale !== i18n.locale) {\n setLocale(locale);\n } else if (!locale && browserLocale && browserLocale !== i18n.locale) {\n setLocale(browserLocale);\n }\n }, [locale, browserLocale]);\n const memoizedValue = useMemo4(() => {\n const t = (key, options) => i18n.t(key, options);\n return { t, i18n };\n }, [updateCount]);\n return /* @__PURE__ */ React8.createElement(I18nContext.Provider, { value: memoizedValue }, children);\n};\n\n// src/components/RainbowKitProvider/RainbowKitChainContext.tsx\nimport React9, {\n createContext as createContext4,\n useContext as useContext3,\n useMemo as useMemo5\n} from \"react\";\nimport { useConfig } from \"wagmi\";\n\n// src/utils/isNotNullish.ts\nfunction isNotNullish(value) {\n return value != null;\n}\n\n// src/components/RainbowKitProvider/provideRainbowKitChains.ts\nvar arbitrumIcon = {\n iconBackground: \"#96bedc\",\n iconUrl: async () => (await import(\"./arbitrum-IA4OWRTN.js\")).default\n};\nvar avalancheIcon = {\n iconBackground: \"#e84141\",\n iconUrl: async () => (await import(\"./avalanche-MXEFEDSW.js\")).default\n};\nvar baseIcon = {\n iconBackground: \"#0052ff\",\n iconUrl: async () => (await import(\"./base-Z4LFBE5D.js\")).default\n};\nvar blastIcon = {\n iconBackground: \"#000000\",\n iconUrl: async () => (await import(\"./blast-TN2WIMWF.js\")).default\n};\nvar bscIcon = {\n iconBackground: \"#ebac0e\",\n iconUrl: async () => (await import(\"./bsc-RVE67I5L.js\")).default\n};\nvar celoIcon = {\n iconBackground: \"#FCFF52\",\n iconUrl: async () => (await import(\"./celo-E6XU57FO.js\")).default\n};\nvar cronosIcon = {\n iconBackground: \"#002D74\",\n iconUrl: async () => (await import(\"./cronos-ROYR77VZ.js\")).default\n};\nvar ethereumIcon = {\n iconBackground: \"#484c50\",\n iconUrl: async () => (await import(\"./ethereum-RFBAMUVK.js\")).default\n};\nvar gnosisIcon = {\n iconBackground: \"#04795c\",\n iconUrl: async () => (await import(\"./gnosis-T7U5EW2Q.js\")).default\n};\nvar hardhatIcon = {\n iconBackground: \"#f9f7ec\",\n iconUrl: async () => (await import(\"./hardhat-NEEC6JX7.js\")).default\n};\nvar klaytnIcon = {\n iconBackground: \"transparent\",\n iconUrl: async () => (await import(\"./klaytn-QTDBZIB3.js\")).default\n};\nvar optimismIcon = {\n iconBackground: \"#ff5a57\",\n iconUrl: async () => (await import(\"./optimism-VD7XDD2W.js\")).default\n};\nvar mantaIcon = {\n iconBackground: \"#ffffff\",\n iconUrl: async () => (await import(\"./manta-5V6W5D7G.js\")).default\n};\nvar mantleIcon = {\n iconBackground: \"#000000\",\n iconUrl: async () => (await import(\"./mantle-KBL3OIYT.js\")).default\n};\nvar polygonIcon = {\n iconBackground: \"#9f71ec\",\n iconUrl: async () => (await import(\"./polygon-WWEUOMKW.js\")).default\n};\nvar xdcIcon = {\n iconBackground: \"#f9f7ec\",\n iconUrl: async () => (await import(\"./xdc-X7V4QFNF.js\")).default\n};\nvar zetachainIcon = {\n iconBackground: \"#000000\",\n iconUrl: async () => (await import(\"./zetachain-BMJKVYBN.js\")).default\n};\nvar zkSyncIcon = {\n iconBackground: \"#f9f7ec\",\n iconUrl: async () => (await import(\"./zkSync-JL26RB7U.js\")).default\n};\nvar zoraIcon = {\n iconBackground: \"#000000\",\n iconUrl: async () => (await import(\"./zora-YZH32HP3.js\")).default\n};\nvar roninIcon = {\n iconBackground: \"#1273EA\",\n iconUrl: async () => (await import(\"./ronin-PNHX5V6H.js\")).default\n};\nvar chainMetadataByName = {\n arbitrum: { chainId: 42161, name: \"Arbitrum\", ...arbitrumIcon },\n arbitrumGoerli: { chainId: 421613, ...arbitrumIcon },\n arbitrumSepolia: { chainId: 421614, ...arbitrumIcon },\n avalanche: { chainId: 43114, ...avalancheIcon },\n avalancheFuji: { chainId: 43113, ...avalancheIcon },\n base: { chainId: 8453, name: \"Base\", ...baseIcon },\n baseGoerli: { chainId: 84531, ...baseIcon },\n baseSepolia: { chainId: 84532, ...baseIcon },\n blast: { chainId: 81457, name: \"Blast\", ...blastIcon },\n blastSepolia: { chainId: 168587773, ...blastIcon },\n bsc: { chainId: 56, name: \"BSC\", ...bscIcon },\n bscTestnet: { chainId: 97, ...bscIcon },\n celo: { chainId: 42220, name: \"Celo\", ...celoIcon },\n celoAlfajores: { chainId: 44787, name: \"Celo Alfajores\", ...celoIcon },\n cronos: { chainId: 25, ...cronosIcon },\n cronosTestnet: { chainId: 338, ...cronosIcon },\n goerli: { chainId: 5, ...ethereumIcon },\n gnosis: { chainId: 100, name: \"Gnosis\", ...gnosisIcon },\n hardhat: { chainId: 31337, ...hardhatIcon },\n holesky: { chainId: 17e3, ...ethereumIcon },\n kovan: { chainId: 42, ...ethereumIcon },\n klaytn: { chainId: 8217, name: \"Klaytn\", ...klaytnIcon },\n klaytnBaobab: { chainId: 1001, name: \"Klaytn Baobab\", ...klaytnIcon },\n localhost: { chainId: 1337, ...ethereumIcon },\n mainnet: { chainId: 1, name: \"Ethereum\", ...ethereumIcon },\n manta: { chainId: 169, name: \"Manta\", ...mantaIcon },\n mantaSepolia: { chainId: 3441006, ...mantaIcon },\n mantaTestnet: { chainId: 3441005, ...mantaIcon },\n mantle: { chainId: 5e3, ...mantleIcon },\n mantleTestnet: { chainId: 5001, ...mantleIcon },\n optimism: { chainId: 10, name: \"Optimism\", ...optimismIcon },\n optimismGoerli: { chainId: 420, ...optimismIcon },\n optimismKovan: { chainId: 69, ...optimismIcon },\n optimismSepolia: { chainId: 11155420, ...optimismIcon },\n polygon: { chainId: 137, name: \"Polygon\", ...polygonIcon },\n polygonMumbai: { chainId: 80001, ...polygonIcon },\n rinkeby: { chainId: 4, ...ethereumIcon },\n ropsten: { chainId: 3, ...ethereumIcon },\n ronin: { chainId: 2020, ...roninIcon },\n sepolia: { chainId: 11155111, ...ethereumIcon },\n xdc: { chainId: 50, name: \"XinFin\", ...xdcIcon },\n xdcTestnet: { chainId: 51, ...xdcIcon },\n zetachain: { chainId: 7e3, name: \"ZetaChain\", ...zetachainIcon },\n zetachainAthensTestnet: {\n chainId: 7001,\n name: \"Zeta Athens\",\n ...zetachainIcon\n },\n zkSync: { chainId: 324, name: \"zkSync\", ...zkSyncIcon },\n zkSyncTestnet: { chainId: 280, ...zkSyncIcon },\n zora: { chainId: 7777777, name: \"Zora\", ...zoraIcon },\n zoraSepolia: { chainId: 999999999, ...zoraIcon },\n zoraTestnet: { chainId: 999, ...zoraIcon }\n};\nvar chainMetadataById = Object.fromEntries(\n Object.values(chainMetadataByName).filter(isNotNullish).map(({ chainId, ...metadata }) => [chainId, metadata])\n);\nvar provideRainbowKitChains = (chains) => chains.map((chain) => {\n const defaultMetadata = chainMetadataById[chain.id] ?? {};\n return {\n ...chain,\n name: defaultMetadata.name ?? chain.name,\n // favor colloquial names\n iconUrl: chain.iconUrl ?? defaultMetadata.iconUrl,\n iconBackground: chain.iconBackground ?? defaultMetadata.iconBackground\n };\n});\n\n// src/components/RainbowKitProvider/RainbowKitChainContext.tsx\nvar RainbowKitChainContext = createContext4({\n chains: []\n});\nfunction RainbowKitChainProvider({\n children,\n initialChain\n}) {\n const { chains } = useConfig();\n return /* @__PURE__ */ React9.createElement(\n RainbowKitChainContext.Provider,\n {\n value: useMemo5(\n () => ({\n chains: provideRainbowKitChains(chains),\n initialChainId: typeof initialChain === \"number\" ? initialChain : initialChain?.id\n }),\n [chains, initialChain]\n )\n },\n children\n );\n}\nvar useRainbowKitChains = () => useContext3(RainbowKitChainContext).chains;\nvar useInitialChainId = () => useContext3(RainbowKitChainContext).initialChainId;\nvar useRainbowKitChainsById = () => {\n const rainbowkitChains = useRainbowKitChains();\n return useMemo5(() => {\n const rainbowkitChainsById = {};\n for (const rkChain of rainbowkitChains) {\n rainbowkitChainsById[rkChain.id] = rkChain;\n }\n return rainbowkitChainsById;\n }, [rainbowkitChains]);\n};\n\n// src/components/RainbowKitProvider/ShowBalanceContext.tsx\nimport React10, {\n createContext as createContext5,\n useContext as useContext4,\n useState as useState4\n} from \"react\";\nvar ShowBalanceContext = createContext5({\n showBalance: void 0,\n setShowBalance: () => {\n }\n});\nfunction ShowBalanceProvider({ children }) {\n const [showBalance, setShowBalance] = useState4();\n return /* @__PURE__ */ React10.createElement(ShowBalanceContext.Provider, { value: { showBalance, setShowBalance } }, children);\n}\nvar useShowBalance = () => useContext4(ShowBalanceContext);\n\n// src/components/ConnectButton/ConnectButtonRenderer.tsx\nimport React59, { useContext as useContext21 } from \"react\";\nimport { useAccount as useAccount14, useConfig as useConfig4 } from \"wagmi\";\n\n// src/hooks/useIsMounted.ts\nimport { useCallback, useEffect as useEffect5, useState as useState5 } from \"react\";\nfunction useIsMounted() {\n const [isMounted, setIsMounted] = useState5(false);\n useEffect5(() => {\n setIsMounted(true);\n return () => {\n setIsMounted(false);\n };\n }, []);\n return useCallback(() => isMounted, [isMounted]);\n}\n\n// src/hooks/useProfile.ts\nimport { useBalance } from \"wagmi\";\n\n// src/hooks/useMainnetEnsAvatar.ts\nimport { normalize } from \"viem/ens\";\nimport { useEnsAvatar } from \"wagmi\";\nimport { mainnet as mainnet2 } from \"wagmi/chains\";\n\n// src/hooks/useIsMainnetConfigured.ts\nimport { mainnet } from \"wagmi/chains\";\nfunction useIsMainnetConfigured() {\n const rainbowKitChains = useRainbowKitChains();\n const chainId = mainnet.id;\n const configured = rainbowKitChains.some(\n (rainbowKitChain) => rainbowKitChain.id === chainId\n );\n return configured;\n}\n\n// src/hooks/useMainnetEnsAvatar.ts\nfunction useMainnetEnsAvatar(name) {\n const mainnetConfigured = useIsMainnetConfigured();\n const safeNormalize = (ensName) => {\n try {\n return normalize(ensName);\n } catch {\n }\n };\n const { data: ensAvatar } = useEnsAvatar({\n chainId: mainnet2.id,\n name: name ? safeNormalize(name) : void 0,\n query: {\n enabled: mainnetConfigured\n }\n });\n return ensAvatar;\n}\n\n// src/hooks/useMainnetEnsName.ts\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useEnsName } from \"wagmi\";\nimport { mainnet as mainnet3 } from \"wagmi/chains\";\n\n// src/core/network/internal/rainbowFetch.ts\nasync function rainbowFetch(url, opts) {\n opts = {\n headers: {},\n method: \"get\",\n ...opts,\n // Any other fetch options\n timeout: opts.timeout ?? 1e4\n // 10 secs\n };\n if (!url)\n throw new Error(\"rainbowFetch: Missing url argument\");\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), opts.timeout);\n const { body, params, headers, ...otherOpts } = opts;\n const requestBody = body && typeof body === \"object\" ? JSON.stringify(opts.body) : opts.body;\n const response = await fetch(`${url}${createParams(params)}`, {\n ...otherOpts,\n body: requestBody,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...headers\n },\n signal: controller.signal\n });\n clearTimeout(id);\n const responseBody = await getBody(response);\n if (response.ok) {\n const { headers: headers2, status } = response;\n return { data: responseBody, headers: headers2, status };\n }\n const errorResponseBody = typeof responseBody === \"string\" ? { error: responseBody } : responseBody;\n const error = generateError({\n requestBody: body,\n response,\n responseBody: errorResponseBody\n });\n throw error;\n}\nfunction getBody(response) {\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType?.startsWith(\"application/json\")) {\n return response.json();\n }\n return response.text();\n}\nfunction createParams(params) {\n return params && Object.keys(params).length ? `?${new URLSearchParams(params)}` : \"\";\n}\nfunction generateError({\n requestBody,\n response,\n responseBody\n}) {\n const message = responseBody?.error || response?.statusText || \"There was an error with the request.\";\n const error = new Error(message);\n error.response = response;\n error.responseBody = responseBody;\n error.requestBody = requestBody;\n return error;\n}\nvar RainbowFetchClient = class {\n constructor(opts = {}) {\n const { baseUrl = \"\", ...otherOpts } = opts;\n this.baseUrl = baseUrl;\n this.opts = otherOpts;\n }\n /**\n * Perform a GET request with the RainbowFetchClient.\n */\n get(url, opts) {\n return rainbowFetch(`${this.baseUrl}${url}`, {\n ...this.opts,\n ...opts || {},\n method: \"get\"\n });\n }\n /**\n * Perform a DELETE request with the RainbowFetchClient.\n */\n delete(url, opts) {\n return rainbowFetch(`${this.baseUrl}${url}`, {\n ...this.opts,\n ...opts || {},\n method: \"delete\"\n });\n }\n /**\n * Perform a HEAD request with the RainbowFetchClient.\n */\n head(url, opts) {\n return rainbowFetch(`${this.baseUrl}${url}`, {\n ...this.opts,\n ...opts || {},\n method: \"head\"\n });\n }\n /**\n * Perform a OPTIONS request with the RainbowFetchClient.\n */\n options(url, opts) {\n return rainbowFetch(`${this.baseUrl}${url}`, {\n ...this.opts,\n ...opts || {},\n method: \"options\"\n });\n }\n /**\n * Perform a POST request with the RainbowFetchClient.\n */\n post(url, body, opts) {\n return rainbowFetch(`${this.baseUrl}${url}`, {\n ...this.opts,\n ...opts || {},\n body,\n method: \"post\"\n });\n }\n /**\n * Perform a PUT request with the RainbowFetchClient.\n */\n put(url, body, opts) {\n return rainbowFetch(`${this.baseUrl}${url}`, {\n ...this.opts,\n ...opts || {},\n body,\n method: \"put\"\n });\n }\n /**\n * Perform a PATCH request with the RainbowFetchClient.\n */\n patch(url, body, opts) {\n return rainbowFetch(`${this.baseUrl}${url}`, {\n ...this.opts,\n ...opts || {},\n body,\n method: \"patch\"\n });\n }\n};\n\n// src/core/network/internal/createHttpClient.ts\nfunction createHttpClient({\n baseUrl,\n headers,\n params,\n timeout\n}) {\n return new RainbowFetchClient({ baseUrl, headers, params, timeout });\n}\n\n// src/core/network/enhancedProvider.ts\nvar ENHANCED_PROVIDER_ENABLED = Boolean(\n typeof process !== \"undefined\" && typeof process.env !== \"undefined\" && process.env.RAINBOW_PROVIDER_API_KEY\n);\nvar enhancedProviderHttp = createHttpClient({\n baseUrl: \"https://enhanced-provider.rainbow.me\",\n headers: {\n \"x-api-key\": typeof process !== \"undefined\" && typeof process.env !== \"undefined\" && process.env.RAINBOW_PROVIDER_API_KEY || \"LzbasoBiLqltex3VkcQ7LRmL4PtfiiZ1EMJrizrgfonWN6byJReu/l6yrUoo3zLW\"\n }\n});\n\n// src/core/react-query/createQuery.ts\nfunction createQueryKey(key, args, config = {}) {\n return [key, args, config];\n}\n\n// src/utils/ens.ts\nimport { isAddress } from \"viem\";\nfunction getStorageEnsNameKey(address) {\n return `rk-ens-name-${address}`;\n}\nfunction safeParseJsonData(string) {\n try {\n const value = string ? JSON.parse(string) : null;\n return typeof value === \"object\" ? value : null;\n } catch {\n return null;\n }\n}\nfunction addEnsName(address, ensName) {\n if (!isAddress(address))\n return;\n const now = /* @__PURE__ */ new Date();\n const expiry = new Date(now.getTime() + 180 * 6e4);\n localStorage.setItem(\n getStorageEnsNameKey(address),\n JSON.stringify({\n ensName,\n expires: expiry.getTime()\n })\n );\n}\nfunction getEnsName(address) {\n const data = safeParseJsonData(\n localStorage.getItem(getStorageEnsNameKey(address))\n );\n if (!data)\n return null;\n const { ensName, expires } = data;\n if (typeof ensName !== \"string\" || Number.isNaN(Number(expires))) {\n localStorage.removeItem(getStorageEnsNameKey(address));\n return null;\n }\n const now = /* @__PURE__ */ new Date();\n if (now.getTime() > Number(expires)) {\n localStorage.removeItem(getStorageEnsNameKey(address));\n return null;\n }\n return ensName;\n}\n\n// src/hooks/useMainnetEnsName.ts\nasync function getEnhancedProviderEnsName({ address }) {\n const ensName = getEnsName(address);\n if (ensName)\n return ensName;\n const response = await enhancedProviderHttp.get(\"/v1/resolve-ens\", { params: { address } });\n const enhancedProviderEnsName = response.data.data;\n if (enhancedProviderEnsName) {\n addEnsName(address, enhancedProviderEnsName);\n }\n return enhancedProviderEnsName;\n}\nfunction useMainnetEnsName(address) {\n const mainnetConfigured = useIsMainnetConfigured();\n const { data: ensName } = useEnsName({\n chainId: mainnet3.id,\n address,\n query: {\n enabled: mainnetConfigured\n }\n });\n const { data: enhancedProviderEnsName } = useQuery({\n queryKey: createQueryKey(\"address\", address),\n queryFn: () => getEnhancedProviderEnsName({ address }),\n enabled: !mainnetConfigured && !!address && ENHANCED_PROVIDER_ENABLED,\n staleTime: 10 * (60 * 1e3),\n // 10 minutes\n retry: 1\n // Retry once before returning undefined if the request fails\n });\n return ensName || enhancedProviderEnsName;\n}\n\n// src/hooks/useProfile.ts\nfunction useProfile({ address, includeBalance }) {\n const ensName = useMainnetEnsName(address);\n const ensAvatar = useMainnetEnsAvatar(ensName);\n const { data: balance } = useBalance({\n address: includeBalance ? address : void 0\n });\n return { ensName, ensAvatar, balance };\n}\n\n// src/transactions/useRecentTransactions.ts\nimport { useEffect as useEffect6, useState as useState6 } from \"react\";\nimport { useAccount as useAccount5 } from \"wagmi\";\n\n// src/hooks/useChainId.ts\nimport { useAccount as useAccount3 } from \"wagmi\";\nfunction useChainId() {\n const { chain: activeChain } = useAccount3();\n return activeChain?.id ?? null;\n}\n\n// src/transactions/TransactionStoreContext.tsx\nimport React11 from \"react\";\nimport { useAccount as useAccount4, useBalance as useBalance2, usePublicClient } from \"wagmi\";\n\n// src/transactions/transactionStore.ts\nvar storageKey = \"rk-transactions\";\nfunction safeParseJsonData2(string) {\n try {\n const value = string ? JSON.parse(string) : {};\n return typeof value === \"object\" ? value : {};\n } catch {\n return {};\n }\n}\nfunction loadData() {\n return safeParseJsonData2(\n typeof localStorage !== \"undefined\" ? localStorage.getItem(storageKey) : null\n );\n}\nvar transactionHashRegex = /^0x([A-Fa-f0-9]{64})$/;\nfunction validateTransaction(transaction) {\n const errors = [];\n if (!transactionHashRegex.test(transaction.hash)) {\n errors.push(\"Invalid transaction hash\");\n }\n if (typeof transaction.description !== \"string\") {\n errors.push(\"Transaction must have a description\");\n }\n if (typeof transaction.confirmations !== \"undefined\" && (!Number.isInteger(transaction.confirmations) || transaction.confirmations < 1)) {\n errors.push(\"Transaction confirmations must be a positiver integer\");\n }\n return errors;\n}\nfunction createTransactionStore({\n provider: initialProvider\n}) {\n let data = loadData();\n let provider = initialProvider;\n const listeners = /* @__PURE__ */ new Set();\n const transactionListeners = /* @__PURE__ */ new Set();\n const transactionRequestCache = /* @__PURE__ */ new Map();\n function setProvider(newProvider) {\n provider = newProvider;\n }\n function getTransactions(account, chainId) {\n return data[account]?.[chainId] ?? [];\n }\n function addTransaction(account, chainId, transaction) {\n const errors = validateTransaction(transaction);\n if (errors.length > 0) {\n throw new Error([\"Unable to add transaction\", ...errors].join(\"\\n\"));\n }\n updateTransactions(account, chainId, (transactions) => {\n return [\n { ...transaction, status: \"pending\" },\n ...transactions.filter(({ hash }) => {\n return hash !== transaction.hash;\n })\n ];\n });\n }\n function clearTransactions(account, chainId) {\n updateTransactions(account, chainId, () => {\n return [];\n });\n }\n function setTransactionStatus(account, chainId, hash, status) {\n updateTransactions(account, chainId, (transactions) => {\n return transactions.map(\n (transaction) => transaction.hash === hash ? { ...transaction, status } : transaction\n );\n });\n }\n async function waitForPendingTransactions(account, chainId) {\n await Promise.all(\n getTransactions(account, chainId).filter((transaction) => transaction.status === \"pending\").map(async (transaction) => {\n const { confirmations, hash } = transaction;\n const existingRequest = transactionRequestCache.get(hash);\n if (existingRequest) {\n return await existingRequest;\n }\n const requestPromise = provider.waitForTransactionReceipt({\n confirmations,\n hash,\n timeout: 3e5\n // 5 minutes\n }).then(({ status }) => {\n transactionRequestCache.delete(hash);\n if (status === void 0) {\n return;\n }\n setTransactionStatus(\n account,\n chainId,\n hash,\n // @ts-ignore - types changed with viem@1.1.0\n status === 0 || status === \"reverted\" ? \"failed\" : \"confirmed\"\n );\n notifyTransactionListeners(status);\n }).catch(() => {\n setTransactionStatus(account, chainId, hash, \"failed\");\n });\n transactionRequestCache.set(hash, requestPromise);\n return await requestPromise;\n })\n );\n }\n function updateTransactions(account, chainId, updateFn) {\n data = loadData();\n data[account] = data[account] ?? {};\n let completedTransactionCount = 0;\n const MAX_COMPLETED_TRANSACTIONS = 10;\n const transactions = updateFn(data[account][chainId] ?? []).filter(({ status }) => {\n return status === \"pending\" ? true : completedTransactionCount++ <= MAX_COMPLETED_TRANSACTIONS;\n });\n data[account][chainId] = transactions.length > 0 ? transactions : void 0;\n persistData();\n notifyListeners();\n waitForPendingTransactions(account, chainId);\n }\n function persistData() {\n localStorage.setItem(storageKey, JSON.stringify(data));\n }\n function notifyListeners() {\n for (const listener of listeners) {\n listener();\n }\n }\n function notifyTransactionListeners(txStatus) {\n for (const transactionListener of transactionListeners) {\n transactionListener(txStatus);\n }\n }\n function onChange(fn) {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n }\n function onTransactionStatus(fn) {\n transactionListeners.add(fn);\n return () => {\n transactionListeners.delete(fn);\n };\n }\n return {\n addTransaction,\n clearTransactions,\n getTransactions,\n onTransactionStatus,\n onChange,\n setProvider,\n waitForPendingTransactions\n };\n}\n\n// src/transactions/TransactionStoreContext.tsx\nvar storeSingleton;\nvar TransactionStoreContext = React11.createContext(\n null\n);\nfunction TransactionStoreProvider({\n children\n}) {\n const provider = usePublicClient();\n const { address } = useAccount4();\n const chainId = useChainId();\n const { refetch } = useBalance2({\n address,\n query: {\n enabled: false\n }\n });\n const [store] = React11.useState(\n () => storeSingleton ?? (storeSingleton = createTransactionStore({ provider }))\n );\n const onTransactionStatus = React11.useCallback(\n (txStatus) => {\n if (txStatus === \"success\")\n refetch();\n },\n [refetch]\n );\n React11.useEffect(() => {\n store.setProvider(provider);\n }, [store, provider]);\n React11.useEffect(() => {\n if (address && chainId) {\n store.waitForPendingTransactions(address, chainId);\n }\n }, [store, address, chainId]);\n React11.useEffect(() => {\n if (store && address && chainId) {\n return store.onTransactionStatus(onTransactionStatus);\n }\n }, [store, address, chainId, onTransactionStatus]);\n return /* @__PURE__ */ React11.createElement(TransactionStoreContext.Provider, { value: store }, children);\n}\nfunction useTransactionStore() {\n const store = React11.useContext(TransactionStoreContext);\n if (!store) {\n throw new Error(\"Transaction hooks must be used within RainbowKitProvider\");\n }\n return store;\n}\n\n// src/transactions/useRecentTransactions.ts\nfunction useRecentTransactions() {\n const store = useTransactionStore();\n const { address } = useAccount5();\n const chainId = useChainId();\n const [transactions, setTransactions] = useState6(\n () => store && address && chainId ? store.getTransactions(address, chainId) : []\n );\n useEffect6(() => {\n if (store && address && chainId) {\n setTransactions(store.getTransactions(address, chainId));\n return store.onChange(() => {\n setTransactions(store.getTransactions(address, chainId));\n });\n }\n }, [store, address, chainId]);\n return transactions;\n}\n\n// src/components/RainbowKitProvider/ModalContext.tsx\nimport React58, {\n createContext as createContext12,\n useCallback as useCallback10,\n useContext as useContext20,\n useEffect as useEffect17,\n useMemo as useMemo8,\n useState as useState14\n} from \"react\";\nimport { useAccount as useAccount13, useAccountEffect as useAccountEffect3, useConfig as useConfig3 } from \"wagmi\";\n\n// src/components/AccountModal/AccountModal.tsx\nimport React35 from \"react\";\nimport { useAccount as useAccount10, useDisconnect } from \"wagmi\";\n\n// src/components/Dialog/Dialog.tsx\nimport React23, {\n useCallback as useCallback6,\n useEffect as useEffect11,\n useState as useState9\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { RemoveScroll } from \"react-remove-scroll\";\n\n// src/components/RainbowKitProvider/RainbowKitProvider.tsx\nimport React21, { createContext as createContext11, useContext as useContext7 } from \"react\";\nimport { useAccountEffect as useAccountEffect2 } from \"wagmi\";\n\n// src/css/cssObjectFromTheme.ts\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nvar resolveThemeVars = (theme) => typeof theme === \"function\" ? theme() : theme;\nfunction cssObjectFromTheme(theme, { extends: baseTheme } = {}) {\n const resolvedThemeVars = {\n // We use an object spread here to ensure it's a plain object since vanilla-extract's\n // var objects have a custom 'toString' method that returns a CSS string, but we don't\n // want to leak this to our consumers since they're unaware we're using vanilla-extract.\n // Instead, we want them to handle this explicitly via our 'cssStringFromTheme' function.\n ...assignInlineVars(themeVars, resolveThemeVars(theme))\n };\n if (!baseTheme) {\n return resolvedThemeVars;\n }\n const resolvedBaseThemeVars = assignInlineVars(\n themeVars,\n resolveThemeVars(baseTheme)\n );\n const filteredVars = Object.fromEntries(\n Object.entries(resolvedThemeVars).filter(\n ([varName, value]) => value !== resolvedBaseThemeVars[varName]\n )\n );\n return filteredVars;\n}\n\n// src/css/cssStringFromTheme.ts\nfunction cssStringFromTheme(theme, options = {}) {\n return Object.entries(cssObjectFromTheme(theme, options)).map(([key, value]) => `${key}:${value.replace(/[:;{}]/g, \"\")};`).join(\"\");\n}\n\n// src/components/RainbowKitProvider/AppContext.ts\nimport { createContext as createContext6 } from \"react\";\nvar defaultAppInfo = {\n appName: void 0,\n disclaimer: void 0,\n learnMoreUrl: \"https://learn.rainbow.me/understanding-web3?utm_source=rainbowkit&utm_campaign=learnmore\"\n};\nvar AppContext = createContext6(defaultAppInfo);\n\n// src/components/RainbowKitProvider/CoolModeContext.ts\nimport { createContext as createContext7 } from \"react\";\nvar CoolModeContext = createContext7(false);\n\n// src/components/RainbowKitProvider/ModalSizeContext.tsx\nimport React13, { createContext as createContext9, useContext as useContext5 } from \"react\";\n\n// src/hooks/useWindowSize.ts\nimport { useEffect as useEffect7, useState as useState7 } from \"react\";\n\n// src/utils/debounce.ts\nfunction debounce(fn, ms) {\n let timer;\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n timer = null;\n fn();\n }, ms);\n };\n}\n\n// src/hooks/useWindowSize.ts\nvar useWindowSize = () => {\n const [windowSize, setWindowSize] = useState7({\n height: void 0,\n width: void 0\n });\n useEffect7(() => {\n const handleResize = debounce(() => {\n setWindowSize({\n height: window.innerHeight,\n width: window.innerWidth\n });\n }, 500);\n window.addEventListener(\"resize\", handleResize);\n handleResize();\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n return windowSize;\n};\n\n// src/components/RainbowKitProvider/WalletButtonContext.tsx\nimport React12, { createContext as createContext8, useMemo as useMemo6, useState as useState8 } from \"react\";\nvar WalletButtonContext = createContext8({\n connector: null,\n setConnector: () => {\n }\n});\nfunction WalletButtonProvider({ children }) {\n const [connector, setConnector] = useState8(null);\n return /* @__PURE__ */ React12.createElement(\n WalletButtonContext.Provider,\n {\n value: useMemo6(\n () => ({\n connector,\n setConnector\n }),\n [connector]\n )\n },\n children\n );\n}\n\n// src/components/RainbowKitProvider/ModalSizeContext.tsx\nvar ModalSizeOptions = {\n COMPACT: \"compact\",\n WIDE: \"wide\"\n};\nvar ModalSizeContext = createContext9(\n ModalSizeOptions.WIDE\n);\nfunction ModalSizeProvider({\n children,\n modalSize\n}) {\n const { width } = useWindowSize();\n const isSmallScreen = width && width < largeScreenMinWidth;\n const { connector } = useContext5(WalletButtonContext);\n return /* @__PURE__ */ React13.createElement(\n ModalSizeContext.Provider,\n {\n value: isSmallScreen || connector ? ModalSizeOptions.COMPACT : modalSize\n },\n children\n );\n}\n\n// src/components/RainbowKitProvider/ShowRecentTransactionsContext.ts\nimport { createContext as createContext10 } from \"react\";\nvar ShowRecentTransactionsContext = createContext10(false);\n\n// src/components/RainbowKitProvider/useFingerprint.ts\nimport { useCallback as useCallback2, useEffect as useEffect8 } from \"react\";\nvar storageKey2 = \"rk-version\";\nfunction setRainbowKitVersion({ version }) {\n localStorage.setItem(storageKey2, version);\n}\nfunction useFingerprint() {\n const fingerprint = useCallback2(() => {\n setRainbowKitVersion({ version: \"2.2.0\" });\n }, []);\n useEffect8(() => {\n fingerprint();\n }, [fingerprint]);\n}\n\n// src/components/RainbowKitProvider/usePreloadImages.ts\nimport { useCallback as useCallback4, useEffect as useEffect9 } from \"react\";\n\n// src/wallets/useWalletConnectors.ts\nimport { useConnect } from \"wagmi\";\n\n// src/utils/indexBy.ts\nfunction indexBy(items, getKey) {\n const indexedItems = {};\n for (const item of items) {\n const key = getKey(item);\n if (!key) {\n continue;\n }\n indexedItems[key] = item;\n }\n return indexedItems;\n}\n\n// src/utils/browsers.ts\nfunction isSafari() {\n return typeof navigator !== \"undefined\" && typeof navigator.userAgent !== \"undefined\" && /Version\\/([0-9._]+).*Safari/.test(navigator.userAgent);\n}\nfunction isArc() {\n return typeof document !== \"undefined\" && getComputedStyle(document.body).getPropertyValue(\"--arc-palette-focus\") !== \"\";\n}\nfunction getBrowser() {\n if (typeof navigator === \"undefined\")\n return \"Browser\" /* Browser */;\n const ua2 = navigator.userAgent?.toLowerCase();\n if (navigator.brave?.isBrave)\n return \"Brave\" /* Brave */;\n if (ua2?.indexOf(\"edg/\") > -1)\n return \"Edge\" /* Edge */;\n if (ua2?.indexOf(\"op\") > -1)\n return \"Opera\" /* Opera */;\n if (isArc())\n return \"Arc\" /* Arc */;\n if (ua2?.indexOf(\"chrome\") > -1)\n return \"Chrome\" /* Chrome */;\n if (ua2?.indexOf(\"firefox\") > -1)\n return \"Firefox\" /* Firefox */;\n if (isSafari())\n return \"Safari\" /* Safari */;\n return \"Browser\" /* Browser */;\n}\n\n// src/utils/platforms.ts\nimport { UAParser } from \"ua-parser-js\";\nvar ua = UAParser();\nvar { os } = ua;\nfunction isWindows() {\n return os.name === \"Windows\";\n}\nfunction isMacOS() {\n return os.name === \"Mac OS\";\n}\nfunction isLinux() {\n return [\"Ubuntu\", \"Mint\", \"Fedora\", \"Debian\", \"Arch\", \"Linux\"].includes(\n os.name\n );\n}\nfunction getPlatform() {\n if (isWindows())\n return \"Windows\" /* Windows */;\n if (isMacOS())\n return \"macOS\" /* MacOS */;\n if (isLinux())\n return \"Linux\" /* Linux */;\n return \"Desktop\" /* Desktop */;\n}\n\n// src/wallets/downloadUrls.ts\nvar getExtensionDownloadUrl = (wallet) => {\n const browser = getBrowser();\n return {\n [\"Arc\" /* Arc */]: wallet?.downloadUrls?.chrome,\n [\"Brave\" /* Brave */]: wallet?.downloadUrls?.chrome,\n [\"Chrome\" /* Chrome */]: wallet?.downloadUrls?.chrome,\n [\"Edge\" /* Edge */]: wallet?.downloadUrls?.edge || wallet?.downloadUrls?.chrome,\n [\"Firefox\" /* Firefox */]: wallet?.downloadUrls?.firefox,\n [\"Opera\" /* Opera */]: wallet?.downloadUrls?.opera || wallet?.downloadUrls?.chrome,\n [\"Safari\" /* Safari */]: wallet?.downloadUrls?.safari,\n [\"Browser\" /* Browser */]: wallet?.downloadUrls?.browserExtension\n }[browser] ?? wallet?.downloadUrls?.browserExtension;\n};\nvar getMobileDownloadUrl = (wallet) => {\n const ios = isIOS();\n return (ios ? wallet?.downloadUrls?.ios : wallet?.downloadUrls?.android) ?? wallet?.downloadUrls?.mobile;\n};\nvar getDesktopDownloadUrl = (wallet) => {\n const platform = getPlatform();\n return {\n [\"Windows\" /* Windows */]: wallet?.downloadUrls?.windows,\n [\"macOS\" /* MacOS */]: wallet?.downloadUrls?.macos,\n [\"Linux\" /* Linux */]: wallet?.downloadUrls?.linux,\n [\"Desktop\" /* Desktop */]: wallet?.downloadUrls?.desktop\n }[platform] ?? wallet?.downloadUrls?.desktop;\n};\n\n// src/wallets/groupedWallets.ts\nvar isRecentWallet = (recentWallets, walletId) => {\n return recentWallets.some((recentWallet) => recentWallet.id === walletId);\n};\nvar isRainbowKitConnector = (wallet) => {\n return !!wallet.isRainbowKitConnector;\n};\nvar isEIP6963Connector = (wallet) => {\n return !!(!wallet.isRainbowKitConnector && wallet.icon?.replace(/\\n/g, \"\").startsWith(\"data:image\") && wallet.uid && wallet.name);\n};\nvar rainbowKitConnectorWithWalletConnect = (wallet, walletConnectModalConnector) => {\n const shouldUseWalletConnectModal = wallet.id === \"walletConnect\" && walletConnectModalConnector;\n return shouldUseWalletConnectModal ? { ...wallet, walletConnectModalConnector } : wallet;\n};\nvar connectorsWithRecentWallets = ({\n wallets,\n recentWallets\n}) => {\n return [\n ...recentWallets,\n ...wallets.filter((wallet) => !isRecentWallet(recentWallets, wallet.id))\n ];\n};\n\n// src/wallets/recentWalletIds.ts\nvar storageKey3 = \"rk-recent\";\nfunction safeParseJsonArray(string) {\n try {\n const value = string ? JSON.parse(string) : [];\n return Array.isArray(value) ? value : [];\n } catch {\n return [];\n }\n}\nfunction getRecentWalletIds() {\n return typeof localStorage !== \"undefined\" ? safeParseJsonArray(localStorage.getItem(storageKey3)) : [];\n}\nfunction dedupe(array) {\n return [...new Set(array)];\n}\nfunction addRecentWalletId(walletId) {\n const newValue = dedupe([walletId, ...getRecentWalletIds()]);\n localStorage.setItem(storageKey3, JSON.stringify(newValue));\n}\n\n// src/wallets/useWalletConnectors.ts\nfunction useWalletConnectors(mergeEIP6963WithRkConnectors = false) {\n const rainbowKitChains = useRainbowKitChains();\n const intialChainId = useInitialChainId();\n const { connectAsync, connectors: defaultConnectors_untyped } = useConnect();\n const defaultCreatedConnectors = defaultConnectors_untyped;\n const { setIsWalletConnectModalOpen } = useWalletConnectOpenState();\n const defaultConnectors = defaultCreatedConnectors.map((connector) => ({\n ...connector,\n // rkDetails is optional it does not exist in eip6963 connectors.\n // We only inject `rkDetails` in `connectorsForWallets` when we\n // want to have additional information in the connector.\n ...connector.rkDetails || {}\n }));\n async function connectWallet(connector) {\n const walletChainId = await connector.getChainId();\n const result = await connectAsync({\n chainId: (\n // The goal here is to ensure users are always on a supported chain when connecting.\n // If an `initialChain` prop was provided to RainbowKitProvider, use that.\n intialChainId ?? // Otherwise, if the wallet is already on a supported chain, use that to avoid a chain switch prompt.\n rainbowKitChains.find(({ id }) => id === walletChainId)?.id ?? // Finally, fall back to the first chain provided to RainbowKitProvider.\n rainbowKitChains[0]?.id\n ),\n connector\n });\n if (result) {\n addRecentWalletId(connector.id);\n }\n return result;\n }\n async function connectToWalletConnectModal(walletConnectModalConnector2) {\n try {\n setIsWalletConnectModalOpen(true);\n await connectWallet(walletConnectModalConnector2);\n setIsWalletConnectModalOpen(false);\n } catch (err) {\n const isUserRejection = (\n // @ts-expect-error - Web3Modal v1 error name\n err.name === \"UserRejectedRequestError\" || // @ts-expect-error - Web3Modal v2 error message on desktop\n err.message === \"Connection request reset. Please try again.\"\n );\n setIsWalletConnectModalOpen(false);\n if (!isUserRejection) {\n throw err;\n }\n }\n }\n const getWalletConnectUri = async (connector, uriConverter) => {\n const provider = await connector.getProvider();\n if (connector.id === \"coinbase\") {\n return provider.qrUrl;\n }\n return new Promise(\n (resolve) => (\n // Wagmi v2 doesn't have a return type for provider yet\n // @ts-expect-error\n provider.once(\"display_uri\", (uri) => {\n resolve(uriConverter(uri));\n })\n )\n );\n };\n const walletConnectModalConnector = defaultConnectors.find(\n (connector) => connector.id === \"walletConnect\" && connector.isWalletConnectModalConnector\n );\n const eip6963Connectors = defaultConnectors.filter(isEIP6963Connector).map((connector) => {\n return {\n ...connector,\n groupIndex: 0\n };\n });\n const rainbowKitConnectors = defaultConnectors.filter(isRainbowKitConnector).filter((wallet) => !wallet.isWalletConnectModalConnector).filter((wallet) => {\n if (!mergeEIP6963WithRkConnectors)\n return true;\n const existsInEIP6963Connectors = eip6963Connectors.some(\n (eip6963) => eip6963.id === wallet.rdns\n );\n return !existsInEIP6963Connectors;\n }).map(\n (wallet) => rainbowKitConnectorWithWalletConnect(\n wallet,\n walletConnectModalConnector\n )\n );\n const combinedConnectors = [...eip6963Connectors, ...rainbowKitConnectors];\n const walletInstanceById = indexBy(\n combinedConnectors,\n (walletInstance) => walletInstance.id\n );\n const MAX_RECENT_WALLETS = 3;\n const recentWallets = getRecentWalletIds().map((walletId) => walletInstanceById[walletId]).filter(Boolean).slice(0, MAX_RECENT_WALLETS);\n const walletConnectors = [];\n const combinedConnectorsWithRecentWallets = connectorsWithRecentWallets({\n wallets: combinedConnectors,\n recentWallets\n });\n for (const wallet of combinedConnectorsWithRecentWallets) {\n if (!wallet)\n continue;\n const eip6963 = isEIP6963Connector(wallet);\n const recent = isRecentWallet(recentWallets, wallet.id);\n if (eip6963) {\n walletConnectors.push({\n ...wallet,\n iconUrl: wallet.icon,\n ready: true,\n connect: () => connectWallet(wallet),\n groupName: \"Installed\",\n recent\n });\n continue;\n }\n walletConnectors.push({\n ...wallet,\n ready: wallet.installed ?? true,\n connect: () => connectWallet(wallet),\n desktopDownloadUrl: getDesktopDownloadUrl(wallet),\n extensionDownloadUrl: getExtensionDownloadUrl(wallet),\n groupName: wallet.groupName,\n mobileDownloadUrl: getMobileDownloadUrl(wallet),\n getQrCodeUri: wallet.qrCode?.getUri ? () => getWalletConnectUri(wallet, wallet.qrCode.getUri) : void 0,\n getDesktopUri: wallet.desktop?.getUri ? () => getWalletConnectUri(wallet, wallet.desktop.getUri) : void 0,\n getMobileUri: wallet.mobile?.getUri ? () => getWalletConnectUri(wallet, wallet.mobile?.getUri) : void 0,\n recent,\n showWalletConnectModal: wallet.walletConnectModalConnector ? () => connectToWalletConnectModal(wallet.walletConnectModalConnector) : void 0\n });\n }\n return walletConnectors;\n}\n\n// src/components/Icons/Assets.tsx\nimport React14 from \"react\";\nvar src = async () => (await import(\"./assets-NU2OP443.js\")).default;\nvar preloadAssetsIcon = () => loadImages(src);\nvar AssetsIcon = () => /* @__PURE__ */ React14.createElement(\n AsyncImage,\n {\n background: \"#d0d5de\",\n borderRadius: \"10\",\n height: \"48\",\n src,\n width: \"48\"\n }\n);\n\n// src/components/Icons/Login.tsx\nimport React15 from \"react\";\nvar src2 = async () => (await import(\"./login-CWDTIDNK.js\")).default;\nvar preloadLoginIcon = () => loadImages(src2);\nvar LoginIcon = () => /* @__PURE__ */ React15.createElement(\n AsyncImage,\n {\n background: \"#d0d5de\",\n borderRadius: \"10\",\n height: \"48\",\n src: src2,\n width: \"48\"\n }\n);\n\n// src/components/SignIn/SignIn.tsx\nimport React20, { useCallback as useCallback3, useContext as useContext6, useRef } from \"react\";\nimport { UserRejectedRequestError } from \"viem\";\nimport { useAccount as useAccount6, useSignMessage } from \"wagmi\";\n\n// src/components/Button/ActionButton.tsx\nimport React17 from \"react\";\n\n// src/components/Text/Text.tsx\nimport React16 from \"react\";\nvar Text = React16.forwardRef(\n ({\n as = \"div\",\n children,\n className,\n color,\n display,\n font = \"body\",\n id,\n size = \"16\",\n style,\n tabIndex,\n textAlign = \"inherit\",\n weight = \"regular\",\n testId\n }, ref) => {\n return /* @__PURE__ */ React16.createElement(\n Box,\n {\n as,\n className,\n color,\n display,\n fontFamily: font,\n fontSize: size,\n fontWeight: weight,\n id,\n ref,\n style,\n tabIndex,\n textAlign,\n testId\n },\n children\n );\n }\n);\nText.displayName = \"Text\";\n\n// src/components/Button/ActionButton.tsx\nvar sizeVariants = {\n large: {\n fontSize: \"16\",\n paddingX: \"24\",\n paddingY: \"10\"\n },\n medium: {\n fontSize: \"14\",\n height: \"28\",\n paddingX: \"12\",\n paddingY: \"4\"\n },\n small: {\n fontSize: \"14\",\n paddingX: \"10\",\n paddingY: \"5\"\n }\n};\nfunction ActionButton({\n disabled = false,\n href,\n label,\n onClick,\n rel = \"noreferrer noopener\",\n size = \"medium\",\n target = \"_blank\",\n testId,\n type = \"primary\"\n}) {\n const isPrimary = type === \"primary\";\n const isNotLarge = size !== \"large\";\n const mobile = isMobile();\n const background = !disabled ? isPrimary ? \"accentColor\" : isNotLarge ? \"actionButtonSecondaryBackground\" : null : \"actionButtonSecondaryBackground\";\n const { fontSize, height, paddingX, paddingY } = sizeVariants[size];\n const hasBorder = !mobile || !isNotLarge;\n return /* @__PURE__ */ React17.createElement(\n Box,\n {\n ...href ? !disabled ? { as: \"a\", href, rel, target } : {} : { as: \"button\", type: \"button\" },\n onClick: !disabled ? onClick : void 0,\n ...hasBorder ? {\n borderColor: mobile && !isNotLarge && !isPrimary ? \"actionButtonBorderMobile\" : \"actionButtonBorder\",\n borderStyle: \"solid\",\n borderWidth: \"1\"\n } : {},\n borderRadius: \"actionButton\",\n className: !disabled && touchableStyles({ active: \"shrinkSm\", hover: \"grow\" }),\n display: \"block\",\n paddingX,\n paddingY,\n style: { willChange: \"transform\" },\n testId,\n textAlign: \"center\",\n transition: \"transform\",\n ...background ? { background } : {},\n ...height ? { height } : {}\n },\n /* @__PURE__ */ React17.createElement(\n Text,\n {\n color: !disabled ? isPrimary ? \"accentColorForeground\" : \"accentColor\" : \"modalTextSecondary\",\n size: fontSize,\n weight: \"bold\"\n },\n label\n )\n );\n}\n\n// src/components/CloseButton/CloseButton.tsx\nimport React19 from \"react\";\n\n// src/components/Icons/Close.tsx\nimport React18 from \"react\";\nvar CloseIcon = () => {\n return isMobile() ? /* @__PURE__ */ React18.createElement(\n \"svg\",\n {\n \"aria-hidden\": true,\n fill: \"none\",\n height: \"11.5\",\n viewBox: \"0 0 11.5 11.5\",\n width: \"11.5\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React18.createElement(\"title\", null, \"Close\"),\n /* @__PURE__ */ React18.createElement(\n \"path\",\n {\n d: \"M2.13388 0.366117C1.64573 -0.122039 0.854272 -0.122039 0.366117 0.366117C-0.122039 0.854272 -0.122039 1.64573 0.366117 2.13388L3.98223 5.75L0.366117 9.36612C-0.122039 9.85427 -0.122039 10.6457 0.366117 11.1339C0.854272 11.622 1.64573 11.622 2.13388 11.1339L5.75 7.51777L9.36612 11.1339C9.85427 11.622 10.6457 11.622 11.1339 11.1339C11.622 10.6457 11.622 9.85427 11.1339 9.36612L7.51777 5.75L11.1339 2.13388C11.622 1.64573 11.622 0.854272 11.1339 0.366117C10.6457 -0.122039 9.85427 -0.122039 9.36612 0.366117L5.75 3.98223L2.13388 0.366117Z\",\n fill: \"currentColor\"\n }\n )\n ) : /* @__PURE__ */ React18.createElement(\n \"svg\",\n {\n \"aria-hidden\": true,\n fill: \"none\",\n height: \"10\",\n viewBox: \"0 0 10 10\",\n width: \"10\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React18.createElement(\"title\", null, \"Close\"),\n /* @__PURE__ */ React18.createElement(\n \"path\",\n {\n d: \"M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L3.58579 5L0.292893 8.29289C-0.0976311 8.68342 -0.0976311 9.31658 0.292893 9.70711C0.683417 10.0976 1.31658 10.0976 1.70711 9.70711L5 6.41421L8.29289 9.70711C8.68342 10.0976 9.31658 10.0976 9.70711 9.70711C10.0976 9.31658 10.0976 8.68342 9.70711 8.29289L6.41421 5L9.70711 1.70711C10.0976 1.31658 10.0976 0.683417 9.70711 0.292893C9.31658 -0.0976311 8.68342 -0.0976311 8.29289 0.292893L5 3.58579L1.70711 0.292893Z\",\n fill: \"currentColor\"\n }\n )\n );\n};\n\n// src/components/CloseButton/CloseButton.tsx\nvar CloseButton = ({\n \"aria-label\": ariaLabel = \"Close\",\n onClose\n}) => {\n const mobile = isMobile();\n return /* @__PURE__ */ React19.createElement(\n Box,\n {\n alignItems: \"center\",\n \"aria-label\": ariaLabel,\n as: \"button\",\n background: \"closeButtonBackground\",\n borderColor: \"actionButtonBorder\",\n borderRadius: \"full\",\n borderStyle: \"solid\",\n borderWidth: mobile ? \"0\" : \"1\",\n className: touchableStyles({ active: \"shrinkSm\", hover: \"growLg\" }),\n color: \"closeButton\",\n display: \"flex\",\n height: mobile ? \"30\" : \"28\",\n justifyContent: \"center\",\n onClick: onClose,\n style: { willChange: \"transform\" },\n transition: \"default\",\n type: \"button\",\n width: mobile ? \"30\" : \"28\"\n },\n /* @__PURE__ */ React19.createElement(CloseIcon, null)\n );\n};\n\n// src/components/SignIn/SignIn.tsx\nvar signInIcon = async () => (await import(\"./sign-A7IJEUT5.js\")).default;\nfunction SignIn({\n onClose,\n onCloseModal\n}) {\n const { i18n: i18n2 } = useContext6(I18nContext);\n const [{ status, ...state }, setState] = React20.useState({ status: \"idle\" });\n const authAdapter = useAuthenticationAdapter();\n const getNonce = useCallback3(async () => {\n try {\n const nonce = await authAdapter.getNonce();\n setState((x) => ({ ...x, nonce }));\n } catch {\n setState((x) => ({\n ...x,\n errorMessage: i18n2.t(\"sign_in.message.preparing_error\"),\n status: \"idle\"\n }));\n }\n }, [authAdapter, i18n2.t]);\n const onceRef = useRef(false);\n React20.useEffect(() => {\n if (onceRef.current)\n return;\n onceRef.current = true;\n getNonce();\n }, [getNonce]);\n const mobile = isMobile();\n const { address, chain: activeChain } = useAccount6();\n const { signMessageAsync } = useSignMessage();\n const signIn = async () => {\n try {\n const chainId = activeChain?.id;\n const { nonce } = state;\n if (!address || !chainId || !nonce) {\n return;\n }\n setState((x) => ({\n ...x,\n errorMessage: void 0,\n status: \"signing\"\n }));\n const message = authAdapter.createMessage({ address, chainId, nonce });\n let signature;\n try {\n signature = await signMessageAsync({\n message\n });\n } catch (error) {\n if (error instanceof UserRejectedRequestError) {\n return setState((x) => ({\n ...x,\n status: \"idle\"\n }));\n }\n return setState((x) => ({\n ...x,\n errorMessage: i18n2.t(\"sign_in.signature.signing_error\"),\n status: \"idle\"\n }));\n }\n setState((x) => ({ ...x, status: \"verifying\" }));\n try {\n const verified = await authAdapter.verify({ message, signature });\n if (verified) {\n onCloseModal();\n return;\n }\n throw new Error();\n } catch {\n return setState((x) => ({\n ...x,\n errorMessage: i18n2.t(\"sign_in.signature.verifying_error\"),\n status: \"idle\"\n }));\n }\n } catch {\n setState({\n errorMessage: i18n2.t(\"sign_in.signature.oops_error\"),\n status: \"idle\"\n });\n }\n };\n return /* @__PURE__ */ React20.createElement(Box, { position: \"relative\" }, /* @__PURE__ */ React20.createElement(\n Box,\n {\n display: \"flex\",\n paddingRight: \"16\",\n paddingTop: \"16\",\n position: \"absolute\",\n right: \"0\"\n },\n /* @__PURE__ */ React20.createElement(CloseButton, { onClose })\n ), /* @__PURE__ */ React20.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: mobile ? \"32\" : \"24\",\n padding: \"24\",\n paddingX: \"18\",\n style: { paddingTop: mobile ? \"60px\" : \"36px\" }\n },\n /* @__PURE__ */ React20.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: mobile ? \"6\" : \"4\",\n style: { maxWidth: mobile ? 320 : 280 }\n },\n /* @__PURE__ */ React20.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: mobile ? \"32\" : \"16\"\n },\n /* @__PURE__ */ React20.createElement(AsyncImage, { height: 40, src: signInIcon, width: 40 }),\n /* @__PURE__ */ React20.createElement(\n Text,\n {\n color: \"modalText\",\n size: mobile ? \"20\" : \"18\",\n textAlign: \"center\",\n weight: \"heavy\"\n },\n i18n2.t(\"sign_in.label\")\n )\n ),\n /* @__PURE__ */ React20.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: mobile ? \"16\" : \"12\"\n },\n /* @__PURE__ */ React20.createElement(\n Text,\n {\n color: \"modalTextSecondary\",\n size: mobile ? \"16\" : \"14\",\n textAlign: \"center\"\n },\n i18n2.t(\"sign_in.description\")\n ),\n status === \"idle\" && state.errorMessage ? /* @__PURE__ */ React20.createElement(\n Text,\n {\n color: \"error\",\n size: mobile ? \"16\" : \"14\",\n textAlign: \"center\",\n weight: \"bold\"\n },\n state.errorMessage\n ) : null\n )\n ),\n /* @__PURE__ */ React20.createElement(\n Box,\n {\n alignItems: !mobile ? \"center\" : void 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8\",\n width: \"full\"\n },\n /* @__PURE__ */ React20.createElement(\n ActionButton,\n {\n disabled: !state.nonce || status === \"signing\" || status === \"verifying\",\n label: !state.nonce ? i18n2.t(\"sign_in.message.preparing\") : status === \"signing\" ? i18n2.t(\"sign_in.signature.waiting\") : status === \"verifying\" ? i18n2.t(\"sign_in.signature.verifying\") : i18n2.t(\"sign_in.message.send\"),\n onClick: signIn,\n size: mobile ? \"large\" : \"medium\",\n testId: \"auth-message-button\"\n }\n ),\n mobile ? /* @__PURE__ */ React20.createElement(\n ActionButton,\n {\n label: \"Cancel\",\n onClick: onClose,\n size: \"large\",\n type: \"secondary\"\n }\n ) : /* @__PURE__ */ React20.createElement(\n Box,\n {\n as: \"button\",\n borderRadius: \"full\",\n className: touchableStyles({ active: \"shrink\", hover: \"grow\" }),\n display: \"block\",\n onClick: onClose,\n paddingX: \"10\",\n paddingY: \"5\",\n rel: \"noreferrer\",\n style: { willChange: \"transform\" },\n target: \"_blank\",\n transition: \"default\"\n },\n /* @__PURE__ */ React20.createElement(\n Text,\n {\n color: \"closeButton\",\n size: mobile ? \"16\" : \"14\",\n weight: \"bold\"\n },\n i18n2.t(\"sign_in.message.cancel\")\n )\n )\n )\n ));\n}\n\n// src/components/RainbowKitProvider/usePreloadImages.ts\nfunction usePreloadImages() {\n const rainbowKitChains = useRainbowKitChains();\n const walletConnectors = useWalletConnectors();\n const isUnauthenticated = useAuthenticationStatus() === \"unauthenticated\";\n const preloadImages = useCallback4(() => {\n loadImages(\n ...walletConnectors.map((wallet) => wallet.iconUrl),\n ...rainbowKitChains.map((chain) => chain.iconUrl).filter(isNotNullish)\n );\n if (!isMobile()) {\n preloadAssetsIcon();\n preloadLoginIcon();\n }\n if (isUnauthenticated) {\n loadImages(signInIcon);\n }\n }, [walletConnectors, rainbowKitChains, isUnauthenticated]);\n useEffect9(() => {\n preloadImages();\n }, [preloadImages]);\n}\n\n// src/components/RainbowKitProvider/walletConnectDeepLink.ts\nvar storageKey4 = \"WALLETCONNECT_DEEPLINK_CHOICE\";\nfunction setWalletConnectDeepLink({\n mobileUri,\n name\n}) {\n localStorage.setItem(\n storageKey4,\n JSON.stringify({\n href: mobileUri.split(\"?\")[0],\n name\n })\n );\n}\nfunction clearWalletConnectDeepLink() {\n localStorage.removeItem(storageKey4);\n}\n\n// src/components/RainbowKitProvider/RainbowKitProvider.tsx\nvar ThemeIdContext = createContext11(void 0);\nvar attr = \"data-rk\";\nvar createThemeRootProps = (id) => ({ [attr]: id || \"\" });\nvar createThemeRootSelector = (id) => {\n if (id && !/^[a-zA-Z0-9_]+$/.test(id)) {\n throw new Error(`Invalid ID: ${id}`);\n }\n return id ? `[${attr}=\"${id}\"]` : `[${attr}]`;\n};\nvar useThemeRootProps = () => {\n const id = useContext7(ThemeIdContext);\n return createThemeRootProps(id);\n};\nvar defaultTheme = lightTheme();\nfunction RainbowKitProvider({\n appInfo,\n avatar,\n children,\n coolMode = false,\n id,\n initialChain,\n locale,\n modalSize = ModalSizeOptions.WIDE,\n showRecentTransactions = false,\n theme = defaultTheme\n}) {\n usePreloadImages();\n useFingerprint();\n useAccountEffect2({ onDisconnect: clearWalletConnectDeepLink });\n if (typeof theme === \"function\") {\n throw new Error(\n 'A theme function was provided to the \"theme\" prop instead of a theme object. You must execute this function to get the resulting theme object.'\n );\n }\n const selector = createThemeRootSelector(id);\n const appContext = {\n ...defaultAppInfo,\n ...appInfo\n };\n const avatarContext = avatar ?? defaultAvatar;\n return /* @__PURE__ */ React21.createElement(RainbowKitChainProvider, { initialChain }, /* @__PURE__ */ React21.createElement(WalletButtonProvider, null, /* @__PURE__ */ React21.createElement(I18nProvider, { locale }, /* @__PURE__ */ React21.createElement(CoolModeContext.Provider, { value: coolMode }, /* @__PURE__ */ React21.createElement(ModalSizeProvider, { modalSize }, /* @__PURE__ */ React21.createElement(\n ShowRecentTransactionsContext.Provider,\n {\n value: showRecentTransactions\n },\n /* @__PURE__ */ React21.createElement(TransactionStoreProvider, null, /* @__PURE__ */ React21.createElement(AvatarContext.Provider, { value: avatarContext }, /* @__PURE__ */ React21.createElement(AppContext.Provider, { value: appContext }, /* @__PURE__ */ React21.createElement(ThemeIdContext.Provider, { value: id }, /* @__PURE__ */ React21.createElement(ShowBalanceProvider, null, /* @__PURE__ */ React21.createElement(ModalProvider, null, theme ? /* @__PURE__ */ React21.createElement(\"div\", { ...createThemeRootProps(id) }, /* @__PURE__ */ React21.createElement(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n // Selectors are sanitized to only contain alphanumeric\n // and underscore characters. Theme values generated by\n // cssStringFromTheme are sanitized, removing\n // characters that terminate values / HTML tags.\n __html: [\n `${selector}{${cssStringFromTheme(\n \"lightMode\" in theme ? theme.lightMode : theme\n )}}`,\n \"darkMode\" in theme ? `@media(prefers-color-scheme:dark){${selector}{${cssStringFromTheme(\n theme.darkMode,\n { extends: theme.lightMode }\n )}}}` : null\n ].join(\"\")\n }\n }\n ), children) : children))))))\n ))))));\n}\n\n// src/components/Dialog/Dialog.css.ts\nvar content = \"_9pm4ki5 ju367va ju367v15 ju367v8r\";\nvar overlay = \"_9pm4ki3 ju367v9h ju367vb3 ju367va ju367v2q ju367v8q\";\n\n// src/components/Dialog/FocusTrap.tsx\nimport React22, { useCallback as useCallback5, useEffect as useEffect10, useRef as useRef2 } from \"react\";\nvar moveFocusWithin = (element2, position) => {\n const focusableElements = element2.querySelectorAll(\n \"button:not(:disabled), a[href]\"\n );\n if (focusableElements.length === 0)\n return;\n focusableElements[position === \"end\" ? focusableElements.length - 1 : 0].focus();\n};\nfunction FocusTrap(props) {\n const contentRef = useRef2(null);\n useEffect10(() => {\n const previouslyActiveElement = document.activeElement;\n return () => {\n previouslyActiveElement.focus?.();\n };\n }, []);\n useEffect10(() => {\n if (contentRef.current) {\n const elementToFocus = contentRef.current.querySelector(\"[data-auto-focus]\");\n if (elementToFocus) {\n elementToFocus.focus();\n } else {\n contentRef.current.focus();\n }\n }\n }, []);\n return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(\n \"div\",\n {\n onFocus: useCallback5(\n () => contentRef.current && moveFocusWithin(contentRef.current, \"end\"),\n []\n ),\n tabIndex: 0\n }\n ), /* @__PURE__ */ React22.createElement(\n \"div\",\n {\n ref: contentRef,\n style: { outline: \"none\" },\n tabIndex: -1,\n ...props\n }\n ), /* @__PURE__ */ React22.createElement(\n \"div\",\n {\n onFocus: useCallback5(\n () => contentRef.current && moveFocusWithin(contentRef.current, \"start\"),\n []\n ),\n tabIndex: 0\n }\n ));\n}\n\n// src/components/Dialog/Dialog.tsx\nvar stopPropagation = (event) => event.stopPropagation();\nfunction Dialog({ children, onClose, open, titleId }) {\n useEffect11(() => {\n const handleEscape = (event) => open && event.key === \"Escape\" && onClose();\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [open, onClose]);\n const [bodyScrollable, setBodyScrollable] = useState9(true);\n useEffect11(() => {\n setBodyScrollable(\n getComputedStyle(window.document.body).overflow !== \"hidden\"\n );\n }, []);\n const handleBackdropClick = useCallback6(() => onClose(), [onClose]);\n const themeRootProps = useThemeRootProps();\n const mobile = isMobile();\n return /* @__PURE__ */ React23.createElement(React23.Fragment, null, open ? createPortal(\n /* @__PURE__ */ React23.createElement(RemoveScroll, { enabled: bodyScrollable }, /* @__PURE__ */ React23.createElement(Box, { ...themeRootProps }, /* @__PURE__ */ React23.createElement(\n Box,\n {\n ...themeRootProps,\n alignItems: mobile ? \"flex-end\" : \"center\",\n \"aria-labelledby\": titleId,\n \"aria-modal\": true,\n className: overlay,\n onClick: handleBackdropClick,\n position: \"fixed\",\n role: \"dialog\"\n },\n /* @__PURE__ */ React23.createElement(\n FocusTrap,\n {\n className: content,\n onClick: stopPropagation,\n role: \"document\"\n },\n children\n )\n ))),\n document.body\n ) : null);\n}\n\n// src/components/Dialog/DialogContent.tsx\nimport React24, { useContext as useContext8 } from \"react\";\n\n// src/components/Dialog/DialogContent.css.ts\nvar bottomSheetOverrides = \"_1ckjpok7\";\nvar dialogContent = \"_1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r\";\nvar dialogContentCompactMode = \"_1ckjpok4 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r\";\nvar dialogContentMobile = \"_1ckjpok6 ju367vq\";\nvar dialogContentWideDesktop = \"_1ckjpok3 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r\";\nvar dialogContentWideMobile = \"_1ckjpok2 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r\";\n\n// src/components/Dialog/DialogContent.tsx\nfunction DialogContent({\n bottomSheetOnMobile = false,\n children,\n marginTop,\n padding = \"16\",\n paddingBottom,\n wide = false\n}) {\n const mobile = isMobile();\n const modalSize = useContext8(ModalSizeContext);\n const compactModeEnabled = modalSize === ModalSizeOptions.COMPACT;\n return /* @__PURE__ */ React24.createElement(Box, { marginTop }, /* @__PURE__ */ React24.createElement(\n Box,\n {\n className: [\n wide ? mobile ? dialogContentWideMobile : compactModeEnabled ? dialogContentCompactMode : dialogContentWideDesktop : dialogContent,\n mobile ? dialogContentMobile : null,\n mobile && bottomSheetOnMobile ? bottomSheetOverrides : null\n ].join(\" \")\n },\n /* @__PURE__ */ React24.createElement(Box, { padding, paddingBottom: paddingBottom ?? padding }, children)\n ));\n}\n\n// src/components/ProfileDetails/ProfileDetails.tsx\nimport React34, { useCallback as useCallback8, useContext as useContext10, useEffect as useEffect12, useState as useState10 } from \"react\";\n\n// src/components/ConnectButton/abbreviateETHBalance.ts\nvar units = [\"k\", \"m\", \"b\", \"t\"];\nfunction toPrecision(number, precision = 1) {\n return number.toString().replace(new RegExp(`(.+\\\\.\\\\d{${precision}})\\\\d+`), \"$1\").replace(/(\\.[1-9]*)0+$/, \"$1\").replace(/\\.$/, \"\");\n}\nfunction abbreviateETHBalance(number) {\n if (number < 1)\n return toPrecision(number, 3);\n if (number < 10 ** 2)\n return toPrecision(number, 2);\n if (number < 10 ** 4)\n return new Intl.NumberFormat().format(\n Number.parseFloat(toPrecision(number, 1))\n );\n const decimalsDivisor = 10 ** 1;\n let result = String(number);\n for (let i = units.length - 1; i >= 0; i--) {\n const size = 10 ** ((i + 1) * 3);\n if (size <= number) {\n number = number * decimalsDivisor / size / decimalsDivisor;\n result = toPrecision(number, 1) + units[i];\n break;\n }\n }\n return result;\n}\n\n// src/components/ConnectButton/formatAddress.ts\nfunction formatAddress(address) {\n const leadingChars = 4;\n const trailingChars = 4;\n return address.length < leadingChars + trailingChars ? address : `${address.substring(0, leadingChars)}\\u2026${address.substring(\n address.length - trailingChars\n )}`;\n}\n\n// src/components/ConnectButton/formatENS.ts\nfunction formatENS(name) {\n if (!name)\n return \"\";\n const parts = name.split(\".\");\n const last = parts.pop();\n if (parts.join(\".\").length > 24) {\n return `${parts.join(\".\").substring(0, 24)}...`;\n }\n return `${parts.join(\".\")}.${last}`;\n}\n\n// src/components/Icons/Copied.tsx\nimport React25 from \"react\";\nvar CopiedIcon = () => /* @__PURE__ */ React25.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"13\",\n viewBox: \"0 0 13 13\",\n width: \"13\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React25.createElement(\"title\", null, \"Copied\"),\n /* @__PURE__ */ React25.createElement(\n \"path\",\n {\n d: \"M4.94568 12.2646C5.41052 12.2646 5.77283 12.0869 6.01892 11.7109L12.39 1.96973C12.5677 1.69629 12.6429 1.44336 12.6429 1.2041C12.6429 0.561523 12.1644 0.0966797 11.5082 0.0966797C11.057 0.0966797 10.7767 0.260742 10.5033 0.691406L4.9115 9.50977L2.07458 5.98926C1.82166 5.68848 1.54822 5.55176 1.16541 5.55176C0.502319 5.55176 0.0238037 6.02344 0.0238037 6.66602C0.0238037 6.95312 0.112671 7.20605 0.358765 7.48633L3.88611 11.7588C4.18005 12.1074 4.50818 12.2646 4.94568 12.2646Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/Icons/Copy.tsx\nimport React26 from \"react\";\nvar CopyIcon = () => /* @__PURE__ */ React26.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"16\",\n viewBox: \"0 0 17 16\",\n width: \"17\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React26.createElement(\"title\", null, \"Copy\"),\n /* @__PURE__ */ React26.createElement(\n \"path\",\n {\n d: \"M3.04236 12.3027H4.18396V13.3008C4.18396 14.8525 5.03845 15.7002 6.59705 15.7002H13.6244C15.183 15.7002 16.0375 14.8525 16.0375 13.3008V6.24609C16.0375 4.69434 15.183 3.84668 13.6244 3.84668H12.4828V2.8418C12.4828 1.29688 11.6283 0.442383 10.0697 0.442383H3.04236C1.48376 0.442383 0.629272 1.29004 0.629272 2.8418V9.90332C0.629272 11.4551 1.48376 12.3027 3.04236 12.3027ZM3.23376 10.5391C2.68689 10.5391 2.39294 10.2656 2.39294 9.68457V3.06055C2.39294 2.47949 2.68689 2.21289 3.23376 2.21289H9.8783C10.4252 2.21289 10.7191 2.47949 10.7191 3.06055V3.84668H6.59705C5.03845 3.84668 4.18396 4.69434 4.18396 6.24609V10.5391H3.23376ZM6.78845 13.9365C6.24158 13.9365 5.94763 13.6699 5.94763 13.0889V6.45801C5.94763 5.87695 6.24158 5.61035 6.78845 5.61035H13.433C13.9799 5.61035 14.2738 5.87695 14.2738 6.45801V13.0889C14.2738 13.6699 13.9799 13.9365 13.433 13.9365H6.78845Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/Icons/Disconnect.tsx\nimport React27 from \"react\";\nvar DisconnectIcon = () => /* @__PURE__ */ React27.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"16\",\n viewBox: \"0 0 18 16\",\n width: \"18\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React27.createElement(\"title\", null, \"Disconnect\"),\n /* @__PURE__ */ React27.createElement(\n \"path\",\n {\n d: \"M2.67834 15.5908H9.99963C11.5514 15.5908 12.399 14.7432 12.399 13.1777V10.2656H10.6354V12.9863C10.6354 13.5332 10.3688 13.8271 9.78772 13.8271H2.89026C2.3092 13.8271 2.0426 13.5332 2.0426 12.9863V3.15625C2.0426 2.60254 2.3092 2.30859 2.89026 2.30859H9.78772C10.3688 2.30859 10.6354 2.60254 10.6354 3.15625V5.89746H12.399V2.95801C12.399 1.39941 11.5514 0.544922 9.99963 0.544922H2.67834C1.12659 0.544922 0.278931 1.39941 0.278931 2.95801V13.1777C0.278931 14.7432 1.12659 15.5908 2.67834 15.5908ZM7.43616 8.85059H14.0875L15.0924 8.78906L14.566 9.14453L13.6842 9.96484C13.5406 10.1016 13.4586 10.2861 13.4586 10.4844C13.4586 10.8398 13.7321 11.168 14.1217 11.168C14.3199 11.168 14.4635 11.0928 14.6002 10.9561L16.7809 8.68652C16.986 8.48145 17.0543 8.27637 17.0543 8.06445C17.0543 7.85254 16.986 7.64746 16.7809 7.43555L14.6002 5.17285C14.4635 5.03613 14.3199 4.9541 14.1217 4.9541C13.7321 4.9541 13.4586 5.27539 13.4586 5.6377C13.4586 5.83594 13.5406 6.02734 13.6842 6.15723L14.566 6.98438L15.0924 7.33984L14.0875 7.27148H7.43616C7.01917 7.27148 6.65686 7.62012 6.65686 8.06445C6.65686 8.50195 7.01917 8.85059 7.43616 8.85059Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/Txs/TxList.tsx\nimport React32, { useContext as useContext9 } from \"react\";\nimport { useAccount as useAccount9 } from \"wagmi\";\n\n// src/transactions/useClearRecentTransactions.ts\nimport { useCallback as useCallback7 } from \"react\";\nimport { useAccount as useAccount7 } from \"wagmi\";\nfunction useClearRecentTransactions() {\n const store = useTransactionStore();\n const { address } = useAccount7();\n const chainId = useChainId();\n return useCallback7(() => {\n if (!address || !chainId) {\n throw new Error(\"No address or chain ID found\");\n }\n store.clearTransactions(address, chainId);\n }, [store, address, chainId]);\n}\n\n// src/utils/chainToExplorerUrl.ts\nvar chainToExplorerUrl = (chain) => chain?.blockExplorers?.default?.url;\n\n// src/components/Icons/ExternalLink.tsx\nimport React28 from \"react\";\nvar ExternalLinkIcon = () => /* @__PURE__ */ React28.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"19\",\n viewBox: \"0 0 20 19\",\n width: \"20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React28.createElement(\"title\", null, \"Link\"),\n /* @__PURE__ */ React28.createElement(\n \"path\",\n {\n d: \"M10 18.9443C15.0977 18.9443 19.2812 14.752 19.2812 9.6543C19.2812 4.56543 15.0889 0.373047 10 0.373047C4.90234 0.373047 0.71875 4.56543 0.71875 9.6543C0.71875 14.752 4.91113 18.9443 10 18.9443ZM10 16.6328C6.1416 16.6328 3.03906 13.5215 3.03906 9.6543C3.03906 5.7959 6.13281 2.68457 10 2.68457C13.8584 2.68457 16.9697 5.7959 16.9697 9.6543C16.9785 13.5215 13.8672 16.6328 10 16.6328ZM12.7158 12.1416C13.2432 12.1416 13.5684 11.7549 13.5684 11.1836V7.19336C13.5684 6.44629 13.1377 6.05957 12.417 6.05957H8.40918C7.8291 6.05957 7.45117 6.38477 7.45117 6.91211C7.45117 7.43945 7.8291 7.77344 8.40918 7.77344H9.69238L10.7207 7.63281L9.53418 8.67871L6.73047 11.4912C6.53711 11.6758 6.41406 11.9395 6.41406 12.2031C6.41406 12.7832 6.85352 13.1699 7.39844 13.1699C7.68848 13.1699 7.92578 13.0732 8.1543 12.8623L10.9316 10.0762L11.9775 8.89844L11.8545 9.98828V11.1836C11.8545 11.7725 12.1885 12.1416 12.7158 12.1416Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/Txs/TxItem.tsx\nimport React31 from \"react\";\nimport { useAccount as useAccount8 } from \"wagmi\";\n\n// src/components/Icons/Cancel.tsx\nimport React29 from \"react\";\nvar CancelIcon = () => /* @__PURE__ */ React29.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"19\",\n viewBox: \"0 0 20 19\",\n width: \"20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React29.createElement(\"title\", null, \"Cancel\"),\n /* @__PURE__ */ React29.createElement(\n \"path\",\n {\n d: \"M10 18.9443C15.0977 18.9443 19.2812 14.752 19.2812 9.6543C19.2812 4.56543 15.0889 0.373047 10 0.373047C4.90234 0.373047 0.71875 4.56543 0.71875 9.6543C0.71875 14.752 4.91113 18.9443 10 18.9443ZM10 16.6328C6.1416 16.6328 3.03906 13.5215 3.03906 9.6543C3.03906 5.7959 6.13281 2.68457 10 2.68457C13.8584 2.68457 16.9697 5.7959 16.9697 9.6543C16.9785 13.5215 13.8672 16.6328 10 16.6328ZM7.29297 13.3018C7.58301 13.3018 7.81152 13.2139 7.99609 13.0205L10 11.0166L12.0127 13.0205C12.1973 13.2051 12.4258 13.3018 12.707 13.3018C13.2432 13.3018 13.6562 12.8887 13.6562 12.3525C13.6562 12.0977 13.5508 11.8691 13.3662 11.6934L11.3535 9.67188L13.375 7.6416C13.5596 7.44824 13.6562 7.22852 13.6562 6.98242C13.6562 6.44629 13.2432 6.0332 12.7158 6.0332C12.4346 6.0332 12.2148 6.12109 12.0215 6.31445L10 8.32715L7.9873 6.32324C7.80273 6.12988 7.58301 6.04199 7.29297 6.04199C6.76562 6.04199 6.35254 6.45508 6.35254 6.99121C6.35254 7.2373 6.44922 7.46582 6.63379 7.6416L8.65527 9.67188L6.63379 11.6934C6.44922 11.8691 6.35254 12.1064 6.35254 12.3525C6.35254 12.8887 6.76562 13.3018 7.29297 13.3018Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/Icons/Success.tsx\nimport React30 from \"react\";\nvar SuccessIcon = () => /* @__PURE__ */ React30.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n width: \"20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React30.createElement(\"title\", null, \"Success\"),\n /* @__PURE__ */ React30.createElement(\n \"path\",\n {\n d: \"M10 19.4443C15.0977 19.4443 19.2812 15.252 19.2812 10.1543C19.2812 5.06543 15.0889 0.873047 10 0.873047C4.90234 0.873047 0.71875 5.06543 0.71875 10.1543C0.71875 15.252 4.91113 19.4443 10 19.4443ZM10 17.1328C6.1416 17.1328 3.03906 14.0215 3.03906 10.1543C3.03906 6.2959 6.13281 3.18457 10 3.18457C13.8584 3.18457 16.9697 6.2959 16.9697 10.1543C16.9785 14.0215 13.8672 17.1328 10 17.1328ZM9.07715 14.3379C9.4375 14.3379 9.7627 14.1533 9.97363 13.8369L13.7441 8.00977C13.8848 7.79883 13.9814 7.5791 13.9814 7.36816C13.9814 6.84961 13.5244 6.48926 13.0322 6.48926C12.707 6.48926 12.4258 6.66504 12.2148 7.0166L9.05957 12.0967L7.5918 10.2949C7.37207 10.0225 7.13477 9.9082 6.84473 9.9082C6.33496 9.9082 5.92188 10.3125 5.92188 10.8223C5.92188 11.0684 6.00098 11.2793 6.18555 11.5078L8.1543 13.8545C8.40918 14.1709 8.70801 14.3379 9.07715 14.3379Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/Txs/TxItem.tsx\nvar getTxStatusIcon = (status) => {\n switch (status) {\n case \"pending\":\n return SpinnerIcon;\n case \"confirmed\":\n return SuccessIcon;\n case \"failed\":\n return CancelIcon;\n default:\n return SpinnerIcon;\n }\n};\nfunction TxItem({ tx }) {\n const mobile = isMobile();\n const Icon = getTxStatusIcon(tx.status);\n const color = tx.status === \"failed\" ? \"error\" : \"accentColor\";\n const { chain: activeChain } = useAccount8();\n const confirmationStatus = tx.status === \"confirmed\" ? \"Confirmed\" : tx.status === \"failed\" ? \"Failed\" : \"Pending\";\n const explorerLink = chainToExplorerUrl(activeChain);\n return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(\n Box,\n {\n ...explorerLink ? {\n as: \"a\",\n background: { hover: \"profileForeground\" },\n borderRadius: \"menuButton\",\n className: touchableStyles({ active: \"shrink\" }),\n href: `${explorerLink}/tx/${tx.hash}`,\n rel: \"noreferrer noopener\",\n target: \"_blank\",\n transition: \"default\"\n } : {},\n color: \"modalText\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n padding: \"8\",\n width: \"full\"\n },\n /* @__PURE__ */ React31.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: mobile ? \"16\" : \"14\"\n },\n /* @__PURE__ */ React31.createElement(Box, { color }, /* @__PURE__ */ React31.createElement(Icon, null)),\n /* @__PURE__ */ React31.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: mobile ? \"3\" : \"1\" }, /* @__PURE__ */ React31.createElement(Box, null, /* @__PURE__ */ React31.createElement(\n Text,\n {\n color: \"modalText\",\n font: \"body\",\n size: mobile ? \"16\" : \"14\",\n weight: \"bold\"\n },\n tx?.description\n )), /* @__PURE__ */ React31.createElement(Box, null, /* @__PURE__ */ React31.createElement(\n Text,\n {\n color: tx.status === \"pending\" ? \"modalTextSecondary\" : color,\n font: \"body\",\n size: \"14\",\n weight: mobile ? \"medium\" : \"regular\"\n },\n confirmationStatus\n )))\n ),\n explorerLink && /* @__PURE__ */ React31.createElement(Box, { alignItems: \"center\", color: \"modalTextDim\", display: \"flex\" }, /* @__PURE__ */ React31.createElement(ExternalLinkIcon, null))\n ));\n}\n\n// src/components/Txs/TxList.tsx\nvar NUMBER_OF_VISIBLE_TXS = 3;\nfunction TxList({ address }) {\n const recentTransactions = useRecentTransactions();\n const clearRecentTransactions = useClearRecentTransactions();\n const { chain: activeChain } = useAccount9();\n const explorerLink = chainToExplorerUrl(activeChain);\n const visibleTxs = recentTransactions.slice(0, NUMBER_OF_VISIBLE_TXS);\n const hasTransactions = visibleTxs.length > 0;\n const mobile = isMobile();\n const { appName } = useContext9(AppContext);\n const { i18n: i18n2 } = useContext9(I18nContext);\n return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10\",\n paddingBottom: \"2\",\n paddingTop: \"16\",\n paddingX: mobile ? \"8\" : \"18\"\n },\n hasTransactions && /* @__PURE__ */ React32.createElement(\n Box,\n {\n paddingBottom: mobile ? \"4\" : \"0\",\n paddingTop: \"8\",\n paddingX: mobile ? \"12\" : \"6\"\n },\n /* @__PURE__ */ React32.createElement(Box, { display: \"flex\", justifyContent: \"space-between\" }, /* @__PURE__ */ React32.createElement(\n Text,\n {\n color: \"modalTextSecondary\",\n size: mobile ? \"16\" : \"14\",\n weight: \"semibold\"\n },\n i18n2.t(\"profile.transactions.recent.title\")\n ), /* @__PURE__ */ React32.createElement(\n Box,\n {\n style: {\n marginBottom: -6,\n marginLeft: -10,\n marginRight: -10,\n marginTop: -6\n }\n },\n /* @__PURE__ */ React32.createElement(\n Box,\n {\n as: \"button\",\n background: {\n hover: \"profileForeground\"\n },\n borderRadius: \"actionButton\",\n className: touchableStyles({ active: \"shrink\" }),\n onClick: clearRecentTransactions,\n paddingX: mobile ? \"8\" : \"12\",\n paddingY: mobile ? \"4\" : \"5\",\n transition: \"default\",\n type: \"button\"\n },\n /* @__PURE__ */ React32.createElement(\n Text,\n {\n color: \"modalTextSecondary\",\n size: mobile ? \"16\" : \"14\",\n weight: \"semibold\"\n },\n i18n2.t(\"profile.transactions.clear.label\")\n )\n )\n ))\n ),\n /* @__PURE__ */ React32.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, hasTransactions ? visibleTxs.map((tx) => /* @__PURE__ */ React32.createElement(TxItem, { key: tx.hash, tx })) : /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(Box, { padding: mobile ? \"12\" : \"8\" }, /* @__PURE__ */ React32.createElement(\n Text,\n {\n color: \"modalTextDim\",\n size: mobile ? \"16\" : \"14\",\n weight: mobile ? \"medium\" : \"bold\"\n },\n appName ? i18n2.t(\"profile.transactions.description\", {\n appName\n }) : i18n2.t(\"profile.transactions.description_fallback\")\n )), mobile && /* @__PURE__ */ React32.createElement(\n Box,\n {\n background: \"generalBorderDim\",\n height: \"1\",\n marginX: \"12\",\n marginY: \"8\"\n }\n )))\n ), explorerLink && /* @__PURE__ */ React32.createElement(Box, { paddingBottom: \"18\", paddingX: mobile ? \"8\" : \"18\" }, /* @__PURE__ */ React32.createElement(\n Box,\n {\n alignItems: \"center\",\n as: \"a\",\n background: { hover: \"profileForeground\" },\n borderRadius: \"menuButton\",\n className: touchableStyles({ active: \"shrink\" }),\n color: \"modalTextDim\",\n display: \"flex\",\n flexDirection: \"row\",\n href: `${explorerLink}/address/${address}`,\n justifyContent: \"space-between\",\n paddingX: \"8\",\n paddingY: \"12\",\n rel: \"noreferrer noopener\",\n style: { willChange: \"transform\" },\n target: \"_blank\",\n transition: \"default\",\n width: \"full\",\n ...mobile ? { paddingLeft: \"12\" } : {}\n },\n /* @__PURE__ */ React32.createElement(\n Text,\n {\n color: \"modalText\",\n font: \"body\",\n size: mobile ? \"16\" : \"14\",\n weight: mobile ? \"semibold\" : \"bold\"\n },\n i18n2.t(\"profile.explorer.label\")\n ),\n /* @__PURE__ */ React32.createElement(ExternalLinkIcon, null)\n )));\n}\n\n// src/components/ProfileDetails/ProfileDetailsAction.tsx\nimport React33 from \"react\";\nfunction ProfileDetailsAction({\n action,\n icon,\n label,\n testId,\n url\n}) {\n const mobile = isMobile();\n return /* @__PURE__ */ React33.createElement(\n Box,\n {\n ...url ? { as: \"a\", href: url, rel: \"noreferrer noopener\", target: \"_blank\" } : { as: \"button\", type: \"button\" },\n background: {\n base: \"profileAction\",\n ...!mobile ? { hover: \"profileActionHover\" } : {}\n },\n borderRadius: \"menuButton\",\n boxShadow: \"profileDetailsAction\",\n className: touchableStyles({\n active: \"shrinkSm\",\n hover: !mobile ? \"grow\" : void 0\n }),\n display: \"flex\",\n onClick: action,\n padding: mobile ? \"6\" : \"8\",\n style: { willChange: \"transform\" },\n testId,\n transition: \"default\",\n width: \"full\"\n },\n /* @__PURE__ */ React33.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1\",\n justifyContent: \"center\",\n paddingTop: \"2\",\n width: \"full\"\n },\n /* @__PURE__ */ React33.createElement(Box, { color: \"modalText\", height: \"max\" }, icon),\n /* @__PURE__ */ React33.createElement(Box, null, /* @__PURE__ */ React33.createElement(Text, { color: \"modalText\", size: mobile ? \"12\" : \"13\", weight: \"semibold\" }, label))\n )\n );\n}\n\n// src/components/ProfileDetails/ProfileDetails.tsx\nfunction ProfileDetails({\n address,\n ensAvatar,\n ensName,\n balance,\n onClose,\n onDisconnect\n}) {\n const showRecentTransactions = useContext10(ShowRecentTransactionsContext);\n const [copiedAddress, setCopiedAddress] = useState10(false);\n const copyAddressAction = useCallback8(() => {\n if (address) {\n navigator.clipboard.writeText(address);\n setCopiedAddress(true);\n }\n }, [address]);\n useEffect12(() => {\n if (copiedAddress) {\n const timer = setTimeout(() => {\n setCopiedAddress(false);\n }, 1500);\n return () => clearTimeout(timer);\n }\n }, [copiedAddress]);\n if (!address) {\n return null;\n }\n const accountName = ensName ? formatENS(ensName) : formatAddress(address);\n const ethBalance = balance?.formatted;\n const displayBalance = ethBalance ? abbreviateETHBalance(Number.parseFloat(ethBalance)) : void 0;\n const titleId = \"rk_profile_title\";\n const mobile = isMobile();\n const { i18n: i18n2 } = useContext10(I18nContext);\n return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(Box, { display: \"flex\", flexDirection: \"column\" }, /* @__PURE__ */ React34.createElement(Box, { background: \"profileForeground\", padding: \"16\" }, /* @__PURE__ */ React34.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: mobile ? \"16\" : \"12\",\n justifyContent: \"center\",\n margin: \"8\",\n style: { textAlign: \"center\" }\n },\n /* @__PURE__ */ React34.createElement(\n Box,\n {\n style: {\n position: \"absolute\",\n right: 16,\n top: 16,\n willChange: \"transform\"\n }\n },\n /* @__PURE__ */ React34.createElement(CloseButton, { onClose })\n ),\n \" \",\n /* @__PURE__ */ React34.createElement(Box, { marginTop: mobile ? \"24\" : \"0\" }, /* @__PURE__ */ React34.createElement(\n Avatar,\n {\n address,\n imageUrl: ensAvatar,\n size: mobile ? 82 : 74\n }\n )),\n /* @__PURE__ */ React34.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: mobile ? \"4\" : \"0\",\n textAlign: \"center\"\n },\n /* @__PURE__ */ React34.createElement(Box, { textAlign: \"center\" }, /* @__PURE__ */ React34.createElement(\n Text,\n {\n as: \"h1\",\n color: \"modalText\",\n id: titleId,\n size: mobile ? \"20\" : \"18\",\n weight: \"heavy\"\n },\n accountName\n )),\n !!balance && /* @__PURE__ */ React34.createElement(Box, { textAlign: \"center\" }, /* @__PURE__ */ React34.createElement(\n Text,\n {\n as: \"h1\",\n color: \"modalTextSecondary\",\n id: titleId,\n size: mobile ? \"16\" : \"14\",\n weight: \"semibold\"\n },\n displayBalance,\n \" \",\n balance.symbol\n ))\n )\n ), /* @__PURE__ */ React34.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"8\",\n margin: \"2\",\n marginTop: \"16\"\n },\n /* @__PURE__ */ React34.createElement(\n ProfileDetailsAction,\n {\n action: copyAddressAction,\n icon: copiedAddress ? /* @__PURE__ */ React34.createElement(CopiedIcon, null) : /* @__PURE__ */ React34.createElement(CopyIcon, null),\n label: copiedAddress ? i18n2.t(\"profile.copy_address.copied\") : i18n2.t(\"profile.copy_address.label\")\n }\n ),\n /* @__PURE__ */ React34.createElement(\n ProfileDetailsAction,\n {\n action: onDisconnect,\n icon: /* @__PURE__ */ React34.createElement(DisconnectIcon, null),\n label: i18n2.t(\"profile.disconnect.label\"),\n testId: \"disconnect-button\"\n }\n )\n )), showRecentTransactions && /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(Box, { background: \"generalBorder\", height: \"1\", marginTop: \"-1\" }), /* @__PURE__ */ React34.createElement(Box, null, /* @__PURE__ */ React34.createElement(TxList, { address })))));\n}\n\n// src/components/AccountModal/AccountModal.tsx\nfunction AccountModal({ onClose, open }) {\n const { address } = useAccount10();\n const { balance, ensAvatar, ensName } = useProfile({\n address,\n includeBalance: open\n });\n const { disconnect } = useDisconnect();\n if (!address) {\n return null;\n }\n const titleId = \"rk_account_modal_title\";\n return /* @__PURE__ */ React35.createElement(React35.Fragment, null, address && /* @__PURE__ */ React35.createElement(Dialog, { onClose, open, titleId }, /* @__PURE__ */ React35.createElement(DialogContent, { bottomSheetOnMobile: true, padding: \"0\" }, /* @__PURE__ */ React35.createElement(\n ProfileDetails,\n {\n address,\n ensAvatar,\n ensName,\n balance,\n onClose,\n onDisconnect: disconnect\n }\n ))));\n}\n\n// src/components/ChainModal/ChainModal.tsx\nimport React39, { useContext as useContext12, useState as useState11 } from \"react\";\nimport { useAccount as useAccount11, useDisconnect as useDisconnect2, useSwitchChain } from \"wagmi\";\nimport { useConfig as useConfig2 } from \"wagmi\";\n\n// src/components/Icons/DisconnectSq.tsx\nimport React36 from \"react\";\nvar DisconnectSqIcon = ({ size }) => /* @__PURE__ */ React36.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: size,\n viewBox: \"0 0 28 28\",\n width: size,\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React36.createElement(\"title\", null, \"Disconnect\"),\n /* @__PURE__ */ React36.createElement(\n \"path\",\n {\n d: \"M6.742 22.195h8.367c1.774 0 2.743-.968 2.743-2.758V16.11h-2.016v3.11c0 .625-.305.96-.969.96H6.984c-.664 0-.968-.335-.968-.96V7.984c0-.632.304-.968.968-.968h7.883c.664 0 .969.336.969.968v3.133h2.016v-3.36c0-1.78-.97-2.757-2.743-2.757H6.742C4.97 5 4 5.977 4 7.758v11.68c0 1.789.969 2.757 2.742 2.757Zm5.438-7.703h7.601l1.149-.07-.602.406-1.008.938a.816.816 0 0 0-.258.593c0 .407.313.782.758.782.227 0 .39-.086.547-.243l2.492-2.593c.235-.235.313-.47.313-.711 0-.242-.078-.477-.313-.719l-2.492-2.586c-.156-.156-.32-.25-.547-.25-.445 0-.758.367-.758.781 0 .227.094.446.258.594l1.008.945.602.407-1.149-.079H12.18a.904.904 0 0 0 0 1.805Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/MenuButton/MenuButton.tsx\nimport React37 from \"react\";\n\n// src/components/MenuButton/MenuButton.css.ts\nvar unsetBackgroundOnHover = \"v9horb0\";\n\n// src/components/MenuButton/MenuButton.tsx\nvar MenuButton = React37.forwardRef(\n ({\n children,\n currentlySelected = false,\n onClick,\n testId,\n ...urlProps\n }, ref) => {\n const mobile = isMobile();\n return /* @__PURE__ */ React37.createElement(\n Box,\n {\n as: \"button\",\n borderRadius: \"menuButton\",\n disabled: currentlySelected,\n display: \"flex\",\n onClick,\n ref,\n testId,\n type: \"button\"\n },\n /* @__PURE__ */ React37.createElement(\n Box,\n {\n borderRadius: \"menuButton\",\n className: [\n mobile ? unsetBackgroundOnHover : void 0,\n !currentlySelected && touchableStyles({ active: \"shrink\" })\n ],\n padding: mobile ? \"8\" : \"6\",\n transition: \"default\",\n width: \"full\",\n ...currentlySelected ? {\n background: \"accentColor\",\n borderColor: \"selectedOptionBorder\",\n borderStyle: \"solid\",\n borderWidth: \"1\",\n boxShadow: \"selectedOption\",\n color: \"accentColorForeground\"\n } : {\n background: { hover: \"menuItemBackground\" },\n color: \"modalText\",\n transition: \"default\"\n },\n ...urlProps\n },\n children\n )\n );\n }\n);\nMenuButton.displayName = \"MenuButton\";\n\n// src/components/ChainModal/Chain.tsx\nimport React38, { Fragment, useContext as useContext11 } from \"react\";\nvar Chain = ({\n chainId,\n currentChainId,\n switchChain,\n chainIconSize,\n isLoading,\n src: src7,\n name,\n iconBackground,\n idx\n}) => {\n const mobile = isMobile();\n const { i18n: i18n2 } = useContext11(I18nContext);\n const rainbowkitChains = useRainbowKitChains();\n const isCurrentChain = currentChainId === chainId;\n return /* @__PURE__ */ React38.createElement(Fragment, null, /* @__PURE__ */ React38.createElement(\n MenuButton,\n {\n currentlySelected: isCurrentChain,\n onClick: isCurrentChain ? void 0 : () => switchChain({ chainId }),\n testId: `chain-option-${chainId}`\n },\n /* @__PURE__ */ React38.createElement(Box, { fontFamily: \"body\", fontSize: \"16\", fontWeight: \"bold\" }, /* @__PURE__ */ React38.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n },\n /* @__PURE__ */ React38.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"4\",\n height: chainIconSize\n },\n src7 && /* @__PURE__ */ React38.createElement(Box, { height: \"full\", marginRight: \"8\" }, /* @__PURE__ */ React38.createElement(\n AsyncImage,\n {\n alt: name,\n background: iconBackground,\n borderRadius: \"full\",\n height: chainIconSize,\n src: src7,\n width: chainIconSize,\n testId: `chain-option-${chainId}-icon`\n }\n )),\n /* @__PURE__ */ React38.createElement(\"div\", null, name ?? name)\n ),\n isCurrentChain && /* @__PURE__ */ React38.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n marginRight: \"6\"\n },\n /* @__PURE__ */ React38.createElement(Text, { color: \"accentColorForeground\", size: \"14\", weight: \"medium\" }, i18n2.t(\"chains.connected\")),\n /* @__PURE__ */ React38.createElement(\n Box,\n {\n background: \"connectionIndicator\",\n borderColor: \"selectedOptionBorder\",\n borderRadius: \"full\",\n borderStyle: \"solid\",\n borderWidth: \"1\",\n height: \"8\",\n marginLeft: \"8\",\n width: \"8\"\n }\n )\n ),\n isLoading && /* @__PURE__ */ React38.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n marginRight: \"6\"\n },\n /* @__PURE__ */ React38.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"medium\" }, i18n2.t(\"chains.confirm\")),\n /* @__PURE__ */ React38.createElement(\n Box,\n {\n background: \"standby\",\n borderRadius: \"full\",\n height: \"8\",\n marginLeft: \"8\",\n width: \"8\"\n }\n )\n )\n ))\n ), mobile && idx < rainbowkitChains.length - 1 && /* @__PURE__ */ React38.createElement(Box, { background: \"generalBorderDim\", height: \"1\", marginX: \"8\" }));\n};\nvar Chain_default = Chain;\n\n// src/components/ChainModal/ChainModal.css.ts\nvar DesktopScrollClassName = \"_18dqw9x0\";\nvar MobileScrollClassName = \"_18dqw9x1\";\n\n// src/components/ChainModal/ChainModal.tsx\nfunction ChainModal({ onClose, open }) {\n const { chainId } = useAccount11();\n const { chains } = useConfig2();\n const [pendingChainId, setPendingChainId] = useState11(null);\n const { switchChain } = useSwitchChain({\n mutation: {\n onMutate: ({ chainId: _chainId }) => {\n setPendingChainId(_chainId);\n },\n onSuccess: () => {\n if (pendingChainId)\n setPendingChainId(null);\n },\n onError: () => {\n if (pendingChainId)\n setPendingChainId(null);\n },\n onSettled: () => {\n onClose();\n }\n }\n });\n const { i18n: i18n2 } = useContext12(I18nContext);\n const { disconnect } = useDisconnect2();\n const titleId = \"rk_chain_modal_title\";\n const mobile = isMobile();\n const isCurrentChainSupported = chains.some((chain) => chain.id === chainId);\n const chainIconSize = mobile ? \"36\" : \"28\";\n const rainbowkitChains = useRainbowKitChains();\n if (!chainId) {\n return null;\n }\n return /* @__PURE__ */ React39.createElement(Dialog, { onClose, open, titleId }, /* @__PURE__ */ React39.createElement(DialogContent, { bottomSheetOnMobile: true, paddingBottom: \"0\" }, /* @__PURE__ */ React39.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"14\" }, /* @__PURE__ */ React39.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n },\n mobile && /* @__PURE__ */ React39.createElement(Box, { width: \"30\" }),\n /* @__PURE__ */ React39.createElement(Box, { paddingBottom: \"0\", paddingLeft: \"8\", paddingTop: \"4\" }, /* @__PURE__ */ React39.createElement(\n Text,\n {\n as: \"h1\",\n color: \"modalText\",\n id: titleId,\n size: mobile ? \"20\" : \"18\",\n weight: \"heavy\"\n },\n i18n2.t(\"chains.title\")\n )),\n /* @__PURE__ */ React39.createElement(CloseButton, { onClose })\n ), !isCurrentChainSupported && /* @__PURE__ */ React39.createElement(Box, { marginX: \"8\", textAlign: mobile ? \"center\" : \"left\" }, /* @__PURE__ */ React39.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, i18n2.t(\"chains.wrong_network\"))), /* @__PURE__ */ React39.createElement(\n Box,\n {\n className: mobile ? MobileScrollClassName : DesktopScrollClassName,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4\",\n padding: \"2\",\n paddingBottom: \"16\"\n },\n rainbowkitChains.map(\n ({ iconBackground, iconUrl, id, name }, idx) => {\n return /* @__PURE__ */ React39.createElement(\n Chain_default,\n {\n key: id,\n chainId: id,\n currentChainId: chainId,\n switchChain,\n chainIconSize,\n isLoading: pendingChainId === id,\n src: iconUrl,\n name,\n iconBackground,\n idx\n }\n );\n }\n ),\n !isCurrentChainSupported && /* @__PURE__ */ React39.createElement(React39.Fragment, null, /* @__PURE__ */ React39.createElement(Box, { background: \"generalBorderDim\", height: \"1\", marginX: \"8\" }), /* @__PURE__ */ React39.createElement(\n MenuButton,\n {\n onClick: () => disconnect(),\n testId: \"chain-option-disconnect\"\n },\n /* @__PURE__ */ React39.createElement(\n Box,\n {\n color: \"error\",\n fontFamily: \"body\",\n fontSize: \"16\",\n fontWeight: \"bold\"\n },\n /* @__PURE__ */ React39.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n },\n /* @__PURE__ */ React39.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"4\",\n height: chainIconSize\n },\n /* @__PURE__ */ React39.createElement(\n Box,\n {\n alignItems: \"center\",\n color: \"error\",\n height: chainIconSize,\n justifyContent: \"center\",\n marginRight: \"8\"\n },\n /* @__PURE__ */ React39.createElement(DisconnectSqIcon, { size: Number(chainIconSize) })\n ),\n /* @__PURE__ */ React39.createElement(\"div\", null, i18n2.t(\"chains.disconnect\"))\n )\n )\n )\n ))\n ))));\n}\n\n// src/components/ConnectModal/ConnectModal.tsx\nimport React57 from \"react\";\nimport { useAccount as useAccount12, useDisconnect as useDisconnect3 } from \"wagmi\";\n\n// src/components/ConnectOptions/ConnectOptions.tsx\nimport React56, { useContext as useContext19 } from \"react\";\n\n// src/components/ConnectOptions/DesktopOptions.tsx\nimport React53, {\n Fragment as Fragment2,\n useContext as useContext16,\n useEffect as useEffect15,\n useRef as useRef4,\n useState as useState12\n} from \"react\";\n\n// src/utils/groupBy.ts\nfunction groupBy(items, getKey) {\n const groupedItems = {};\n for (const item of items) {\n const key = getKey(item);\n if (!key) {\n continue;\n }\n if (!groupedItems[key]) {\n groupedItems[key] = [];\n }\n groupedItems[key].push(item);\n }\n return groupedItems;\n}\n\n// src/components/ConnectModal/ConnectModalIntro.tsx\nimport React42, { useContext as useContext13 } from \"react\";\n\n// src/components/Disclaimer/DisclaimerLink.tsx\nimport React40 from \"react\";\nvar DisclaimerLink = ({\n children,\n href\n}) => {\n return /* @__PURE__ */ React40.createElement(\n Box,\n {\n as: \"a\",\n color: \"accentColor\",\n href,\n rel: \"noreferrer\",\n target: \"_blank\"\n },\n children\n );\n};\n\n// src/components/Disclaimer/DisclaimerText.tsx\nimport React41 from \"react\";\nvar DisclaimerText = ({ children }) => {\n return /* @__PURE__ */ React41.createElement(Text, { color: \"modalTextSecondary\", size: \"12\", weight: \"medium\" }, children);\n};\n\n// src/components/ConnectModal/ConnectModalIntro.tsx\nfunction ConnectModalIntro({\n compactModeEnabled = false,\n getWallet\n}) {\n const { disclaimer: Disclaimer, learnMoreUrl } = useContext13(AppContext);\n const { i18n: i18n2 } = useContext13(I18nContext);\n return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(\n Box,\n {\n alignItems: \"center\",\n color: \"accentColor\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"full\",\n justifyContent: \"space-around\"\n },\n /* @__PURE__ */ React42.createElement(Box, { marginBottom: \"10\" }, !compactModeEnabled && /* @__PURE__ */ React42.createElement(Text, { color: \"modalText\", size: \"18\", weight: \"heavy\" }, i18n2.t(\"intro.title\"))),\n /* @__PURE__ */ React42.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"32\",\n justifyContent: \"center\",\n marginY: \"20\",\n style: { maxWidth: 312 }\n },\n /* @__PURE__ */ React42.createElement(Box, { alignItems: \"center\", display: \"flex\", flexDirection: \"row\", gap: \"16\" }, /* @__PURE__ */ React42.createElement(Box, { borderRadius: \"6\", height: \"48\", minWidth: \"48\", width: \"48\" }, /* @__PURE__ */ React42.createElement(AssetsIcon, null)), /* @__PURE__ */ React42.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, /* @__PURE__ */ React42.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, i18n2.t(\"intro.digital_asset.title\")), /* @__PURE__ */ React42.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, i18n2.t(\"intro.digital_asset.description\")))),\n /* @__PURE__ */ React42.createElement(Box, { alignItems: \"center\", display: \"flex\", flexDirection: \"row\", gap: \"16\" }, /* @__PURE__ */ React42.createElement(Box, { borderRadius: \"6\", height: \"48\", minWidth: \"48\", width: \"48\" }, /* @__PURE__ */ React42.createElement(LoginIcon, null)), /* @__PURE__ */ React42.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, /* @__PURE__ */ React42.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, i18n2.t(\"intro.login.title\")), /* @__PURE__ */ React42.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, i18n2.t(\"intro.login.description\"))))\n ),\n /* @__PURE__ */ React42.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12\",\n justifyContent: \"center\",\n margin: \"10\"\n },\n /* @__PURE__ */ React42.createElement(ActionButton, { label: i18n2.t(\"intro.get.label\"), onClick: getWallet }),\n /* @__PURE__ */ React42.createElement(\n Box,\n {\n as: \"a\",\n className: touchableStyles({ active: \"shrink\", hover: \"grow\" }),\n display: \"block\",\n href: learnMoreUrl,\n paddingX: \"12\",\n paddingY: \"4\",\n rel: \"noreferrer\",\n style: { willChange: \"transform\" },\n target: \"_blank\",\n transition: \"default\"\n },\n /* @__PURE__ */ React42.createElement(Text, { color: \"accentColor\", size: \"14\", weight: \"bold\" }, i18n2.t(\"intro.learn_more.label\"))\n )\n ),\n Disclaimer && !compactModeEnabled && /* @__PURE__ */ React42.createElement(Box, { marginBottom: \"8\", marginTop: \"12\", textAlign: \"center\" }, /* @__PURE__ */ React42.createElement(Disclaimer, { Link: DisclaimerLink, Text: DisclaimerText }))\n ));\n}\n\n// src/components/Icons/Back.tsx\nimport React43 from \"react\";\nvar BackIcon = () => /* @__PURE__ */ React43.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"17\",\n viewBox: \"0 0 11 17\",\n width: \"11\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React43.createElement(\"title\", null, \"Back\"),\n /* @__PURE__ */ React43.createElement(\n \"path\",\n {\n d: \"M0.99707 8.6543C0.99707 9.08496 1.15527 9.44531 1.51562 9.79688L8.16016 16.3096C8.43262 16.5732 8.74902 16.7051 9.13574 16.7051C9.90918 16.7051 10.5508 16.0811 10.5508 15.3076C10.5508 14.9121 10.3838 14.5605 10.0938 14.2705L4.30176 8.64551L10.0938 3.0293C10.3838 2.74805 10.5508 2.3877 10.5508 2.00098C10.5508 1.23633 9.90918 0.603516 9.13574 0.603516C8.74902 0.603516 8.43262 0.735352 8.16016 0.999023L1.51562 7.51172C1.15527 7.85449 1.00586 8.21484 0.99707 8.6543Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/InfoButton/InfoButton.tsx\nimport React45 from \"react\";\n\n// src/components/Icons/Info.tsx\nimport React44 from \"react\";\nvar InfoIcon = () => /* @__PURE__ */ React44.createElement(\n \"svg\",\n {\n fill: \"none\",\n height: \"12\",\n viewBox: \"0 0 8 12\",\n width: \"8\",\n xmlns: \"http://www.w3.org/2000/svg\"\n },\n /* @__PURE__ */ React44.createElement(\"title\", null, \"Info\"),\n /* @__PURE__ */ React44.createElement(\n \"path\",\n {\n d: \"M3.64258 7.99609C4.19336 7.99609 4.5625 7.73828 4.68555 7.24609C4.69141 7.21094 4.70312 7.16406 4.70898 7.13477C4.80859 6.60742 5.05469 6.35547 6.04492 5.76367C7.14648 5.10156 7.67969 4.3457 7.67969 3.24414C7.67969 1.39844 6.17383 0.255859 3.95898 0.255859C2.32422 0.255859 1.05859 0.894531 0.548828 1.86719C0.396484 2.14844 0.320312 2.44727 0.320312 2.74023C0.314453 3.37305 0.742188 3.79492 1.42188 3.79492C1.91406 3.79492 2.33594 3.54883 2.53516 3.11523C2.78711 2.47656 3.23242 2.21289 3.83594 2.21289C4.55664 2.21289 5.10742 2.65234 5.10742 3.29102C5.10742 3.9707 4.7793 4.29883 3.81836 4.87891C3.02148 5.36523 2.50586 5.92773 2.50586 6.76562V6.90039C2.50586 7.55664 2.96289 7.99609 3.64258 7.99609ZM3.67188 11.4473C4.42773 11.4473 5.04297 10.8672 5.04297 10.1406C5.04297 9.41406 4.42773 8.83984 3.67188 8.83984C2.91602 8.83984 2.30664 9.41406 2.30664 10.1406C2.30664 10.8672 2.91602 11.4473 3.67188 11.4473Z\",\n fill: \"currentColor\"\n }\n )\n);\n\n// src/components/InfoButton/InfoButton.tsx\nvar InfoButton = ({\n \"aria-label\": ariaLabel = \"Info\",\n onClick\n}) => {\n const mobile = isMobile();\n return /* @__PURE__ */ React45.createElement(\n Box,\n {\n alignItems: \"center\",\n \"aria-label\": ariaLabel,\n as: \"button\",\n background: \"closeButtonBackground\",\n borderColor: \"actionButtonBorder\",\n borderRadius: \"full\",\n borderStyle: \"solid\",\n borderWidth: mobile ? \"0\" : \"1\",\n className: touchableStyles({ active: \"shrinkSm\", hover: \"growLg\" }),\n color: \"closeButton\",\n display: \"flex\",\n height: mobile ? \"30\" : \"28\",\n justifyContent: \"center\",\n onClick,\n style: { willChange: \"transform\" },\n transition: \"default\",\n type: \"button\",\n width: mobile ? \"30\" : \"28\"\n },\n /* @__PURE__ */ React45.createElement(InfoIcon, null)\n );\n};\n\n// src/components/ModalSelection/ModalSelection.tsx\nimport React46 from \"react\";\n\n// src/components/RainbowKitProvider/useCoolMode.ts\nimport { useContext as useContext14, useEffect as useEffect13, useRef as useRef3 } from \"react\";\nvar useCoolMode = (imageUrl) => {\n const ref = useRef3(null);\n const coolModeEnabled = useContext14(CoolModeContext);\n const resolvedImageUrl = useAsyncImage(imageUrl);\n useEffect13(() => {\n if (coolModeEnabled && ref.current && resolvedImageUrl) {\n return makeElementCool(ref.current, resolvedImageUrl);\n }\n }, [coolModeEnabled, resolvedImageUrl]);\n return ref;\n};\nvar getContainer = () => {\n const id = \"_rk_coolMode\";\n const existingContainer = document.getElementById(id);\n if (existingContainer) {\n return existingContainer;\n }\n const container = document.createElement(\"div\");\n container.setAttribute(\"id\", id);\n container.setAttribute(\n \"style\",\n [\n \"overflow:hidden\",\n \"position:fixed\",\n \"height:100%\",\n \"top:0\",\n \"left:0\",\n \"right:0\",\n \"bottom:0\",\n \"pointer-events:none\",\n \"z-index:2147483647\"\n ].join(\";\")\n );\n document.body.appendChild(container);\n return container;\n};\nvar instanceCounter = 0;\nfunction makeElementCool(element2, imageUrl) {\n instanceCounter++;\n const sizes = [15, 20, 25, 35, 45];\n const limit = 35;\n let particles = [];\n let autoAddParticle = false;\n let mouseX = 0;\n let mouseY = 0;\n const container = getContainer();\n function createParticle() {\n const size = sizes[Math.floor(Math.random() * sizes.length)];\n const speedHorz = Math.random() * 10;\n const speedUp = Math.random() * 25;\n const spinVal = Math.random() * 360;\n const spinSpeed = Math.random() * 35 * (Math.random() <= 0.5 ? -1 : 1);\n const top = mouseY - size / 2;\n const left = mouseX - size / 2;\n const direction = Math.random() <= 0.5 ? -1 : 1;\n const particle = document.createElement(\"div\");\n particle.innerHTML = ``;\n particle.setAttribute(\n \"style\",\n [\n \"position:absolute\",\n \"will-change:transform\",\n `top:${top}px`,\n `left:${left}px`,\n `transform:rotate(${spinVal}deg)`\n ].join(\";\")\n );\n container.appendChild(particle);\n particles.push({\n direction,\n element: particle,\n left,\n size,\n speedHorz,\n speedUp,\n spinSpeed,\n spinVal,\n top\n });\n }\n function updateParticles() {\n for (const p of particles) {\n p.left = p.left - p.speedHorz * p.direction;\n p.top = p.top - p.speedUp;\n p.speedUp = Math.min(p.size, p.speedUp - 1);\n p.spinVal = p.spinVal + p.spinSpeed;\n if (p.top >= Math.max(window.innerHeight, document.body.clientHeight) + p.size) {\n particles = particles.filter((o) => o !== p);\n p.element.remove();\n }\n p.element.setAttribute(\n \"style\",\n [\n \"position:absolute\",\n \"will-change:transform\",\n `top:${p.top}px`,\n `left:${p.left}px`,\n `transform:rotate(${p.spinVal}deg)`\n ].join(\";\")\n );\n }\n }\n let animationFrame;\n function loop() {\n if (autoAddParticle && particles.length < limit) {\n createParticle();\n }\n updateParticles();\n animationFrame = requestAnimationFrame(loop);\n }\n loop();\n const isTouchInteraction = \"ontouchstart\" in window || // @ts-expect-error\n navigator.msMaxTouchPoints;\n const tap = isTouchInteraction ? \"touchstart\" : \"mousedown\";\n const tapEnd = isTouchInteraction ? \"touchend\" : \"mouseup\";\n const move = isTouchInteraction ? \"touchmove\" : \"mousemove\";\n const updateMousePosition = (e) => {\n if (\"touches\" in e) {\n mouseX = e.touches?.[0].clientX;\n mouseY = e.touches?.[0].clientY;\n } else {\n mouseX = e.clientX;\n mouseY = e.clientY;\n }\n };\n const tapHandler = (e) => {\n updateMousePosition(e);\n autoAddParticle = true;\n };\n const disableAutoAddParticle = () => {\n autoAddParticle = false;\n };\n element2.addEventListener(move, updateMousePosition, { passive: false });\n element2.addEventListener(tap, tapHandler);\n element2.addEventListener(tapEnd, disableAutoAddParticle);\n element2.addEventListener(\"mouseleave\", disableAutoAddParticle);\n return () => {\n element2.removeEventListener(move, updateMousePosition);\n element2.removeEventListener(tap, tapHandler);\n element2.removeEventListener(tapEnd, disableAutoAddParticle);\n element2.removeEventListener(\"mouseleave\", disableAutoAddParticle);\n const interval = setInterval(() => {\n if (animationFrame && particles.length === 0) {\n cancelAnimationFrame(animationFrame);\n clearInterval(interval);\n if (--instanceCounter === 0) {\n container.remove();\n }\n }\n }, 500);\n };\n}\n\n// src/components/ModalSelection/ModalSelection.css.ts\nvar transparentBorder = \"g5kl0l0\";\n\n// src/components/ModalSelection/ModalSelection.tsx\nvar ModalSelection = ({\n as = \"button\",\n currentlySelected = false,\n iconBackground,\n iconUrl,\n name,\n onClick,\n ready,\n recent,\n testId,\n isRainbowKitConnector: isRainbowKitConnector2,\n ...urlProps\n}) => {\n const coolModeRef = useCoolMode(iconUrl);\n const [isMouseOver, setIsMouseOver] = React46.useState(false);\n const { i18n: i18n2 } = React46.useContext(I18nContext);\n return /* @__PURE__ */ React46.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n onMouseEnter: () => setIsMouseOver(true),\n onMouseLeave: () => setIsMouseOver(false),\n ref: coolModeRef\n },\n /* @__PURE__ */ React46.createElement(\n Box,\n {\n as,\n borderRadius: \"menuButton\",\n borderStyle: \"solid\",\n borderWidth: \"1\",\n className: !currentlySelected ? [\n transparentBorder,\n touchableStyles({\n active: \"shrink\"\n })\n ] : void 0,\n disabled: currentlySelected,\n onClick,\n padding: \"5\",\n style: { willChange: \"transform\" },\n testId,\n transition: \"default\",\n width: \"full\",\n ...currentlySelected ? {\n background: \"accentColor\",\n borderColor: \"selectedOptionBorder\",\n boxShadow: \"selectedWallet\"\n } : {\n background: { hover: \"menuItemBackground\" }\n },\n ...urlProps\n },\n /* @__PURE__ */ React46.createElement(\n Box,\n {\n color: currentlySelected ? \"accentColorForeground\" : \"modalText\",\n disabled: !ready,\n fontFamily: \"body\",\n fontSize: \"16\",\n fontWeight: \"bold\",\n transition: \"default\"\n },\n /* @__PURE__ */ React46.createElement(Box, { alignItems: \"center\", display: \"flex\", flexDirection: \"row\", gap: \"12\" }, /* @__PURE__ */ React46.createElement(\n AsyncImage,\n {\n background: iconBackground,\n ...!isMouseOver && isRainbowKitConnector2 ? { borderColor: \"actionButtonBorder\" } : {},\n useAsImage: !isRainbowKitConnector2,\n borderRadius: \"6\",\n height: \"28\",\n src: iconUrl,\n width: \"28\"\n }\n ), /* @__PURE__ */ React46.createElement(Box, null, /* @__PURE__ */ React46.createElement(\n Box,\n {\n style: { marginTop: recent ? -2 : void 0 },\n maxWidth: \"200\"\n },\n name\n ), recent && /* @__PURE__ */ React46.createElement(\n Text,\n {\n color: currentlySelected ? \"accentColorForeground\" : \"accentColor\",\n size: \"12\",\n style: { lineHeight: 1, marginTop: -1 },\n weight: \"medium\"\n },\n i18n2.t(\"connect.recent\")\n )))\n )\n )\n );\n};\nModalSelection.displayName = \"ModalSelection\";\n\n// src/wallets/latestWalletId.ts\nvar storageKey5 = \"rk-latest-id\";\nfunction getLatestWalletId() {\n return typeof localStorage !== \"undefined\" ? localStorage.getItem(storageKey5) || \"\" : \"\";\n}\nfunction addLatestWalletId(walletId) {\n localStorage.setItem(storageKey5, walletId);\n}\nfunction clearLatestWalletId() {\n localStorage.removeItem(storageKey5);\n}\n\n// src/components/ConnectOptions/ConnectDetails.tsx\nimport React52, { useContext as useContext15, useEffect as useEffect14 } from \"react\";\n\n// src/utils/colors.ts\nvar convertHexToRGBA = (hexCode, opacity = 1) => {\n let hex = hexCode.replace(\"#\", \"\");\n if (hex.length === 3) {\n hex = `${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}`;\n }\n const r = Number.parseInt(hex.substring(0, 2), 16);\n const g = Number.parseInt(hex.substring(2, 4), 16);\n const b = Number.parseInt(hex.substring(4, 6), 16);\n if (opacity > 1 && opacity <= 100) {\n opacity = opacity / 100;\n }\n return `rgba(${r},${g},${b},${opacity})`;\n};\nvar getGradientRGBAs = (hexColor) => {\n if (!hexColor)\n return null;\n return [\n convertHexToRGBA(hexColor, 0.2),\n convertHexToRGBA(hexColor, 0.14),\n convertHexToRGBA(hexColor, 0.1)\n ];\n};\nvar isHexString = (color) => {\n return /^#([0-9a-f]{3}){1,2}$/i.test(color);\n};\n\n// src/components/Icons/Connect.tsx\nimport React47 from \"react\";\nvar src3 = async () => (await import(\"./connect-MR6XDLIE.js\")).default;\nvar preloadConnectIcon = () => loadImages(src3);\nvar ConnectIcon = () => /* @__PURE__ */ React47.createElement(\n AsyncImage,\n {\n background: \"#515a70\",\n borderColor: \"generalBorder\",\n borderRadius: \"10\",\n height: \"48\",\n src: src3,\n width: \"48\"\n }\n);\n\n// src/components/Icons/Create.tsx\nimport React48 from \"react\";\nvar src4 = async () => (await import(\"./create-X4WFHLCW.js\")).default;\nvar preloadCreateIcon = () => loadImages(src4);\nvar CreateIcon = () => /* @__PURE__ */ React48.createElement(\n AsyncImage,\n {\n background: \"#e3a5e8\",\n borderColor: \"generalBorder\",\n borderRadius: \"10\",\n height: \"48\",\n src: src4,\n width: \"48\"\n }\n);\n\n// src/components/Icons/Refresh.tsx\nimport React49 from \"react\";\nvar src5 = async () => (await import(\"./refresh-HJGJRASX.js\")).default;\nvar preloadRefreshIcon = () => loadImages(src5);\nvar RefreshIcon = () => /* @__PURE__ */ React49.createElement(\n AsyncImage,\n {\n background: \"#515a70\",\n borderColor: \"generalBorder\",\n borderRadius: \"10\",\n height: \"48\",\n src: src5,\n width: \"48\"\n }\n);\n\n// src/components/Icons/Scan.tsx\nimport React50 from \"react\";\nvar src6 = async () => (await import(\"./scan-DEOT2M37.js\")).default;\nvar preloadScanIcon = () => loadImages(src6);\nvar ScanIcon = () => /* @__PURE__ */ React50.createElement(\n AsyncImage,\n {\n background: \"#515a70\",\n borderColor: \"generalBorder\",\n borderRadius: \"10\",\n height: \"48\",\n src: src6,\n width: \"48\"\n }\n);\n\n// src/components/QRCode/QRCode.tsx\nimport QRCodeUtil from \"qrcode\";\nimport React51, { useMemo as useMemo7 } from \"react\";\n\n// src/components/ConnectOptions/DesktopOptions.css.ts\nvar QRCodeBackgroundClassName = \"_1vwt0cg0\";\nvar ScrollClassName = \"_1vwt0cg2 ju367v7a ju367v7v\";\nvar sidebar = \"_1vwt0cg3\";\nvar sidebarCompactMode = \"_1vwt0cg4\";\n\n// src/components/QRCode/QRCode.tsx\nvar generateMatrix = (value, errorCorrectionLevel) => {\n const arr = Array.prototype.slice.call(\n QRCodeUtil.create(value, { errorCorrectionLevel }).modules.data,\n 0\n );\n const sqrt = Math.sqrt(arr.length);\n return arr.reduce(\n (rows, key, index) => (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows,\n []\n );\n};\nfunction QRCode({\n ecl = \"M\",\n logoBackground,\n logoMargin = 10,\n logoSize = 50,\n logoUrl,\n size: sizeProp = 200,\n uri\n}) {\n const padding = \"20\";\n const size = sizeProp - Number.parseInt(padding, 10) * 2;\n const dots = useMemo7(() => {\n const dots2 = [];\n const matrix = generateMatrix(uri, ecl);\n const cellSize = size / matrix.length;\n const qrList = [\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 }\n ];\n qrList.forEach(({ x, y }) => {\n const x1 = (matrix.length - 7) * cellSize * x;\n const y1 = (matrix.length - 7) * cellSize * y;\n for (let i = 0; i < 3; i++) {\n dots2.push(\n /* @__PURE__ */ React51.createElement(\n \"rect\",\n {\n fill: i % 2 !== 0 ? \"white\" : \"black\",\n height: cellSize * (7 - i * 2),\n key: `${i}-${x}-${y}`,\n rx: (i - 2) * -5 + (i === 0 ? 2 : 0),\n ry: (i - 2) * -5 + (i === 0 ? 2 : 0),\n width: cellSize * (7 - i * 2),\n x: x1 + cellSize * i,\n y: y1 + cellSize * i\n }\n )\n );\n }\n });\n const clearArenaSize = Math.floor((logoSize + 25) / cellSize);\n const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;\n const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;\n matrix.forEach((row, i) => {\n row.forEach((_, j) => {\n if (matrix[i][j]) {\n if (!(i < 7 && j < 7 || i > matrix.length - 8 && j < 7 || i < 7 && j > matrix.length - 8)) {\n if (!(i > matrixMiddleStart && i < matrixMiddleEnd && j > matrixMiddleStart && j < matrixMiddleEnd)) {\n dots2.push(\n /* @__PURE__ */ React51.createElement(\n \"circle\",\n {\n cx: i * cellSize + cellSize / 2,\n cy: j * cellSize + cellSize / 2,\n fill: \"black\",\n key: `circle-${i}-${j}`,\n r: cellSize / 3\n }\n )\n );\n }\n }\n }\n });\n });\n return dots2;\n }, [ecl, logoSize, size, uri]);\n const logoPosition = size / 2 - logoSize / 2;\n const logoWrapperSize = logoSize + logoMargin * 2;\n return /* @__PURE__ */ React51.createElement(\n Box,\n {\n borderColor: \"generalBorder\",\n borderRadius: \"menuButton\",\n borderStyle: \"solid\",\n borderWidth: \"1\",\n className: QRCodeBackgroundClassName,\n padding,\n width: \"max\"\n },\n /* @__PURE__ */ React51.createElement(\n Box,\n {\n style: {\n height: size,\n userSelect: \"none\",\n width: size\n },\n userSelect: \"none\"\n },\n /* @__PURE__ */ React51.createElement(\n Box,\n {\n display: \"flex\",\n justifyContent: \"center\",\n position: \"relative\",\n style: {\n height: 0,\n top: logoPosition,\n width: size\n },\n width: \"full\"\n },\n /* @__PURE__ */ React51.createElement(\n AsyncImage,\n {\n background: logoBackground,\n borderColor: { custom: \"rgba(0, 0, 0, 0.06)\" },\n borderRadius: \"13\",\n height: logoSize,\n src: logoUrl,\n width: logoSize\n }\n )\n ),\n /* @__PURE__ */ React51.createElement(\"svg\", { height: size, style: { all: \"revert\" }, width: size }, /* @__PURE__ */ React51.createElement(\"title\", null, \"QR Code\"), /* @__PURE__ */ React51.createElement(\"defs\", null, /* @__PURE__ */ React51.createElement(\"clipPath\", { id: \"clip-wrapper\" }, /* @__PURE__ */ React51.createElement(\"rect\", { height: logoWrapperSize, width: logoWrapperSize })), /* @__PURE__ */ React51.createElement(\"clipPath\", { id: \"clip-logo\" }, /* @__PURE__ */ React51.createElement(\"rect\", { height: logoSize, width: logoSize }))), /* @__PURE__ */ React51.createElement(\"rect\", { fill: \"transparent\", height: size, width: size }), dots)\n )\n );\n}\n\n// src/components/ConnectOptions/ConnectDetails.tsx\nvar getBrowserSrc = async () => {\n const browser = getBrowser();\n switch (browser) {\n case \"Arc\" /* Arc */:\n return (await import(\"./Arc-R3PUWRPJ.js\")).default;\n case \"Brave\" /* Brave */:\n return (await import(\"./Brave-24BM36UM.js\")).default;\n case \"Chrome\" /* Chrome */:\n return (await import(\"./Chrome-TLI42HDP.js\")).default;\n case \"Edge\" /* Edge */:\n return (await import(\"./Edge-AZ34LAFM.js\")).default;\n case \"Firefox\" /* Firefox */:\n return (await import(\"./Firefox-ZDK7RHKK.js\")).default;\n case \"Opera\" /* Opera */:\n return (await import(\"./Opera-BKMCKUXC.js\")).default;\n case \"Safari\" /* Safari */:\n return (await import(\"./Safari-PXQIVS6N.js\")).default;\n default:\n return (await import(\"./Browser-4R4QKTV2.js\")).default;\n }\n};\nvar preloadBrowserIcon = () => loadImages(getBrowserSrc);\nvar getPlatformSrc = async () => {\n const platform = getPlatform();\n switch (platform) {\n case \"Windows\" /* Windows */:\n return (await import(\"./Windows-GTAT3OTE.js\")).default;\n case \"macOS\" /* MacOS */:\n return (await import(\"./Macos-5QL4JBJE.js\")).default;\n case \"Linux\" /* Linux */:\n return (await import(\"./Linux-VYP66PDO.js\")).default;\n default:\n return (await import(\"./Linux-VYP66PDO.js\")).default;\n }\n};\nvar preloadPlatformIcon = () => loadImages(getPlatformSrc);\nfunction GetDetail({\n getWalletDownload,\n compactModeEnabled\n}) {\n const wallets = useWalletConnectors().filter(\n (wallet) => wallet.isRainbowKitConnector\n );\n const shownWallets = wallets.splice(0, 5);\n const { i18n: i18n2 } = useContext15(I18nContext);\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"full\",\n marginTop: \"18\",\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"28\",\n height: \"full\",\n width: \"full\"\n },\n shownWallets?.filter(\n (wallet) => wallet.extensionDownloadUrl || wallet.desktopDownloadUrl || wallet.qrCode && wallet.downloadUrls?.qrCode\n ).map((wallet) => {\n const { downloadUrls, iconBackground, iconUrl, id, name, qrCode } = wallet;\n const hasMobileCompanionApp = downloadUrls?.qrCode && qrCode;\n const hasExtension = !!wallet.extensionDownloadUrl;\n const hasMobileAndExtension = downloadUrls?.qrCode && hasExtension;\n const hasMobileAndDesktop = downloadUrls?.qrCode && !!wallet.desktopDownloadUrl;\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"16\",\n justifyContent: \"space-between\",\n key: wallet.id,\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"16\"\n },\n /* @__PURE__ */ React52.createElement(\n AsyncImage,\n {\n background: iconBackground,\n borderColor: \"actionButtonBorder\",\n borderRadius: \"10\",\n height: \"48\",\n src: iconUrl,\n width: \"48\"\n }\n ),\n /* @__PURE__ */ React52.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"2\" }, /* @__PURE__ */ React52.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, name), /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, hasMobileAndExtension ? i18n2.t(\"get.mobile_and_extension.description\") : hasMobileAndDesktop ? i18n2.t(\"get.mobile_and_desktop.description\") : hasMobileCompanionApp ? i18n2.t(\"get.mobile.description\") : hasExtension ? i18n2.t(\"get.extension.description\") : null))\n ),\n /* @__PURE__ */ React52.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n label: i18n2.t(\"get.action.label\"),\n onClick: () => getWalletDownload(id),\n type: \"secondary\"\n }\n ))\n );\n })\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n borderRadius: \"10\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8\",\n justifyContent: \"space-between\",\n marginBottom: \"4\",\n paddingY: \"8\",\n style: { maxWidth: 275, textAlign: \"center\" }\n },\n /* @__PURE__ */ React52.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, i18n2.t(\"get.looking_for.title\")),\n /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, compactModeEnabled ? i18n2.t(\"get.looking_for.desktop.compact_description\") : i18n2.t(\"get.looking_for.desktop.wide_description\"))\n )\n );\n}\nvar LOGO_SIZE = \"44\";\nfunction ConnectDetail({\n changeWalletStep,\n compactModeEnabled,\n connectionError,\n onClose,\n qrCodeUri,\n reconnect,\n wallet\n}) {\n const {\n downloadUrls,\n iconBackground,\n iconUrl,\n name,\n qrCode,\n ready,\n showWalletConnectModal,\n getDesktopUri\n } = wallet;\n const isDesktopDeepLinkAvailable = !!getDesktopUri;\n const safari = isSafari();\n const { i18n: i18n2 } = useContext15(I18nContext);\n const hasExtension = !!wallet.extensionDownloadUrl;\n const hasQrCodeAndExtension = downloadUrls?.qrCode && hasExtension;\n const hasQrCodeAndDesktop = downloadUrls?.qrCode && !!wallet.desktopDownloadUrl;\n const hasQrCode = qrCode && qrCodeUri;\n const onDesktopUri = async () => {\n const uri = await getDesktopUri?.();\n window.open(uri, safari ? \"_blank\" : \"_self\");\n };\n const secondaryAction = showWalletConnectModal ? {\n description: !compactModeEnabled ? i18n2.t(\"connect.walletconnect.description.full\") : i18n2.t(\"connect.walletconnect.description.compact\"),\n label: i18n2.t(\"connect.walletconnect.open.label\"),\n onClick: () => {\n onClose();\n showWalletConnectModal();\n }\n } : hasQrCode ? {\n description: i18n2.t(\"connect.secondary_action.get.description\", {\n wallet: name\n }),\n label: i18n2.t(\"connect.secondary_action.get.label\"),\n onClick: () => changeWalletStep(\n hasQrCodeAndExtension || hasQrCodeAndDesktop ? \"DOWNLOAD_OPTIONS\" /* DownloadOptions */ : \"DOWNLOAD\" /* Download */\n )\n } : null;\n const { width: windowWidth } = useWindowSize();\n const smallWindow = windowWidth && windowWidth < 768;\n useEffect14(() => {\n preloadBrowserIcon();\n preloadPlatformIcon();\n }, []);\n return /* @__PURE__ */ React52.createElement(Box, { display: \"flex\", flexDirection: \"column\", height: \"full\", width: \"full\" }, hasQrCode ? /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n height: \"full\",\n justifyContent: \"center\"\n },\n /* @__PURE__ */ React52.createElement(\n QRCode,\n {\n logoBackground: iconBackground,\n logoSize: compactModeEnabled ? 60 : 72,\n logoUrl: iconUrl,\n size: compactModeEnabled ? 318 : smallWindow ? Math.max(280, Math.min(windowWidth - 308, 382)) : 382,\n uri: qrCodeUri\n }\n )\n ) : /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n style: { flexGrow: 1 }\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8\"\n },\n /* @__PURE__ */ React52.createElement(Box, { borderRadius: \"10\", height: LOGO_SIZE, overflow: \"hidden\" }, /* @__PURE__ */ React52.createElement(\n AsyncImage,\n {\n useAsImage: !wallet.isRainbowKitConnector,\n height: LOGO_SIZE,\n src: iconUrl,\n width: LOGO_SIZE\n }\n )),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4\",\n paddingX: \"32\",\n style: { textAlign: \"center\" }\n },\n /* @__PURE__ */ React52.createElement(Text, { color: \"modalText\", size: \"18\", weight: \"bold\" }, ready ? i18n2.t(\"connect.status.opening\", {\n wallet: name\n }) : hasExtension ? i18n2.t(\"connect.status.not_installed\", {\n wallet: name\n }) : i18n2.t(\"connect.status.not_available\", {\n wallet: name\n })),\n !ready && hasExtension ? /* @__PURE__ */ React52.createElement(Box, { paddingTop: \"20\" }, /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n href: wallet.extensionDownloadUrl,\n label: i18n2.t(\"connect.secondary_action.install.label\"),\n type: \"secondary\"\n }\n )) : null,\n ready && !hasQrCode && /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\"\n },\n /* @__PURE__ */ React52.createElement(\n Text,\n {\n color: \"modalTextSecondary\",\n size: \"14\",\n textAlign: \"center\",\n weight: \"medium\"\n },\n i18n2.t(\"connect.status.confirm\")\n )\n ), /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n color: \"modalText\",\n display: \"flex\",\n flexDirection: \"row\",\n height: \"32\",\n marginTop: \"8\"\n },\n connectionError ? /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n label: i18n2.t(\"connect.secondary_action.retry.label\"),\n onClick: async () => {\n if (isDesktopDeepLinkAvailable)\n onDesktopUri();\n reconnect(wallet);\n }\n }\n ) : /* @__PURE__ */ React52.createElement(Box, { color: \"modalTextSecondary\" }, /* @__PURE__ */ React52.createElement(SpinnerIcon, null))\n ))\n )\n )\n ), /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n borderRadius: \"10\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"8\",\n height: \"28\",\n justifyContent: \"space-between\",\n marginTop: \"12\"\n },\n ready && secondaryAction && /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, secondaryAction.description), /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n label: secondaryAction.label,\n onClick: secondaryAction.onClick,\n type: \"secondary\"\n }\n ))\n ));\n}\nvar DownloadOptionsBox = ({\n actionLabel,\n description,\n iconAccent,\n iconBackground,\n iconUrl,\n isCompact,\n onAction,\n title,\n url,\n variant\n}) => {\n const isBrowserCard = variant === \"browser\";\n const gradientRgbas = !isBrowserCard && iconAccent && getGradientRGBAs(iconAccent);\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n borderRadius: \"13\",\n display: \"flex\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n paddingX: isCompact ? \"18\" : \"44\",\n position: \"relative\",\n style: { flex: 1, isolation: \"isolate\" },\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n borderColor: \"actionButtonBorder\",\n borderRadius: \"13\",\n borderStyle: \"solid\",\n borderWidth: \"1\",\n style: {\n bottom: \"0\",\n left: \"0\",\n position: \"absolute\",\n right: \"0\",\n top: \"0\",\n zIndex: 1\n }\n }\n ),\n isBrowserCard && /* @__PURE__ */ React52.createElement(\n Box,\n {\n background: \"downloadTopCardBackground\",\n height: \"full\",\n position: \"absolute\",\n style: {\n zIndex: 0\n },\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n style: {\n bottom: \"0\",\n filter: \"blur(20px)\",\n left: \"0\",\n position: \"absolute\",\n right: \"0\",\n top: \"0\",\n transform: \"translate3d(0, 0, 0)\"\n }\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n style: {\n filter: \"blur(100px)\",\n marginLeft: -27,\n marginTop: -20,\n opacity: 0.6,\n transform: \"translate3d(0, 0, 0)\"\n }\n },\n /* @__PURE__ */ React52.createElement(\n AsyncImage,\n {\n borderRadius: \"full\",\n height: \"200\",\n src: iconUrl,\n width: \"200\"\n }\n )\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n style: {\n filter: \"blur(100px)\",\n marginRight: 0,\n marginTop: 105,\n opacity: 0.6,\n overflow: \"auto\",\n transform: \"translate3d(0, 0, 0)\"\n }\n },\n /* @__PURE__ */ React52.createElement(\n AsyncImage,\n {\n borderRadius: \"full\",\n height: \"200\",\n src: iconUrl,\n width: \"200\"\n }\n )\n )\n )\n ),\n !isBrowserCard && gradientRgbas && /* @__PURE__ */ React52.createElement(\n Box,\n {\n background: \"downloadBottomCardBackground\",\n style: {\n bottom: \"0\",\n left: \"0\",\n position: \"absolute\",\n right: \"0\",\n top: \"0\"\n }\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n position: \"absolute\",\n style: {\n background: `radial-gradient(50% 50% at 50% 50%, ${gradientRgbas[0]} 0%, ${gradientRgbas[1]} 25%, rgba(0,0,0,0) 100%)`,\n height: 564,\n left: -215,\n top: -197,\n transform: \"translate3d(0, 0, 0)\",\n width: 564\n }\n }\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n position: \"absolute\",\n style: {\n background: `radial-gradient(50% 50% at 50% 50%, ${gradientRgbas[2]} 0%, rgba(0, 0, 0, 0) 100%)`,\n height: 564,\n left: -1,\n top: -76,\n transform: \"translate3d(0, 0, 0)\",\n width: 564\n }\n }\n )\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"flex-start\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"24\",\n height: \"max\",\n justifyContent: \"center\",\n style: { zIndex: 1 }\n },\n /* @__PURE__ */ React52.createElement(Box, null, /* @__PURE__ */ React52.createElement(\n AsyncImage,\n {\n height: \"60\",\n src: iconUrl,\n width: \"60\",\n ...iconBackground ? {\n background: iconBackground,\n borderColor: \"generalBorder\",\n borderRadius: \"10\"\n } : null\n }\n )),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4\",\n style: { flex: 1 },\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, title),\n /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, description),\n /* @__PURE__ */ React52.createElement(Box, { marginTop: \"14\", width: \"max\" }, /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n href: url,\n label: actionLabel,\n onClick: onAction,\n size: \"medium\"\n }\n ))\n )\n )\n );\n};\nfunction DownloadOptionsDetail({\n changeWalletStep,\n wallet\n}) {\n const browser = getBrowser();\n const platform = getPlatform();\n const modalSize = useContext15(ModalSizeContext);\n const isCompact = modalSize === \"compact\";\n const {\n desktop,\n desktopDownloadUrl,\n extension,\n extensionDownloadUrl,\n mobileDownloadUrl\n } = wallet;\n const { i18n: i18n2 } = useContext15(I18nContext);\n useEffect14(() => {\n preloadCreateIcon();\n preloadScanIcon();\n preloadRefreshIcon();\n preloadConnectIcon();\n }, []);\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"24\",\n height: \"full\",\n marginBottom: \"8\",\n marginTop: \"4\",\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8\",\n height: \"full\",\n justifyContent: \"center\",\n width: \"full\"\n },\n extensionDownloadUrl && /* @__PURE__ */ React52.createElement(\n DownloadOptionsBox,\n {\n actionLabel: i18n2.t(\"get_options.extension.download.label\", {\n browser\n }),\n description: i18n2.t(\"get_options.extension.description\"),\n iconUrl: getBrowserSrc,\n isCompact,\n onAction: () => changeWalletStep(\n extension?.instructions ? \"INSTRUCTIONS_EXTENSION\" /* InstructionsExtension */ : \"CONNECT\" /* Connect */\n ),\n title: i18n2.t(\"get_options.extension.title\", {\n wallet: wallet.name,\n browser\n }),\n url: extensionDownloadUrl,\n variant: \"browser\"\n }\n ),\n desktopDownloadUrl && /* @__PURE__ */ React52.createElement(\n DownloadOptionsBox,\n {\n actionLabel: i18n2.t(\"get_options.desktop.download.label\", {\n platform\n }),\n description: i18n2.t(\"get_options.desktop.description\"),\n iconUrl: getPlatformSrc,\n isCompact,\n onAction: () => changeWalletStep(\n desktop?.instructions ? \"INSTRUCTIONS_DESKTOP\" /* InstructionsDesktop */ : \"CONNECT\" /* Connect */\n ),\n title: i18n2.t(\"get_options.desktop.title\", {\n wallet: wallet.name,\n platform\n }),\n url: desktopDownloadUrl,\n variant: \"desktop\"\n }\n ),\n mobileDownloadUrl && /* @__PURE__ */ React52.createElement(\n DownloadOptionsBox,\n {\n actionLabel: i18n2.t(\"get_options.mobile.download.label\", {\n wallet: wallet.name\n }),\n description: i18n2.t(\"get_options.mobile.description\"),\n iconAccent: wallet.iconAccent,\n iconBackground: wallet.iconBackground,\n iconUrl: wallet.iconUrl,\n isCompact,\n onAction: () => {\n changeWalletStep(\"DOWNLOAD\" /* Download */);\n },\n title: i18n2.t(\"get_options.mobile.title\", { wallet: wallet.name }),\n variant: \"app\"\n }\n )\n )\n );\n}\nfunction DownloadDetail({\n changeWalletStep,\n wallet\n}) {\n const { downloadUrls, qrCode } = wallet;\n const { i18n: i18n2 } = useContext15(I18nContext);\n useEffect14(() => {\n preloadCreateIcon();\n preloadScanIcon();\n }, []);\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"24\",\n height: \"full\",\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(Box, { style: { maxWidth: 220, textAlign: \"center\" } }, /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"semibold\" }, i18n2.t(\"get_mobile.description\"))),\n /* @__PURE__ */ React52.createElement(Box, { height: \"full\" }, downloadUrls?.qrCode ? /* @__PURE__ */ React52.createElement(QRCode, { logoSize: 0, size: 268, uri: downloadUrls.qrCode }) : null),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n borderRadius: \"10\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"8\",\n height: \"34\",\n justifyContent: \"space-between\",\n marginBottom: \"12\",\n paddingY: \"8\"\n },\n /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n label: i18n2.t(\"get_mobile.continue.label\"),\n onClick: () => changeWalletStep(\n qrCode?.instructions ? \"INSTRUCTIONS_MOBILE\" /* InstructionsMobile */ : \"CONNECT\" /* Connect */\n )\n }\n )\n )\n );\n}\nvar stepIcons = {\n connect: () => /* @__PURE__ */ React52.createElement(ConnectIcon, null),\n create: () => /* @__PURE__ */ React52.createElement(CreateIcon, null),\n install: (wallet) => /* @__PURE__ */ React52.createElement(\n AsyncImage,\n {\n background: wallet.iconBackground,\n borderColor: \"generalBorder\",\n borderRadius: \"10\",\n height: \"48\",\n src: wallet.iconUrl,\n width: \"48\"\n }\n ),\n refresh: () => /* @__PURE__ */ React52.createElement(RefreshIcon, null),\n scan: () => /* @__PURE__ */ React52.createElement(ScanIcon, null)\n};\nfunction InstructionMobileDetail({\n connectWallet,\n wallet\n}) {\n const { i18n: i18n2 } = useContext15(I18nContext);\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"full\",\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"28\",\n height: \"full\",\n justifyContent: \"center\",\n paddingY: \"32\",\n style: { maxWidth: 320 }\n },\n wallet?.qrCode?.instructions?.steps.map((d, idx) => /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"16\",\n key: idx\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n borderRadius: \"10\",\n height: \"48\",\n minWidth: \"48\",\n overflow: \"hidden\",\n position: \"relative\",\n width: \"48\"\n },\n stepIcons[d.step]?.(wallet)\n ),\n /* @__PURE__ */ React52.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, /* @__PURE__ */ React52.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, i18n2.t(d.title, void 0, {\n rawKeyIfTranslationMissing: true\n })), /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, i18n2.t(d.description, void 0, {\n rawKeyIfTranslationMissing: true\n })))\n ))\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12\",\n justifyContent: \"center\",\n marginBottom: \"16\"\n },\n /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n label: i18n2.t(\"get_instructions.mobile.connect.label\"),\n onClick: () => connectWallet(wallet)\n }\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n as: \"a\",\n className: touchableStyles({ active: \"shrink\", hover: \"grow\" }),\n display: \"block\",\n href: wallet?.qrCode?.instructions?.learnMoreUrl,\n paddingX: \"12\",\n paddingY: \"4\",\n rel: \"noreferrer\",\n style: { willChange: \"transform\" },\n target: \"_blank\",\n transition: \"default\"\n },\n /* @__PURE__ */ React52.createElement(Text, { color: \"accentColor\", size: \"14\", weight: \"bold\" }, i18n2.t(\"get_instructions.mobile.learn_more.label\"))\n )\n )\n );\n}\nfunction InstructionExtensionDetail({\n wallet\n}) {\n const { i18n: i18n2 } = useContext15(I18nContext);\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"full\",\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"28\",\n height: \"full\",\n justifyContent: \"center\",\n paddingY: \"32\",\n style: { maxWidth: 320 }\n },\n wallet?.extension?.instructions?.steps.map((d, idx) => /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"16\",\n key: idx\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n borderRadius: \"10\",\n height: \"48\",\n minWidth: \"48\",\n overflow: \"hidden\",\n position: \"relative\",\n width: \"48\"\n },\n stepIcons[d.step]?.(wallet)\n ),\n /* @__PURE__ */ React52.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, /* @__PURE__ */ React52.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, i18n2.t(d.title, void 0, {\n rawKeyIfTranslationMissing: true\n })), /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, i18n2.t(d.description, void 0, {\n rawKeyIfTranslationMissing: true\n })))\n ))\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12\",\n justifyContent: \"center\",\n marginBottom: \"16\"\n },\n /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n label: i18n2.t(\"get_instructions.extension.refresh.label\"),\n onClick: window.location.reload.bind(window.location)\n }\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n as: \"a\",\n className: touchableStyles({ active: \"shrink\", hover: \"grow\" }),\n display: \"block\",\n href: wallet?.extension?.instructions?.learnMoreUrl,\n paddingX: \"12\",\n paddingY: \"4\",\n rel: \"noreferrer\",\n style: { willChange: \"transform\" },\n target: \"_blank\",\n transition: \"default\"\n },\n /* @__PURE__ */ React52.createElement(Text, { color: \"accentColor\", size: \"14\", weight: \"bold\" }, i18n2.t(\"get_instructions.extension.learn_more.label\"))\n )\n )\n );\n}\nfunction InstructionDesktopDetail({\n connectWallet,\n wallet\n}) {\n const { i18n: i18n2 } = useContext15(I18nContext);\n return /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"full\",\n width: \"full\"\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"28\",\n height: \"full\",\n justifyContent: \"center\",\n paddingY: \"32\",\n style: { maxWidth: 320 }\n },\n wallet?.desktop?.instructions?.steps.map((d, idx) => /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"16\",\n key: idx\n },\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n borderRadius: \"10\",\n height: \"48\",\n minWidth: \"48\",\n overflow: \"hidden\",\n position: \"relative\",\n width: \"48\"\n },\n stepIcons[d.step]?.(wallet)\n ),\n /* @__PURE__ */ React52.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, /* @__PURE__ */ React52.createElement(Text, { color: \"modalText\", size: \"14\", weight: \"bold\" }, i18n2.t(d.title, void 0, {\n rawKeyIfTranslationMissing: true\n })), /* @__PURE__ */ React52.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, i18n2.t(d.description, void 0, {\n rawKeyIfTranslationMissing: true\n })))\n ))\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12\",\n justifyContent: \"center\",\n marginBottom: \"16\"\n },\n /* @__PURE__ */ React52.createElement(\n ActionButton,\n {\n label: i18n2.t(\"get_instructions.desktop.connect.label\"),\n onClick: () => connectWallet(wallet)\n }\n ),\n /* @__PURE__ */ React52.createElement(\n Box,\n {\n as: \"a\",\n className: touchableStyles({ active: \"shrink\", hover: \"grow\" }),\n display: \"block\",\n href: wallet?.desktop?.instructions?.learnMoreUrl,\n paddingX: \"12\",\n paddingY: \"4\",\n rel: \"noreferrer\",\n style: { willChange: \"transform\" },\n target: \"_blank\",\n transition: \"default\"\n },\n /* @__PURE__ */ React52.createElement(Text, { color: \"accentColor\", size: \"14\", weight: \"bold\" }, i18n2.t(\"get_instructions.desktop.learn_more.label\"))\n )\n )\n );\n}\n\n// src/components/ConnectOptions/DesktopOptions.tsx\nfunction DesktopOptions({ onClose }) {\n const titleId = \"rk_connect_title\";\n const [selectedOptionId, setSelectedOptionId] = useState12();\n const [selectedWallet, setSelectedWallet] = useState12();\n const [qrCodeUri, setQrCodeUri] = useState12();\n const hasQrCode = !!selectedWallet?.qrCode && qrCodeUri;\n const [connectionError, setConnectionError] = useState12(false);\n const modalSize = useContext16(ModalSizeContext);\n const compactModeEnabled = modalSize === ModalSizeOptions.COMPACT;\n const { disclaimer: Disclaimer } = useContext16(AppContext);\n const { i18n: i18n2 } = useContext16(I18nContext);\n const safari = isSafari();\n const initialized = useRef4(false);\n const { connector } = useContext16(WalletButtonContext);\n const mergeEIP6963WithRkConnectors = !connector;\n const wallets = useWalletConnectors(mergeEIP6963WithRkConnectors).filter((wallet) => wallet.ready || !!wallet.extensionDownloadUrl).sort((a, b) => a.groupIndex - b.groupIndex);\n const unfilteredWallets = useWalletConnectors();\n const groupedWallets = groupBy(wallets, (wallet) => wallet.groupName);\n const supportedI18nGroupNames = [\n \"Recommended\",\n \"Other\",\n \"Popular\",\n \"More\",\n \"Others\",\n \"Installed\"\n ];\n useEffect15(() => {\n if (connector && !initialized.current) {\n changeWalletStep(\"CONNECT\" /* Connect */);\n selectWallet(connector);\n initialized.current = true;\n }\n }, [connector]);\n const connectToWallet = (wallet) => {\n setConnectionError(false);\n if (wallet.ready) {\n wallet?.connect?.()?.catch(() => {\n setConnectionError(true);\n });\n }\n };\n const onDesktopUri = async (wallet) => {\n const sWallet = wallets.find((w) => wallet.id === w.id);\n if (!sWallet?.getDesktopUri)\n return;\n setTimeout(async () => {\n const uri = await sWallet?.getDesktopUri?.();\n if (uri)\n window.open(uri, safari ? \"_blank\" : \"_self\");\n }, 0);\n };\n const onQrCode = async (wallet) => {\n const sWallet = wallets.find((w) => wallet.id === w.id);\n const uri = await sWallet?.getQrCodeUri?.();\n setQrCodeUri(uri);\n setTimeout(\n () => {\n setSelectedWallet(sWallet);\n changeWalletStep(\"CONNECT\" /* Connect */);\n },\n uri ? 0 : 50\n );\n };\n const selectWallet = async (wallet) => {\n addLatestWalletId(wallet.id);\n if (wallet.ready) {\n onQrCode(wallet);\n onDesktopUri(wallet);\n }\n connectToWallet(wallet);\n setSelectedOptionId(wallet.id);\n if (!wallet.ready) {\n setSelectedWallet(wallet);\n changeWalletStep(\n wallet?.extensionDownloadUrl ? \"DOWNLOAD_OPTIONS\" /* DownloadOptions */ : \"CONNECT\" /* Connect */\n );\n }\n };\n const getWalletDownload = (id) => {\n const sWallet = unfilteredWallets.find((w) => id === w.id);\n const isMobile2 = sWallet?.downloadUrls?.qrCode;\n const isDesktop = !!sWallet?.desktopDownloadUrl;\n const isExtension = !!sWallet?.extensionDownloadUrl;\n setSelectedWallet(sWallet);\n if (isMobile2 && (isExtension || isDesktop)) {\n changeWalletStep(\"DOWNLOAD_OPTIONS\" /* DownloadOptions */);\n } else if (isMobile2) {\n changeWalletStep(\"DOWNLOAD\" /* Download */);\n } else if (isDesktop) {\n changeWalletStep(\"INSTRUCTIONS_DESKTOP\" /* InstructionsDesktop */);\n } else {\n changeWalletStep(\"INSTRUCTIONS_EXTENSION\" /* InstructionsExtension */);\n }\n };\n const clearSelectedWallet = () => {\n setSelectedOptionId(void 0);\n setSelectedWallet(void 0);\n setQrCodeUri(void 0);\n };\n const changeWalletStep = (newWalletStep, isBack = false) => {\n if (isBack && newWalletStep === \"GET\" /* Get */ && initialWalletStep === \"GET\" /* Get */) {\n clearSelectedWallet();\n } else if (!isBack && newWalletStep === \"GET\" /* Get */) {\n setInitialWalletStep(\"GET\" /* Get */);\n } else if (!isBack && newWalletStep === \"CONNECT\" /* Connect */) {\n setInitialWalletStep(\"CONNECT\" /* Connect */);\n }\n setWalletStep(newWalletStep);\n };\n const [initialWalletStep, setInitialWalletStep] = useState12(\n \"NONE\" /* None */\n );\n const [walletStep, setWalletStep] = useState12(\"NONE\" /* None */);\n let walletContent = null;\n let headerLabel = null;\n let headerBackButtonLink = null;\n let headerBackButtonCallback;\n useEffect15(() => {\n setConnectionError(false);\n }, [walletStep, selectedWallet]);\n const hasExtension = !!selectedWallet?.extensionDownloadUrl;\n const hasExtensionAndMobile = !!(hasExtension && selectedWallet?.mobileDownloadUrl);\n switch (walletStep) {\n case \"NONE\" /* None */:\n walletContent = /* @__PURE__ */ React53.createElement(ConnectModalIntro, { getWallet: () => changeWalletStep(\"GET\" /* Get */) });\n break;\n case \"LEARN_COMPACT\" /* LearnCompact */:\n walletContent = /* @__PURE__ */ React53.createElement(\n ConnectModalIntro,\n {\n compactModeEnabled,\n getWallet: () => changeWalletStep(\"GET\" /* Get */)\n }\n );\n headerLabel = i18n2.t(\"intro.title\");\n headerBackButtonLink = \"NONE\" /* None */;\n break;\n case \"GET\" /* Get */:\n walletContent = /* @__PURE__ */ React53.createElement(\n GetDetail,\n {\n getWalletDownload,\n compactModeEnabled\n }\n );\n headerLabel = i18n2.t(\"get.title\");\n headerBackButtonLink = compactModeEnabled ? \"LEARN_COMPACT\" /* LearnCompact */ : \"NONE\" /* None */;\n break;\n case \"CONNECT\" /* Connect */:\n walletContent = selectedWallet && /* @__PURE__ */ React53.createElement(\n ConnectDetail,\n {\n changeWalletStep,\n compactModeEnabled,\n connectionError,\n onClose,\n qrCodeUri,\n reconnect: connectToWallet,\n wallet: selectedWallet\n }\n );\n headerLabel = hasQrCode && (selectedWallet.name === \"WalletConnect\" ? i18n2.t(\"connect_scan.fallback_title\") : i18n2.t(\"connect_scan.title\", {\n wallet: selectedWallet.name\n }));\n headerBackButtonLink = compactModeEnabled ? connector ? null : \"NONE\" /* None */ : null;\n headerBackButtonCallback = compactModeEnabled ? !connector ? clearSelectedWallet : () => {\n } : () => {\n };\n break;\n case \"DOWNLOAD_OPTIONS\" /* DownloadOptions */:\n walletContent = selectedWallet && /* @__PURE__ */ React53.createElement(\n DownloadOptionsDetail,\n {\n changeWalletStep,\n wallet: selectedWallet\n }\n );\n headerLabel = selectedWallet && i18n2.t(\"get_options.short_title\", { wallet: selectedWallet.name });\n headerBackButtonLink = connector ? \"CONNECT\" /* Connect */ : compactModeEnabled ? \"NONE\" /* None */ : initialWalletStep;\n break;\n case \"DOWNLOAD\" /* Download */:\n walletContent = selectedWallet && /* @__PURE__ */ React53.createElement(\n DownloadDetail,\n {\n changeWalletStep,\n wallet: selectedWallet\n }\n );\n headerLabel = selectedWallet && i18n2.t(\"get_mobile.title\", { wallet: selectedWallet.name });\n headerBackButtonLink = hasExtensionAndMobile ? \"DOWNLOAD_OPTIONS\" /* DownloadOptions */ : initialWalletStep;\n break;\n case \"INSTRUCTIONS_MOBILE\" /* InstructionsMobile */:\n walletContent = selectedWallet && /* @__PURE__ */ React53.createElement(\n InstructionMobileDetail,\n {\n connectWallet: selectWallet,\n wallet: selectedWallet\n }\n );\n headerLabel = selectedWallet && i18n2.t(\"get_options.title\", {\n wallet: compactModeEnabled ? selectedWallet.shortName || selectedWallet.name : selectedWallet.name\n });\n headerBackButtonLink = \"DOWNLOAD\" /* Download */;\n break;\n case \"INSTRUCTIONS_EXTENSION\" /* InstructionsExtension */:\n walletContent = selectedWallet && /* @__PURE__ */ React53.createElement(InstructionExtensionDetail, { wallet: selectedWallet });\n headerLabel = selectedWallet && i18n2.t(\"get_options.title\", {\n wallet: compactModeEnabled ? selectedWallet.shortName || selectedWallet.name : selectedWallet.name\n });\n headerBackButtonLink = \"DOWNLOAD_OPTIONS\" /* DownloadOptions */;\n break;\n case \"INSTRUCTIONS_DESKTOP\" /* InstructionsDesktop */:\n walletContent = selectedWallet && /* @__PURE__ */ React53.createElement(\n InstructionDesktopDetail,\n {\n connectWallet: selectWallet,\n wallet: selectedWallet\n }\n );\n headerLabel = selectedWallet && i18n2.t(\"get_options.title\", {\n wallet: compactModeEnabled ? selectedWallet.shortName || selectedWallet.name : selectedWallet.name\n });\n headerBackButtonLink = \"DOWNLOAD_OPTIONS\" /* DownloadOptions */;\n break;\n default:\n break;\n }\n return /* @__PURE__ */ React53.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"row\",\n style: { maxHeight: compactModeEnabled ? 468 : 504 }\n },\n (compactModeEnabled ? walletStep === \"NONE\" /* None */ : true) && /* @__PURE__ */ React53.createElement(\n Box,\n {\n className: compactModeEnabled ? sidebarCompactMode : sidebar,\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: \"16\"\n },\n /* @__PURE__ */ React53.createElement(Box, { display: \"flex\", justifyContent: \"space-between\" }, compactModeEnabled && Disclaimer && /* @__PURE__ */ React53.createElement(Box, { marginLeft: \"16\", width: \"28\" }, /* @__PURE__ */ React53.createElement(\n InfoButton,\n {\n onClick: () => changeWalletStep(\"LEARN_COMPACT\" /* LearnCompact */)\n }\n )), compactModeEnabled && !Disclaimer && /* @__PURE__ */ React53.createElement(Box, { marginLeft: \"16\", width: \"28\" }), /* @__PURE__ */ React53.createElement(\n Box,\n {\n marginLeft: compactModeEnabled ? \"0\" : \"6\",\n paddingBottom: \"8\",\n paddingTop: \"2\",\n paddingX: \"18\"\n },\n /* @__PURE__ */ React53.createElement(\n Text,\n {\n as: \"h1\",\n color: \"modalText\",\n id: titleId,\n size: \"18\",\n weight: \"heavy\",\n testId: \"connect-header-label\"\n },\n i18n2.t(\"connect.title\")\n )\n ), compactModeEnabled && /* @__PURE__ */ React53.createElement(Box, { marginRight: \"16\" }, /* @__PURE__ */ React53.createElement(CloseButton, { onClose }))),\n /* @__PURE__ */ React53.createElement(Box, { className: ScrollClassName, paddingBottom: \"18\" }, Object.entries(groupedWallets).map(\n ([groupName, wallets2], index) => wallets2.length > 0 && /* @__PURE__ */ React53.createElement(Fragment2, { key: index }, groupName ? /* @__PURE__ */ React53.createElement(Box, { marginBottom: \"8\", marginTop: \"16\", marginX: \"6\" }, /* @__PURE__ */ React53.createElement(\n Text,\n {\n color: groupName === \"Installed\" ? \"accentColor\" : \"modalTextSecondary\",\n size: \"14\",\n weight: \"bold\"\n },\n supportedI18nGroupNames.includes(groupName) ? i18n2.t(\n `connector_group.${groupName.toLowerCase()}`\n ) : groupName\n )) : null, /* @__PURE__ */ React53.createElement(Box, { display: \"flex\", flexDirection: \"column\", gap: \"4\" }, wallets2.map((wallet) => {\n return /* @__PURE__ */ React53.createElement(\n ModalSelection,\n {\n currentlySelected: wallet.id === selectedOptionId,\n iconBackground: wallet.iconBackground,\n iconUrl: wallet.iconUrl,\n key: wallet.id,\n name: wallet.name,\n onClick: () => selectWallet(wallet),\n ready: wallet.ready,\n recent: wallet.recent,\n testId: `wallet-option-${wallet.id}`,\n isRainbowKitConnector: wallet.isRainbowKitConnector\n }\n );\n })))\n )),\n compactModeEnabled && /* @__PURE__ */ React53.createElement(React53.Fragment, null, /* @__PURE__ */ React53.createElement(Box, { background: \"generalBorder\", height: \"1\", marginTop: \"-1\" }), Disclaimer ? /* @__PURE__ */ React53.createElement(Box, { paddingX: \"24\", paddingY: \"16\", textAlign: \"center\" }, /* @__PURE__ */ React53.createElement(Disclaimer, { Link: DisclaimerLink, Text: DisclaimerText })) : /* @__PURE__ */ React53.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"space-between\",\n paddingX: \"24\",\n paddingY: \"16\"\n },\n /* @__PURE__ */ React53.createElement(Box, { paddingY: \"4\" }, /* @__PURE__ */ React53.createElement(Text, { color: \"modalTextSecondary\", size: \"14\", weight: \"medium\" }, i18n2.t(\"connect.new_to_ethereum.description\"))),\n /* @__PURE__ */ React53.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"4\",\n justifyContent: \"center\"\n },\n /* @__PURE__ */ React53.createElement(\n Box,\n {\n className: touchableStyles({\n active: \"shrink\",\n hover: \"grow\"\n }),\n cursor: \"pointer\",\n onClick: () => changeWalletStep(\"LEARN_COMPACT\" /* LearnCompact */),\n paddingY: \"4\",\n style: { willChange: \"transform\" },\n transition: \"default\"\n },\n /* @__PURE__ */ React53.createElement(Text, { color: \"accentColor\", size: \"14\", weight: \"bold\" }, i18n2.t(\"connect.new_to_ethereum.learn_more.label\"))\n )\n )\n ))\n ),\n (compactModeEnabled ? walletStep !== \"NONE\" /* None */ : true) && /* @__PURE__ */ React53.createElement(React53.Fragment, null, !compactModeEnabled && /* @__PURE__ */ React53.createElement(Box, { background: \"generalBorder\", minWidth: \"1\", width: \"1\" }), /* @__PURE__ */ React53.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n margin: \"16\",\n style: { flexGrow: 1 }\n },\n /* @__PURE__ */ React53.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"12\"\n },\n /* @__PURE__ */ React53.createElement(Box, { width: \"28\" }, headerBackButtonLink && /* @__PURE__ */ React53.createElement(\n Box,\n {\n as: \"button\",\n className: touchableStyles({\n active: \"shrinkSm\",\n hover: \"growLg\"\n }),\n color: \"accentColor\",\n onClick: () => {\n headerBackButtonLink && changeWalletStep(headerBackButtonLink, true);\n headerBackButtonCallback?.();\n },\n paddingX: \"8\",\n paddingY: \"4\",\n style: {\n boxSizing: \"content-box\",\n height: 17,\n willChange: \"transform\"\n },\n transition: \"default\",\n type: \"button\"\n },\n /* @__PURE__ */ React53.createElement(BackIcon, null)\n )),\n /* @__PURE__ */ React53.createElement(\n Box,\n {\n display: \"flex\",\n justifyContent: \"center\",\n style: { flexGrow: 1 }\n },\n headerLabel && /* @__PURE__ */ React53.createElement(\n Text,\n {\n color: \"modalText\",\n size: \"18\",\n textAlign: \"center\",\n weight: \"heavy\"\n },\n headerLabel\n )\n ),\n /* @__PURE__ */ React53.createElement(CloseButton, { onClose })\n ),\n /* @__PURE__ */ React53.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n style: { minHeight: compactModeEnabled ? 396 : 432 }\n },\n /* @__PURE__ */ React53.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6\",\n height: \"full\",\n justifyContent: \"center\",\n marginX: \"8\"\n },\n walletContent\n )\n )\n ))\n );\n}\n\n// src/components/ConnectOptions/MobileOptions.tsx\nimport React54, {\n useCallback as useCallback9,\n useContext as useContext17,\n useEffect as useEffect16,\n useRef as useRef5,\n useState as useState13\n} from \"react\";\n\n// src/components/ConnectOptions/MobileOptions.css.ts\nvar rotatingBorder = \"_1am14412\";\nvar scroll = \"_1am14410\";\nvar spinner = \"_1am14413\";\n\n// src/components/ConnectOptions/MobileOptions.tsx\nvar LoadingSpinner = ({ wallet }) => {\n const width = 80;\n const height = 80;\n const radiusFactor = 20;\n const perimeter = 2 * (width + height - 4 * radiusFactor);\n return /* @__PURE__ */ React54.createElement(\"svg\", { className: spinner, viewBox: \"0 0 86 86\", width: \"86\", height: \"86\" }, /* @__PURE__ */ React54.createElement(\"title\", null, \"Loading\"), /* @__PURE__ */ React54.createElement(\n \"rect\",\n {\n x: \"3\",\n y: \"3\",\n width,\n height,\n rx: radiusFactor,\n ry: radiusFactor,\n strokeDasharray: `${perimeter / 3} ${2 * perimeter / 3}`,\n strokeDashoffset: perimeter,\n className: rotatingBorder,\n style: {\n // Prop style passing works only in `@vanilla-extract/recipes`.\n // Instead downloading packages we can do this\n // manually without passing props\n stroke: wallet?.iconAccent || \"#0D3887\"\n }\n }\n ));\n};\nfunction WalletButton({\n onClose,\n wallet,\n connecting\n}) {\n const {\n connect,\n iconBackground,\n iconUrl,\n id,\n name,\n getMobileUri,\n ready,\n shortName,\n showWalletConnectModal\n } = wallet;\n const coolModeRef = useCoolMode(iconUrl);\n const initialized = useRef5(false);\n const { i18n: i18n2 } = useContext17(I18nContext);\n const onConnect = useCallback9(async () => {\n const onMobileUri = async () => {\n const mobileUri = await getMobileUri?.();\n if (!mobileUri)\n return;\n if (mobileUri) {\n setWalletConnectDeepLink({ mobileUri, name });\n }\n if (mobileUri.startsWith(\"http\")) {\n const link = document.createElement(\"a\");\n link.href = mobileUri;\n link.target = \"_blank\";\n link.rel = \"noreferrer noopener\";\n link.click();\n } else {\n window.location.href = mobileUri;\n }\n };\n if (id !== \"walletConnect\")\n onMobileUri();\n if (showWalletConnectModal) {\n showWalletConnectModal();\n onClose?.();\n return;\n }\n connect?.();\n }, [connect, getMobileUri, showWalletConnectModal, onClose, name, id]);\n useEffect16(() => {\n if (connecting && !initialized.current) {\n onConnect();\n initialized.current = true;\n }\n }, [connecting, onConnect]);\n return /* @__PURE__ */ React54.createElement(\n Box,\n {\n as: \"button\",\n color: ready ? \"modalText\" : \"modalTextSecondary\",\n disabled: !ready,\n fontFamily: \"body\",\n key: id,\n onClick: onConnect,\n ref: coolModeRef,\n style: { overflow: \"visible\", textAlign: \"center\" },\n testId: `wallet-option-${id}`,\n type: \"button\",\n width: \"full\"\n },\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\"\n },\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingBottom: \"8\",\n paddingTop: \"10\",\n position: \"relative\"\n },\n connecting ? /* @__PURE__ */ React54.createElement(LoadingSpinner, { wallet }) : null,\n /* @__PURE__ */ React54.createElement(\n AsyncImage,\n {\n background: iconBackground,\n borderRadius: \"13\",\n boxShadow: \"walletLogo\",\n height: \"60\",\n src: iconUrl,\n width: \"60\"\n }\n )\n ),\n !connecting ? /* @__PURE__ */ React54.createElement(Box, { display: \"flex\", flexDirection: \"column\", textAlign: \"center\" }, /* @__PURE__ */ React54.createElement(\n Text,\n {\n as: \"h2\",\n color: wallet.ready ? \"modalText\" : \"modalTextSecondary\",\n size: \"13\",\n weight: \"medium\"\n },\n /* @__PURE__ */ React54.createElement(Box, { as: \"span\", position: \"relative\" }, shortName ?? name, !wallet.ready && \" (unsupported)\")\n ), wallet.recent && /* @__PURE__ */ React54.createElement(Text, { color: \"accentColor\", size: \"12\", weight: \"medium\" }, i18n2.t(\"connect.recent\"))) : null\n )\n );\n}\nfunction MobileOptions({ onClose }) {\n const titleId = \"rk_connect_title\";\n const wallets = useWalletConnectors().filter(\n (wallet) => wallet.isRainbowKitConnector\n );\n const { disclaimer: Disclaimer, learnMoreUrl } = useContext17(AppContext);\n let headerLabel = null;\n let walletContent = null;\n let headerBackgroundContrast = false;\n let headerBackButtonLink = null;\n const [walletStep, setWalletStep] = useState13(\n \"CONNECT\" /* Connect */\n );\n const { i18n: i18n2 } = useContext17(I18nContext);\n const ios = isIOS();\n switch (walletStep) {\n case \"CONNECT\" /* Connect */: {\n headerLabel = i18n2.t(\"connect.title\");\n headerBackgroundContrast = true;\n walletContent = /* @__PURE__ */ React54.createElement(Box, null, /* @__PURE__ */ React54.createElement(\n Box,\n {\n background: \"profileForeground\",\n className: scroll,\n display: \"flex\",\n paddingBottom: \"20\",\n paddingTop: \"6\"\n },\n /* @__PURE__ */ React54.createElement(Box, { display: \"flex\", style: { margin: \"0 auto\" } }, wallets.filter((wallet) => wallet.ready).map((wallet) => {\n return /* @__PURE__ */ React54.createElement(Box, { key: wallet.id, paddingX: \"20\" }, /* @__PURE__ */ React54.createElement(Box, { width: \"60\" }, /* @__PURE__ */ React54.createElement(WalletButton, { onClose, wallet })));\n }))\n ), /* @__PURE__ */ React54.createElement(\n Box,\n {\n background: \"generalBorder\",\n height: \"1\",\n marginBottom: \"32\",\n marginTop: \"-1\"\n }\n ), /* @__PURE__ */ React54.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"32\",\n paddingX: \"32\",\n style: { textAlign: \"center\" }\n },\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8\",\n textAlign: \"center\"\n },\n /* @__PURE__ */ React54.createElement(Text, { color: \"modalText\", size: \"16\", weight: \"bold\" }, i18n2.t(\"intro.title\")),\n /* @__PURE__ */ React54.createElement(Text, { color: \"modalTextSecondary\", size: \"16\" }, i18n2.t(\"intro.description\"))\n )\n ), /* @__PURE__ */ React54.createElement(Box, { paddingTop: \"32\", paddingX: \"20\" }, /* @__PURE__ */ React54.createElement(Box, { display: \"flex\", gap: \"14\", justifyContent: \"center\" }, /* @__PURE__ */ React54.createElement(\n ActionButton,\n {\n label: i18n2.t(\"intro.get.label\"),\n onClick: () => setWalletStep(\"GET\" /* Get */),\n size: \"large\",\n type: \"secondary\"\n }\n ), /* @__PURE__ */ React54.createElement(\n ActionButton,\n {\n href: learnMoreUrl,\n label: i18n2.t(\"intro.learn_more.label\"),\n size: \"large\",\n type: \"secondary\"\n }\n ))), Disclaimer && /* @__PURE__ */ React54.createElement(Box, { marginTop: \"28\", marginX: \"32\", textAlign: \"center\" }, /* @__PURE__ */ React54.createElement(Disclaimer, { Link: DisclaimerLink, Text: DisclaimerText })));\n break;\n }\n case \"GET\" /* Get */: {\n headerLabel = i18n2.t(\"get.title\");\n headerBackButtonLink = \"CONNECT\" /* Connect */;\n const mobileWallets = wallets?.filter(\n (wallet) => wallet.downloadUrls?.ios || wallet.downloadUrls?.android || wallet.downloadUrls?.mobile\n )?.splice(0, 3);\n walletContent = /* @__PURE__ */ React54.createElement(Box, null, /* @__PURE__ */ React54.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"full\",\n marginBottom: \"36\",\n marginTop: \"5\",\n paddingTop: \"12\",\n width: \"full\"\n },\n mobileWallets.map((wallet, index) => {\n const { downloadUrls, iconBackground, iconUrl, name } = wallet;\n if (!downloadUrls?.ios && !downloadUrls?.android && !downloadUrls?.mobile) {\n return null;\n }\n return /* @__PURE__ */ React54.createElement(\n Box,\n {\n display: \"flex\",\n gap: \"16\",\n key: wallet.id,\n paddingX: \"20\",\n width: \"full\"\n },\n /* @__PURE__ */ React54.createElement(Box, { style: { minHeight: 48, minWidth: 48 } }, /* @__PURE__ */ React54.createElement(\n AsyncImage,\n {\n background: iconBackground,\n borderColor: \"generalBorder\",\n borderRadius: \"10\",\n height: \"48\",\n src: iconUrl,\n width: \"48\"\n }\n )),\n /* @__PURE__ */ React54.createElement(Box, { display: \"flex\", flexDirection: \"column\", width: \"full\" }, /* @__PURE__ */ React54.createElement(Box, { alignItems: \"center\", display: \"flex\", height: \"48\" }, /* @__PURE__ */ React54.createElement(Box, { width: \"full\" }, /* @__PURE__ */ React54.createElement(Text, { color: \"modalText\", size: \"18\", weight: \"bold\" }, name)), /* @__PURE__ */ React54.createElement(\n ActionButton,\n {\n href: (ios ? downloadUrls?.ios : downloadUrls?.android) || downloadUrls?.mobile,\n label: i18n2.t(\"get.action.label\"),\n size: \"small\",\n type: \"secondary\"\n }\n )), index < mobileWallets.length - 1 && /* @__PURE__ */ React54.createElement(\n Box,\n {\n background: \"generalBorderDim\",\n height: \"1\",\n marginY: \"10\",\n width: \"full\"\n }\n ))\n );\n })\n ), /* @__PURE__ */ React54.createElement(Box, { style: { marginBottom: \"42px\" } }), /* @__PURE__ */ React54.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"36\",\n paddingX: \"36\",\n style: { textAlign: \"center\" }\n },\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12\",\n textAlign: \"center\"\n },\n /* @__PURE__ */ React54.createElement(Text, { color: \"modalText\", size: \"16\", weight: \"bold\" }, i18n2.t(\"get.looking_for.title\")),\n /* @__PURE__ */ React54.createElement(Text, { color: \"modalTextSecondary\", size: \"16\" }, i18n2.t(\"get.looking_for.mobile.description\"))\n )\n ));\n break;\n }\n }\n return /* @__PURE__ */ React54.createElement(Box, { display: \"flex\", flexDirection: \"column\", paddingBottom: \"36\" }, /* @__PURE__ */ React54.createElement(\n Box,\n {\n background: headerBackgroundContrast ? \"profileForeground\" : \"modalBackground\",\n display: \"flex\",\n flexDirection: \"column\",\n paddingBottom: \"4\",\n paddingTop: \"14\"\n },\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n display: \"flex\",\n justifyContent: \"center\",\n paddingBottom: \"6\",\n paddingX: \"20\",\n position: \"relative\"\n },\n headerBackButtonLink && /* @__PURE__ */ React54.createElement(\n Box,\n {\n display: \"flex\",\n position: \"absolute\",\n style: {\n left: 0,\n marginBottom: -20,\n marginTop: -20\n }\n },\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n alignItems: \"center\",\n as: \"button\",\n className: touchableStyles({\n active: \"shrinkSm\",\n hover: \"growLg\"\n }),\n color: \"accentColor\",\n display: \"flex\",\n marginLeft: \"4\",\n marginTop: \"20\",\n onClick: () => setWalletStep(headerBackButtonLink),\n padding: \"16\",\n style: { height: 17, willChange: \"transform\" },\n transition: \"default\",\n type: \"button\"\n },\n /* @__PURE__ */ React54.createElement(BackIcon, null)\n )\n ),\n /* @__PURE__ */ React54.createElement(Box, { marginTop: \"4\", textAlign: \"center\", width: \"full\" }, /* @__PURE__ */ React54.createElement(\n Text,\n {\n as: \"h1\",\n color: \"modalText\",\n id: titleId,\n size: \"20\",\n weight: \"bold\"\n },\n headerLabel\n )),\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n height: \"32\",\n paddingRight: \"14\",\n position: \"absolute\",\n right: \"0\"\n },\n /* @__PURE__ */ React54.createElement(\n Box,\n {\n style: { marginBottom: -20, marginTop: -20 }\n },\n /* @__PURE__ */ React54.createElement(CloseButton, { onClose })\n )\n )\n )\n ), /* @__PURE__ */ React54.createElement(Box, { display: \"flex\", flexDirection: \"column\" }, walletContent));\n}\n\n// src/components/ConnectOptions/MobileStatus.tsx\nimport React55, { useContext as useContext18 } from \"react\";\nvar MobileStatus = ({ onClose }) => {\n const { connector } = useContext18(WalletButtonContext);\n const { i18n: i18n2 } = useContext18(I18nContext);\n const connectorName = connector?.name || \"\";\n return /* @__PURE__ */ React55.createElement(Box, null, /* @__PURE__ */ React55.createElement(\n Box,\n {\n display: \"flex\",\n paddingBottom: \"32\",\n justifyContent: \"center\",\n alignItems: \"center\",\n background: \"profileForeground\",\n flexDirection: \"column\"\n },\n /* @__PURE__ */ React55.createElement(\n Box,\n {\n width: \"full\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"18\",\n marginRight: \"24\"\n },\n /* @__PURE__ */ React55.createElement(CloseButton, { onClose })\n ),\n /* @__PURE__ */ React55.createElement(Box, { width: \"60\" }, /* @__PURE__ */ React55.createElement(WalletButton, { onClose, wallet: connector, connecting: true })),\n /* @__PURE__ */ React55.createElement(Box, { marginTop: \"20\" }, /* @__PURE__ */ React55.createElement(\n Text,\n {\n textAlign: \"center\",\n color: \"modalText\",\n size: \"18\",\n weight: \"semibold\"\n },\n i18n2.t(\"connect.status.connect_mobile\", {\n wallet: connectorName\n })\n )),\n /* @__PURE__ */ React55.createElement(Box, { maxWidth: \"full\", marginTop: \"8\" }, /* @__PURE__ */ React55.createElement(Text, { textAlign: \"center\", color: \"modalText\", size: \"16\", weight: \"medium\" }, i18n2.t(\"connect.status.confirm_mobile\", {\n wallet: connectorName\n })))\n ));\n};\n\n// src/components/ConnectOptions/ConnectOptions.tsx\nfunction ConnectOptions({ onClose }) {\n const { connector } = useContext19(WalletButtonContext);\n return isMobile() ? connector ? /* @__PURE__ */ React56.createElement(MobileStatus, { onClose }) : /* @__PURE__ */ React56.createElement(MobileOptions, { onClose }) : /* @__PURE__ */ React56.createElement(DesktopOptions, { onClose });\n}\n\n// src/components/ConnectModal/ConnectModal.tsx\nfunction ConnectModal({ onClose, open }) {\n const titleId = \"rk_connect_title\";\n const connectionStatus = useConnectionStatus();\n const { disconnect } = useDisconnect3();\n const { isConnecting } = useAccount12();\n const onAuthCancel = React57.useCallback(() => {\n onClose();\n disconnect();\n }, [onClose, disconnect]);\n const onConnectModalCancel = React57.useCallback(() => {\n if (isConnecting)\n disconnect();\n onClose();\n }, [onClose, disconnect, isConnecting]);\n if (connectionStatus === \"disconnected\") {\n return /* @__PURE__ */ React57.createElement(Dialog, { onClose: onConnectModalCancel, open, titleId }, /* @__PURE__ */ React57.createElement(DialogContent, { bottomSheetOnMobile: true, padding: \"0\", wide: true }, /* @__PURE__ */ React57.createElement(ConnectOptions, { onClose: onConnectModalCancel })));\n }\n if (connectionStatus === \"unauthenticated\") {\n return /* @__PURE__ */ React57.createElement(Dialog, { onClose: onAuthCancel, open, titleId }, /* @__PURE__ */ React57.createElement(DialogContent, { bottomSheetOnMobile: true, padding: \"0\" }, /* @__PURE__ */ React57.createElement(SignIn, { onClose: onAuthCancel, onCloseModal: onClose })));\n }\n return null;\n}\n\n// src/components/RainbowKitProvider/ModalContext.tsx\nfunction useModalStateValue() {\n const [isModalOpen, setModalOpen] = useState14(false);\n return {\n closeModal: useCallback10(() => setModalOpen(false), []),\n isModalOpen,\n openModal: useCallback10(() => setModalOpen(true), [])\n };\n}\nvar ModalContext = createContext12({\n accountModalOpen: false,\n chainModalOpen: false,\n connectModalOpen: false,\n isWalletConnectModalOpen: false,\n setIsWalletConnectModalOpen: () => {\n }\n});\nfunction ModalProvider({ children }) {\n const {\n closeModal: closeConnectModal,\n isModalOpen: connectModalOpen,\n openModal: openConnectModal\n } = useModalStateValue();\n const {\n closeModal: closeAccountModal,\n isModalOpen: accountModalOpen,\n openModal: openAccountModal\n } = useModalStateValue();\n const {\n closeModal: closeChainModal,\n isModalOpen: chainModalOpen,\n openModal: openChainModal\n } = useModalStateValue();\n const [isWalletConnectModalOpen, setIsWalletConnectModalOpen] = useState14(false);\n const connectionStatus = useConnectionStatus();\n const { chainId } = useAccount13();\n const { chains } = useConfig3();\n const isCurrentChainSupported = chains.some((chain) => chain.id === chainId);\n const closeModals = useCallback10(\n ({ keepConnectModalOpen = false } = {}) => {\n if (!keepConnectModalOpen) {\n closeConnectModal();\n }\n closeAccountModal();\n closeChainModal();\n },\n [closeConnectModal, closeAccountModal, closeChainModal]\n );\n const isUnauthenticated = useAuthenticationStatus() === \"unauthenticated\";\n useAccountEffect3({\n onConnect: () => closeModals({ keepConnectModalOpen: isUnauthenticated }),\n onDisconnect: () => closeModals()\n });\n useEffect17(() => {\n if (isUnauthenticated)\n closeModals();\n }, [isUnauthenticated, closeModals]);\n return /* @__PURE__ */ React58.createElement(\n ModalContext.Provider,\n {\n value: useMemo8(\n () => ({\n accountModalOpen,\n chainModalOpen,\n connectModalOpen,\n isWalletConnectModalOpen,\n openAccountModal: isCurrentChainSupported && connectionStatus === \"connected\" ? openAccountModal : void 0,\n openChainModal: connectionStatus === \"connected\" ? openChainModal : void 0,\n openConnectModal: connectionStatus === \"disconnected\" || connectionStatus === \"unauthenticated\" ? openConnectModal : void 0,\n setIsWalletConnectModalOpen\n }),\n [\n connectionStatus,\n accountModalOpen,\n chainModalOpen,\n connectModalOpen,\n openAccountModal,\n openChainModal,\n openConnectModal,\n isCurrentChainSupported,\n isWalletConnectModalOpen\n ]\n )\n },\n children,\n /* @__PURE__ */ React58.createElement(ConnectModal, { onClose: closeConnectModal, open: connectModalOpen }),\n /* @__PURE__ */ React58.createElement(AccountModal, { onClose: closeAccountModal, open: accountModalOpen }),\n /* @__PURE__ */ React58.createElement(ChainModal, { onClose: closeChainModal, open: chainModalOpen })\n );\n}\nfunction useModalState() {\n const { accountModalOpen, chainModalOpen, connectModalOpen } = useContext20(ModalContext);\n return {\n accountModalOpen,\n chainModalOpen,\n connectModalOpen\n };\n}\nfunction useAccountModal() {\n const { accountModalOpen, openAccountModal } = useContext20(ModalContext);\n return { accountModalOpen, openAccountModal };\n}\nfunction useChainModal() {\n const { chainModalOpen, openChainModal } = useContext20(ModalContext);\n return { chainModalOpen, openChainModal };\n}\nfunction useWalletConnectOpenState() {\n const { isWalletConnectModalOpen, setIsWalletConnectModalOpen } = useContext20(ModalContext);\n return { isWalletConnectModalOpen, setIsWalletConnectModalOpen };\n}\nfunction useConnectModal() {\n const { connectModalOpen, openConnectModal } = useContext20(ModalContext);\n const { isWalletConnectModalOpen } = useWalletConnectOpenState();\n return {\n connectModalOpen: connectModalOpen || isWalletConnectModalOpen,\n openConnectModal\n };\n}\n\n// src/components/ConnectButton/ConnectButtonRenderer.tsx\nvar noop = () => {\n};\nfunction ConnectButtonRenderer({\n children\n}) {\n const isMounted = useIsMounted();\n const { address } = useAccount14();\n const { chainId } = useAccount14();\n const { chains: wagmiChains } = useConfig4();\n const isCurrentChainSupported = wagmiChains.some(\n (chain) => chain.id === chainId\n );\n const rainbowkitChainsById = useRainbowKitChainsById();\n const authenticationStatus = useAuthenticationStatus() ?? void 0;\n const rainbowKitChain = chainId ? rainbowkitChainsById[chainId] : void 0;\n const chainName = rainbowKitChain?.name ?? void 0;\n const chainIconUrl = rainbowKitChain?.iconUrl ?? void 0;\n const chainIconBackground = rainbowKitChain?.iconBackground ?? void 0;\n const resolvedChainIconUrl = useAsyncImage(chainIconUrl);\n const showRecentTransactions = useContext21(ShowRecentTransactionsContext);\n const hasPendingTransactions = useRecentTransactions().some(({ status }) => status === \"pending\") && showRecentTransactions;\n const { showBalance } = useShowBalance();\n const computeShouldShowBalance = () => {\n if (typeof showBalance === \"boolean\") {\n return showBalance;\n }\n if (showBalance) {\n return normalizeResponsiveValue(showBalance)[isMobile() ? \"smallScreen\" : \"largeScreen\"];\n }\n return true;\n };\n const shouldShowBalance = computeShouldShowBalance();\n const { balance, ensAvatar, ensName } = useProfile({\n address,\n includeBalance: shouldShowBalance\n });\n const displayBalance = balance ? `${abbreviateETHBalance(Number.parseFloat(balance.formatted))} ${balance.symbol}` : void 0;\n const { openConnectModal } = useConnectModal();\n const { openChainModal } = useChainModal();\n const { openAccountModal } = useAccountModal();\n const { accountModalOpen, chainModalOpen, connectModalOpen } = useModalState();\n return /* @__PURE__ */ React59.createElement(React59.Fragment, null, children({\n account: address ? {\n address,\n balanceDecimals: balance?.decimals,\n balanceFormatted: balance?.formatted,\n balanceSymbol: balance?.symbol,\n displayBalance,\n displayName: ensName ? formatENS(ensName) : formatAddress(address),\n ensAvatar: ensAvatar ?? void 0,\n ensName: ensName ?? void 0,\n hasPendingTransactions\n } : void 0,\n accountModalOpen,\n authenticationStatus,\n chain: chainId ? {\n hasIcon: Boolean(chainIconUrl),\n iconBackground: chainIconBackground,\n iconUrl: resolvedChainIconUrl,\n id: chainId,\n name: chainName,\n unsupported: !isCurrentChainSupported\n } : void 0,\n chainModalOpen,\n connectModalOpen,\n mounted: isMounted(),\n openAccountModal: openAccountModal ?? noop,\n openChainModal: openChainModal ?? noop,\n openConnectModal: openConnectModal ?? noop\n }));\n}\nConnectButtonRenderer.displayName = \"ConnectButton.Custom\";\n\n// src/components/ConnectButton/ConnectButton.tsx\nvar defaultProps = {\n accountStatus: \"full\",\n chainStatus: { largeScreen: \"full\", smallScreen: \"icon\" },\n label: \"Connect Wallet\",\n showBalance: { largeScreen: true, smallScreen: false }\n};\nfunction ConnectButton({\n accountStatus = defaultProps.accountStatus,\n chainStatus = defaultProps.chainStatus,\n label = defaultProps.label,\n showBalance = defaultProps.showBalance\n}) {\n const chains = useRainbowKitChains();\n const connectionStatus = useConnectionStatus();\n const { setShowBalance } = useShowBalance();\n const [ready, setReady] = useState15(false);\n const { i18n: i18n2 } = useContext22(I18nContext);\n useEffect18(() => {\n setShowBalance(showBalance);\n if (!ready)\n setReady(true);\n }, [showBalance, setShowBalance]);\n return ready ? /* @__PURE__ */ React60.createElement(ConnectButtonRenderer, null, ({\n account,\n chain,\n mounted,\n openAccountModal,\n openChainModal,\n openConnectModal\n }) => {\n const ready2 = mounted && connectionStatus !== \"loading\";\n const unsupportedChain = chain?.unsupported ?? false;\n return /* @__PURE__ */ React60.createElement(\n Box,\n {\n display: \"flex\",\n gap: \"12\",\n ...!ready2 && {\n \"aria-hidden\": true,\n style: {\n opacity: 0,\n pointerEvents: \"none\",\n userSelect: \"none\"\n }\n }\n },\n ready2 && account && connectionStatus === \"connected\" ? /* @__PURE__ */ React60.createElement(React60.Fragment, null, chain && (chains.length > 1 || unsupportedChain) && /* @__PURE__ */ React60.createElement(\n Box,\n {\n alignItems: \"center\",\n \"aria-label\": \"Chain Selector\",\n as: \"button\",\n background: unsupportedChain ? \"connectButtonBackgroundError\" : \"connectButtonBackground\",\n borderRadius: \"connectButton\",\n boxShadow: \"connectButton\",\n className: touchableStyles({\n active: \"shrink\",\n hover: \"grow\"\n }),\n color: unsupportedChain ? \"connectButtonTextError\" : \"connectButtonText\",\n display: mapResponsiveValue(\n chainStatus,\n (value) => value === \"none\" ? \"none\" : \"flex\"\n ),\n fontFamily: \"body\",\n fontWeight: \"bold\",\n gap: \"6\",\n key: (\n // Force re-mount to prevent CSS transition\n unsupportedChain ? \"unsupported\" : \"supported\"\n ),\n onClick: openChainModal,\n paddingX: \"10\",\n paddingY: \"8\",\n testId: unsupportedChain ? \"wrong-network-button\" : \"chain-button\",\n transition: \"default\",\n type: \"button\"\n },\n unsupportedChain ? /* @__PURE__ */ React60.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n height: \"24\",\n paddingX: \"4\"\n },\n i18n2.t(\"connect_wallet.wrong_network.label\")\n ) : /* @__PURE__ */ React60.createElement(Box, { alignItems: \"center\", display: \"flex\", gap: \"6\" }, chain.hasIcon ? /* @__PURE__ */ React60.createElement(\n Box,\n {\n display: mapResponsiveValue(\n chainStatus,\n (value) => value === \"full\" || value === \"icon\" ? \"block\" : \"none\"\n ),\n height: \"24\",\n width: \"24\"\n },\n /* @__PURE__ */ React60.createElement(\n AsyncImage,\n {\n alt: chain.name ?? \"Chain icon\",\n background: chain.iconBackground,\n borderRadius: \"full\",\n height: \"24\",\n src: chain.iconUrl,\n width: \"24\"\n }\n )\n ) : null, /* @__PURE__ */ React60.createElement(\n Box,\n {\n display: mapResponsiveValue(chainStatus, (value) => {\n if (value === \"icon\" && !chain.iconUrl) {\n return \"block\";\n }\n return value === \"full\" || value === \"name\" ? \"block\" : \"none\";\n })\n },\n chain.name ?? chain.id\n )),\n /* @__PURE__ */ React60.createElement(DropdownIcon, null)\n ), !unsupportedChain && /* @__PURE__ */ React60.createElement(\n Box,\n {\n alignItems: \"center\",\n as: \"button\",\n background: \"connectButtonBackground\",\n borderRadius: \"connectButton\",\n boxShadow: \"connectButton\",\n className: touchableStyles({\n active: \"shrink\",\n hover: \"grow\"\n }),\n color: \"connectButtonText\",\n display: \"flex\",\n fontFamily: \"body\",\n fontWeight: \"bold\",\n onClick: openAccountModal,\n testId: \"account-button\",\n transition: \"default\",\n type: \"button\"\n },\n account.displayBalance && /* @__PURE__ */ React60.createElement(\n Box,\n {\n display: mapResponsiveValue(\n showBalance,\n (value) => value ? \"block\" : \"none\"\n ),\n padding: \"8\",\n paddingLeft: \"12\"\n },\n account.displayBalance\n ),\n /* @__PURE__ */ React60.createElement(\n Box,\n {\n background: normalizeResponsiveValue(showBalance)[isMobile() ? \"smallScreen\" : \"largeScreen\"] ? \"connectButtonInnerBackground\" : \"connectButtonBackground\",\n borderColor: \"connectButtonBackground\",\n borderRadius: \"connectButton\",\n borderStyle: \"solid\",\n borderWidth: \"2\",\n color: \"connectButtonText\",\n fontFamily: \"body\",\n fontWeight: \"bold\",\n paddingX: \"8\",\n paddingY: \"6\",\n transition: \"default\"\n },\n /* @__PURE__ */ React60.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"6\",\n height: \"24\"\n },\n /* @__PURE__ */ React60.createElement(\n Box,\n {\n display: mapResponsiveValue(\n accountStatus,\n (value) => value === \"full\" || value === \"avatar\" ? \"block\" : \"none\"\n )\n },\n /* @__PURE__ */ React60.createElement(\n Avatar,\n {\n address: account.address,\n imageUrl: account.ensAvatar,\n loading: account.hasPendingTransactions,\n size: 24\n }\n )\n ),\n /* @__PURE__ */ React60.createElement(Box, { alignItems: \"center\", display: \"flex\", gap: \"6\" }, /* @__PURE__ */ React60.createElement(\n Box,\n {\n display: mapResponsiveValue(\n accountStatus,\n (value) => value === \"full\" || value === \"address\" ? \"block\" : \"none\"\n )\n },\n account.displayName\n ), /* @__PURE__ */ React60.createElement(DropdownIcon, null))\n )\n )\n )) : /* @__PURE__ */ React60.createElement(\n Box,\n {\n as: \"button\",\n background: \"accentColor\",\n borderRadius: \"connectButton\",\n boxShadow: \"connectButton\",\n className: touchableStyles({\n active: \"shrink\",\n hover: \"grow\"\n }),\n color: \"accentColorForeground\",\n fontFamily: \"body\",\n fontWeight: \"bold\",\n height: \"40\",\n key: \"connect\",\n onClick: openConnectModal,\n paddingX: \"14\",\n testId: \"connect-button\",\n transition: \"default\",\n type: \"button\"\n },\n mounted && label === \"Connect Wallet\" ? i18n2.t(\"connect_wallet.label\") : label\n )\n );\n }) : /* @__PURE__ */ React60.createElement(React60.Fragment, null);\n}\nConnectButton.__defaultProps = defaultProps;\nConnectButton.Custom = ConnectButtonRenderer;\n\n// src/components/WalletButton/WalletButton.tsx\nimport React62, { useContext as useContext24 } from \"react\";\n\n// src/components/WalletButton/WalletButton.css.ts\nvar border = \"_1y2lnfi0\";\nvar maxWidth = \"_1y2lnfi1\";\n\n// src/components/WalletButton/WalletButtonRenderer.tsx\nimport React61, {\n useContext as useContext23,\n useEffect as useEffect19,\n useMemo as useMemo9,\n useState as useState16\n} from \"react\";\nimport { useAccount as useAccount15, useAccountEffect as useAccountEffect4 } from \"wagmi\";\nfunction WalletButtonRenderer({\n // Wallet is the same as `connector.id` which is injected into\n // wagmi connectors\n wallet = \"rainbow\",\n children\n}) {\n const isMounted = useIsMounted();\n const { openConnectModal } = useConnectModal();\n const { connectModalOpen } = useModalState();\n const { connector, setConnector } = useContext23(WalletButtonContext);\n const [firstConnector] = useWalletConnectors().filter((wallet2) => wallet2.isRainbowKitConnector).filter((_wallet) => _wallet.id.toLowerCase() === wallet.toLowerCase()).sort((a, b) => a.groupIndex - b.groupIndex);\n if (!firstConnector) {\n throw new Error(\"Connector not found\");\n }\n const connectionStatus = useConnectionStatus();\n const [loading, setLoading] = useState16(false);\n const [isError, setIsError] = useState16(false);\n const mobile = isMobile();\n useEffect19(() => {\n if (!connectModalOpen && connector)\n setConnector(null);\n }, [connectModalOpen, connector, setConnector]);\n const { isConnected, isConnecting } = useAccount15();\n useAccountEffect4({\n onConnect: () => {\n if (isError)\n setIsError(false);\n },\n onDisconnect: clearLatestWalletId\n });\n const isLastWalletIdConnected = useMemo9(() => {\n const lastWalletId = getLatestWalletId();\n if (!lastWalletId || !firstConnector?.id) {\n return false;\n }\n if (!isConnected)\n return false;\n return lastWalletId === firstConnector?.id;\n }, [isConnected, firstConnector]);\n const connectWallet = async () => {\n try {\n setLoading(true);\n if (isError)\n setIsError(false);\n await firstConnector?.connect?.();\n } catch {\n setIsError(true);\n } finally {\n setLoading(false);\n }\n };\n const isStatusLoading = connectionStatus === \"loading\";\n const ready = !isConnecting && !!openConnectModal && firstConnector && !isStatusLoading;\n const isNotSupported = !firstConnector?.installed || !firstConnector?.ready;\n return /* @__PURE__ */ React61.createElement(React61.Fragment, null, children({\n error: isError,\n loading,\n connected: isLastWalletIdConnected,\n ready,\n mounted: isMounted(),\n connector: firstConnector,\n connect: async () => {\n addLatestWalletId(firstConnector?.id || \"\");\n if (mobile || isNotSupported) {\n openConnectModal?.();\n setConnector(firstConnector);\n return;\n }\n await connectWallet();\n }\n }));\n}\n\n// src/components/WalletButton/WalletButton.tsx\nvar WalletButton2 = ({ wallet }) => {\n return /* @__PURE__ */ React62.createElement(WalletButtonRenderer, { wallet }, ({ ready, connect, connected, mounted, connector, loading }) => {\n const isDisabled = !ready || loading;\n const { i18n: i18n2 } = useContext24(I18nContext);\n const connectorName = connector?.name || \"\";\n if (!mounted)\n return;\n return /* @__PURE__ */ React62.createElement(\n Box,\n {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n disabled: isDisabled,\n pointerEvents: isDisabled ? \"none\" : \"all\"\n },\n /* @__PURE__ */ React62.createElement(\n Box,\n {\n as: \"button\",\n borderRadius: \"menuButton\",\n borderStyle: \"solid\",\n borderWidth: \"1\",\n className: [\n maxWidth,\n border,\n touchableStyles({\n active: \"shrink\",\n hover: \"grow\"\n })\n ],\n minHeight: \"44\",\n onClick: connect,\n disabled: !ready || loading,\n padding: \"6\",\n style: { willChange: \"transform\" },\n testId: `wallet-button-${connector?.id || \"\"}`,\n transition: \"default\",\n width: \"full\",\n background: \"connectButtonBackground\"\n },\n /* @__PURE__ */ React62.createElement(\n Box,\n {\n color: \"modalText\",\n fontFamily: \"body\",\n fontSize: \"16\",\n fontWeight: \"bold\",\n transition: \"default\",\n display: \"flex\",\n alignItems: \"center\"\n },\n /* @__PURE__ */ React62.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"12\",\n paddingRight: \"6\"\n },\n /* @__PURE__ */ React62.createElement(Box, null, loading ? /* @__PURE__ */ React62.createElement(SpinnerIcon, null) : /* @__PURE__ */ React62.createElement(\n AsyncImage,\n {\n background: connector?.iconBackground,\n borderRadius: \"6\",\n height: \"28\",\n src: connector?.iconUrl,\n width: \"28\"\n }\n )),\n /* @__PURE__ */ React62.createElement(\n Box,\n {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n color: \"modalText\"\n },\n /* @__PURE__ */ React62.createElement(Box, { testId: `wallet-button-label-${connector?.id || \"\"}` }, loading ? i18n2.t(\"connect.status.connecting\", {\n wallet: connectorName\n }) : connectorName)\n ),\n connected ? /* @__PURE__ */ React62.createElement(\n Box,\n {\n background: \"connectionIndicator\",\n borderColor: \"selectedOptionBorder\",\n borderRadius: \"full\",\n borderStyle: \"solid\",\n borderWidth: \"1\",\n height: \"8\",\n width: \"8\"\n }\n ) : null\n )\n )\n )\n );\n });\n};\nWalletButton2.Custom = WalletButtonRenderer;\n\n// src/config/getDefaultConfig.ts\nimport { http } from \"wagmi\";\nimport { createConfig } from \"wagmi\";\n\n// src/wallets/computeWalletConnectMetaData.ts\nvar computeWalletConnectMetaData = ({\n appName,\n appDescription,\n appUrl,\n appIcon\n}) => {\n return {\n name: appName,\n description: appDescription ?? appName,\n url: appUrl ?? (typeof window !== \"undefined\" ? window.location.href : \"\"),\n icons: [...appIcon ? [appIcon] : []]\n };\n};\n\n// src/utils/omitUndefinedValues.ts\nfunction omitUndefinedValues(obj) {\n return Object.fromEntries(\n //@ts-ignore\n Object.entries(obj).filter(([_key, value]) => value !== void 0)\n );\n}\n\n// src/utils/uniqueBy.ts\nfunction uniqueBy(items, key) {\n const filtered = [];\n for (const item of items) {\n if (!filtered.some((x) => x[key] === item[key])) {\n filtered.push(item);\n }\n }\n return filtered;\n}\n\n// src/wallets/connectorsForWallets.ts\nvar connectorsForWallets = (walletList, {\n projectId,\n walletConnectParameters,\n appName,\n appDescription,\n appUrl,\n appIcon\n}) => {\n if (!walletList.length) {\n throw new Error(\"No wallet list was provided\");\n }\n for (const { wallets, groupName } of walletList) {\n if (!wallets.length) {\n throw new Error(`No wallets provided for group: ${groupName}`);\n }\n }\n let index = -1;\n const connectors = [];\n const visibleWallets = [];\n const potentiallyHiddenWallets = [];\n const walletConnectMetaData = computeWalletConnectMetaData({\n appName,\n appDescription,\n appUrl,\n appIcon\n });\n for (const [groupIndex, { groupName, wallets }] of walletList.entries()) {\n for (const createWallet of wallets) {\n index++;\n const wallet = createWallet({\n projectId,\n appName,\n appIcon,\n // `option` is being used only for `walletConnectWallet` wallet\n options: {\n metadata: walletConnectMetaData,\n ...walletConnectParameters\n },\n // Every other wallet that supports walletConnect flow and is not\n // `walletConnectWallet` wallet will have `walletConnectParameters` property\n walletConnectParameters: {\n metadata: walletConnectMetaData,\n ...walletConnectParameters\n }\n });\n if (wallet?.iconAccent && !isHexString(wallet?.iconAccent)) {\n throw new Error(\n `Property \\`iconAccent\\` is not a hex value for wallet: ${wallet.name}`\n );\n }\n const walletListItem = {\n ...wallet,\n groupIndex: groupIndex + 1,\n groupName,\n index\n };\n if (typeof wallet.hidden === \"function\") {\n potentiallyHiddenWallets.push(walletListItem);\n } else {\n visibleWallets.push(walletListItem);\n }\n }\n }\n const walletListItems = uniqueBy(\n [...visibleWallets, ...potentiallyHiddenWallets],\n \"id\"\n );\n for (const {\n createConnector: createConnector5,\n groupIndex,\n groupName,\n hidden,\n ...walletMeta\n } of walletListItems) {\n if (typeof hidden === \"function\") {\n const isHidden = hidden();\n if (isHidden) {\n continue;\n }\n }\n const walletMetaData = (additionalRkParams) => {\n return {\n rkDetails: omitUndefinedValues({\n ...walletMeta,\n groupIndex,\n groupName,\n isRainbowKitConnector: true,\n // These additional params will be used in rainbowkit react tree to\n // merge `walletConnectWallet` and `walletConnect` connector from wagmi with\n // showQrModal: true. This way we can let the user choose if they want to\n // connect via QR code or open the official walletConnect modal instead\n ...additionalRkParams ? additionalRkParams : {}\n })\n };\n };\n const isWalletConnectConnector = walletMeta.id === \"walletConnect\";\n if (isWalletConnectConnector) {\n connectors.push(\n createConnector5(\n walletMetaData({\n isWalletConnectModalConnector: true,\n showQrModal: true\n })\n )\n );\n }\n const connector = createConnector5(walletMetaData());\n connectors.push(connector);\n }\n return connectors;\n};\n\n// src/wallets/getWalletConnectConnector.ts\nimport { createConnector } from \"wagmi\";\nimport { walletConnect } from \"wagmi/connectors\";\nvar walletConnectInstances = /* @__PURE__ */ new Map();\nvar getOrCreateWalletConnectInstance = ({\n projectId,\n walletConnectParameters,\n rkDetailsShowQrModal\n}) => {\n let config = {\n ...walletConnectParameters ? walletConnectParameters : {},\n projectId,\n showQrModal: false\n // Required. Otherwise WalletConnect modal (Web3Modal) will popup during time of connection for a wallet\n };\n if (rkDetailsShowQrModal) {\n config = { ...config, showQrModal: true };\n }\n const serializedConfig = JSON.stringify(config);\n const sharedWalletConnector = walletConnectInstances.get(serializedConfig);\n if (sharedWalletConnector) {\n return sharedWalletConnector;\n }\n const newWalletConnectInstance = walletConnect(config);\n walletConnectInstances.set(serializedConfig, newWalletConnectInstance);\n return newWalletConnectInstance;\n};\nfunction createWalletConnectConnector({\n projectId,\n walletDetails,\n walletConnectParameters\n}) {\n return createConnector((config) => ({\n ...getOrCreateWalletConnectInstance({\n projectId,\n walletConnectParameters,\n // Used in `connectorsForWallets` to add another\n // walletConnect wallet into rainbowkit with modal popup option\n rkDetailsShowQrModal: walletDetails.rkDetails.showQrModal\n })(config),\n ...walletDetails\n }));\n}\nfunction getWalletConnectConnector({\n projectId,\n walletConnectParameters\n}) {\n const exampleProjectId = \"21fef48091f12692cad574a6f7753643\";\n if (!projectId || projectId === \"\") {\n throw new Error(\n \"No projectId found. Every dApp must now provide a WalletConnect Cloud projectId to enable WalletConnect v2 https://www.rainbowkit.com/docs/installation#configure\"\n );\n }\n if (projectId === \"YOUR_PROJECT_ID\") {\n projectId = exampleProjectId;\n }\n return (walletDetails) => createWalletConnectConnector({\n projectId,\n walletDetails,\n walletConnectParameters\n });\n}\n\n// src/wallets/getInjectedConnector.ts\nimport { createConnector as createConnector2 } from \"wagmi\";\nimport { injected } from \"wagmi/connectors\";\nfunction getExplicitInjectedProvider(flag) {\n const _window = typeof window !== \"undefined\" ? window : void 0;\n if (typeof _window === \"undefined\" || typeof _window.ethereum === \"undefined\")\n return;\n const providers = _window.ethereum.providers;\n return providers ? providers.find((provider) => provider[flag]) : _window.ethereum[flag] ? _window.ethereum : void 0;\n}\nfunction getWindowProviderNamespace(namespace) {\n const providerSearch = (provider, namespace2) => {\n const [property, ...path] = namespace2.split(\".\");\n const _provider = provider[property];\n if (_provider) {\n if (path.length === 0)\n return _provider;\n return providerSearch(_provider, path.join(\".\"));\n }\n };\n if (typeof window !== \"undefined\")\n return providerSearch(window, namespace);\n}\nfunction hasInjectedProvider({\n flag,\n namespace\n}) {\n if (namespace && typeof getWindowProviderNamespace(namespace) !== \"undefined\")\n return true;\n if (flag && typeof getExplicitInjectedProvider(flag) !== \"undefined\")\n return true;\n return false;\n}\nfunction getInjectedProvider({\n flag,\n namespace\n}) {\n const _window = typeof window !== \"undefined\" ? window : void 0;\n if (typeof _window === \"undefined\")\n return;\n if (namespace) {\n const windowProvider = getWindowProviderNamespace(namespace);\n if (windowProvider)\n return windowProvider;\n }\n const providers = _window.ethereum?.providers;\n if (flag) {\n const provider = getExplicitInjectedProvider(flag);\n if (provider)\n return provider;\n }\n if (typeof providers !== \"undefined\" && providers.length > 0)\n return providers[0];\n return _window.ethereum;\n}\nfunction createInjectedConnector(provider) {\n return (walletDetails) => {\n const injectedConfig = provider ? {\n target: () => ({\n id: walletDetails.rkDetails.id,\n name: walletDetails.rkDetails.name,\n provider\n })\n } : {};\n return createConnector2((config) => ({\n // Spread the injectedConfig object, which may be empty or contain the target function\n ...injected(injectedConfig)(config),\n ...walletDetails\n }));\n };\n}\nfunction getInjectedConnector({\n flag,\n namespace,\n target\n}) {\n const provider = target ? target : getInjectedProvider({ flag, namespace });\n return createInjectedConnector(provider);\n}\n\n// src/wallets/walletConnectors/coinbaseWallet/coinbaseWallet.ts\nimport { createConnector as createConnector3 } from \"wagmi\";\nimport {\n coinbaseWallet as coinbaseConnector\n} from \"wagmi/connectors\";\nvar coinbaseWallet = ({ appName, appIcon }) => {\n const getUri = (uri) => uri;\n const ios = isIOS();\n return {\n id: \"coinbase\",\n name: \"Coinbase Wallet\",\n shortName: \"Coinbase\",\n rdns: \"com.coinbase.wallet\",\n iconUrl: async () => (await import(\"./coinbaseWallet-WWX6LF36.js\")).default,\n iconAccent: \"#2c5ff6\",\n iconBackground: \"#2c5ff6\",\n // If the coinbase wallet browser extension is not installed, a popup will appear\n // prompting the user to connect or create a wallet via passkey. This means if you either have\n // or don't have the coinbase wallet browser extension installed it'll do some action anyways\n installed: true,\n downloadUrls: {\n android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n ios: \"https://apps.apple.com/us/app/coinbase-wallet-store-crypto/id1278383455\",\n mobile: \"https://coinbase.com/wallet/downloads\",\n qrCode: \"https://coinbase-wallet.onelink.me/q5Sx/fdb9b250\",\n chrome: \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad\",\n browserExtension: \"https://coinbase.com/wallet\"\n },\n ...ios ? {} : {\n qrCode: {\n getUri,\n instructions: {\n learnMoreUrl: \"https://coinbase.com/wallet/articles/getting-started-mobile\",\n steps: [\n {\n description: \"wallet_connectors.coinbase.qr_code.step1.description\",\n step: \"install\",\n title: \"wallet_connectors.coinbase.qr_code.step1.title\"\n },\n {\n description: \"wallet_connectors.coinbase.qr_code.step2.description\",\n step: \"create\",\n title: \"wallet_connectors.coinbase.qr_code.step2.title\"\n },\n {\n description: \"wallet_connectors.coinbase.qr_code.step3.description\",\n step: \"scan\",\n title: \"wallet_connectors.coinbase.qr_code.step3.title\"\n }\n ]\n }\n },\n extension: {\n instructions: {\n learnMoreUrl: \"https://coinbase.com/wallet/articles/getting-started-extension\",\n steps: [\n {\n description: \"wallet_connectors.coinbase.extension.step1.description\",\n step: \"install\",\n title: \"wallet_connectors.coinbase.extension.step1.title\"\n },\n {\n description: \"wallet_connectors.coinbase.extension.step2.description\",\n step: \"create\",\n title: \"wallet_connectors.coinbase.extension.step2.title\"\n },\n {\n description: \"wallet_connectors.coinbase.extension.step3.description\",\n step: \"refresh\",\n title: \"wallet_connectors.coinbase.extension.step3.title\"\n }\n ]\n }\n }\n },\n createConnector: (walletDetails) => {\n const connector = coinbaseConnector({\n appName,\n appLogoUrl: appIcon,\n preference: coinbaseWallet.preference\n });\n return createConnector3((config) => ({\n ...connector(config),\n ...walletDetails\n }));\n }\n };\n};\n\n// src/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.ts\nfunction isMetaMask(ethereum) {\n if (!ethereum?.isMetaMask)\n return false;\n if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state)\n return false;\n if (ethereum.isApexWallet)\n return false;\n if (ethereum.isAvalanche)\n return false;\n if (ethereum.isBackpack)\n return false;\n if (ethereum.isBifrost)\n return false;\n if (ethereum.isBitKeep)\n return false;\n if (ethereum.isBitski)\n return false;\n if (ethereum.isBlockWallet)\n return false;\n if (ethereum.isCoinbaseWallet)\n return false;\n if (ethereum.isDawn)\n return false;\n if (ethereum.isEnkrypt)\n return false;\n if (ethereum.isExodus)\n return false;\n if (ethereum.isFrame)\n return false;\n if (ethereum.isFrontier)\n return false;\n if (ethereum.isGamestop)\n return false;\n if (ethereum.isHyperPay)\n return false;\n if (ethereum.isImToken)\n return false;\n if (ethereum.isKuCoinWallet)\n return false;\n if (ethereum.isMathWallet)\n return false;\n if (ethereum.isNestWallet)\n return false;\n if (ethereum.isOkxWallet || ethereum.isOKExWallet)\n return false;\n if (ethereum.isOneInchIOSWallet || ethereum.isOneInchAndroidWallet)\n return false;\n if (ethereum.isOpera)\n return false;\n if (ethereum.isPhantom)\n return false;\n if (ethereum.isPortal)\n return false;\n if (ethereum.isRabby)\n return false;\n if (ethereum.isRainbow)\n return false;\n if (ethereum.isStatus)\n return false;\n if (ethereum.isTalisman)\n return false;\n if (ethereum.isTally)\n return false;\n if (ethereum.isTokenPocket)\n return false;\n if (ethereum.isTokenary)\n return false;\n if (ethereum.isTrust || ethereum.isTrustWallet)\n return false;\n if (ethereum.isXDEFI)\n return false;\n if (ethereum.isZeal)\n return false;\n if (ethereum.isZerion)\n return false;\n if (ethereum.__seif)\n return false;\n return true;\n}\nvar metaMaskWallet = ({\n projectId,\n walletConnectParameters\n}) => {\n const isMetaMaskInjected = hasInjectedProvider({ flag: \"isMetaMask\" });\n const shouldUseWalletConnect = !isMetaMaskInjected;\n const getUri = (uri) => {\n return isAndroid() ? uri : isIOS() ? (\n // currently broken in MetaMask v6.5.0 https://github.com/MetaMask/metamask-mobile/issues/6457\n `metamask://wc?uri=${encodeURIComponent(uri)}`\n ) : `https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}`;\n };\n return {\n id: \"metaMask\",\n name: \"MetaMask\",\n rdns: \"io.metamask\",\n iconUrl: async () => (await import(\"./metaMaskWallet-YFHEHW7V.js\")).default,\n iconAccent: \"#f6851a\",\n iconBackground: \"#fff\",\n installed: !shouldUseWalletConnect ? isMetaMaskInjected : void 0,\n downloadUrls: {\n android: \"https://play.google.com/store/apps/details?id=io.metamask\",\n ios: \"https://apps.apple.com/us/app/metamask/id1438144202\",\n mobile: \"https://metamask.io/download\",\n qrCode: \"https://metamask.io/download\",\n chrome: \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm\",\n firefox: \"https://addons.mozilla.org/firefox/addon/ether-metamask\",\n opera: \"https://addons.opera.com/extensions/details/metamask-10\",\n browserExtension: \"https://metamask.io/download\"\n },\n mobile: {\n getUri: shouldUseWalletConnect ? getUri : void 0\n },\n qrCode: shouldUseWalletConnect ? {\n getUri,\n instructions: {\n learnMoreUrl: \"https://metamask.io/faqs/\",\n steps: [\n {\n description: \"wallet_connectors.metamask.qr_code.step1.description\",\n step: \"install\",\n title: \"wallet_connectors.metamask.qr_code.step1.title\"\n },\n {\n description: \"wallet_connectors.metamask.qr_code.step2.description\",\n step: \"create\",\n title: \"wallet_connectors.metamask.qr_code.step2.title\"\n },\n {\n description: \"wallet_connectors.metamask.qr_code.step3.description\",\n step: \"refresh\",\n title: \"wallet_connectors.metamask.qr_code.step3.title\"\n }\n ]\n }\n } : void 0,\n extension: {\n instructions: {\n learnMoreUrl: \"https://metamask.io/faqs/\",\n steps: [\n {\n description: \"wallet_connectors.metamask.extension.step1.description\",\n step: \"install\",\n title: \"wallet_connectors.metamask.extension.step1.title\"\n },\n {\n description: \"wallet_connectors.metamask.extension.step2.description\",\n step: \"create\",\n title: \"wallet_connectors.metamask.extension.step2.title\"\n },\n {\n description: \"wallet_connectors.metamask.extension.step3.description\",\n step: \"refresh\",\n title: \"wallet_connectors.metamask.extension.step3.title\"\n }\n ]\n }\n },\n createConnector: shouldUseWalletConnect ? getWalletConnectConnector({\n projectId,\n walletConnectParameters\n }) : getInjectedConnector({\n target: typeof window !== \"undefined\" ? window.ethereum?.providers?.find(\n isMetaMask\n ) ?? window.ethereum : void 0\n })\n };\n};\n\n// src/wallets/walletConnectors/rainbowWallet/rainbowWallet.ts\nvar rainbowWallet = ({\n projectId,\n walletConnectParameters\n}) => {\n const isRainbowInjected = hasInjectedProvider({ flag: \"isRainbow\" });\n const shouldUseWalletConnect = !isRainbowInjected;\n const getUri = (uri) => {\n return isAndroid() ? uri : isIOS() ? `rainbow://wc?uri=${encodeURIComponent(uri)}&connector=rainbowkit` : `https://rnbwapp.com/wc?uri=${encodeURIComponent(\n uri\n )}&connector=rainbowkit`;\n };\n return {\n id: \"rainbow\",\n name: \"Rainbow\",\n rdns: \"me.rainbow\",\n iconUrl: async () => (await import(\"./rainbowWallet-2SR6TVBF.js\")).default,\n iconBackground: \"#0c2f78\",\n installed: !shouldUseWalletConnect ? isRainbowInjected : void 0,\n downloadUrls: {\n android: \"https://play.google.com/store/apps/details?id=me.rainbow&referrer=utm_source%3Drainbowkit&utm_source=rainbowkit\",\n ios: \"https://apps.apple.com/app/apple-store/id1457119021?pt=119997837&ct=rainbowkit&mt=8\",\n mobile: \"https://rainbow.download?utm_source=rainbowkit\",\n qrCode: \"https://rainbow.download?utm_source=rainbowkit&utm_medium=qrcode\",\n browserExtension: \"https://rainbow.me/extension?utm_source=rainbowkit\"\n },\n mobile: { getUri: shouldUseWalletConnect ? getUri : void 0 },\n qrCode: shouldUseWalletConnect ? {\n getUri,\n instructions: {\n learnMoreUrl: \"https://learn.rainbow.me/connect-to-a-website-or-app?utm_source=rainbowkit&utm_medium=connector&utm_campaign=learnmore\",\n steps: [\n {\n description: \"wallet_connectors.rainbow.qr_code.step1.description\",\n step: \"install\",\n title: \"wallet_connectors.rainbow.qr_code.step1.title\"\n },\n {\n description: \"wallet_connectors.rainbow.qr_code.step2.description\",\n step: \"create\",\n title: \"wallet_connectors.rainbow.qr_code.step2.title\"\n },\n {\n description: \"wallet_connectors.rainbow.qr_code.step3.description\",\n step: \"scan\",\n title: \"wallet_connectors.rainbow.qr_code.step3.title\"\n }\n ]\n }\n } : void 0,\n createConnector: shouldUseWalletConnect ? getWalletConnectConnector({\n projectId,\n walletConnectParameters\n }) : getInjectedConnector({ flag: \"isRainbow\" })\n };\n};\n\n// src/wallets/walletConnectors/safeWallet/safeWallet.ts\nimport { createConnector as createConnector4 } from \"wagmi\";\nimport { safe } from \"wagmi/connectors\";\nvar safeWallet = () => ({\n id: \"safe\",\n name: \"Safe\",\n iconAccent: \"#12ff80\",\n iconBackground: \"#fff\",\n iconUrl: async () => (await import(\"./safeWallet-VUYZPLY4.js\")).default,\n installed: (\n // Only allowed in iframe context\n // borrowed from wagmi safe connector\n !(typeof window === \"undefined\") && window?.parent !== window\n ),\n downloadUrls: {\n // We're opting not to provide a download prompt if the application is not\n // already running as a Safe App within the context of the Safe browser,\n // since it's unlikely to be a desired behavior for users.\n },\n createConnector: (walletDetails) => {\n return createConnector4((config) => ({\n ...safe()(config),\n ...walletDetails\n }));\n }\n});\n\n// src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.ts\nvar walletConnectWallet = ({\n projectId,\n options\n}) => {\n const getUri = (uri) => uri;\n return {\n id: \"walletConnect\",\n name: \"WalletConnect\",\n installed: void 0,\n iconUrl: async () => (await import(\"./walletConnectWallet-FNSU4KNU.js\")).default,\n iconBackground: \"#3b99fc\",\n qrCode: { getUri },\n createConnector: getWalletConnectConnector({\n projectId,\n walletConnectParameters: options\n })\n };\n};\n\n// src/config/getDefaultConfig.ts\nvar createDefaultTransports = (chains) => {\n const transportsObject = chains.reduce((acc, chain) => {\n const key = chain.id;\n acc[key] = http();\n return acc;\n }, {});\n return transportsObject;\n};\nvar getDefaultConfig = ({\n appName,\n appDescription,\n appUrl,\n appIcon,\n wallets,\n projectId,\n ...wagmiParameters\n}) => {\n const { transports, chains, ...restWagmiParameters } = wagmiParameters;\n const metadata = computeWalletConnectMetaData({\n appName,\n appDescription,\n appUrl,\n appIcon\n });\n const connectors = connectorsForWallets(\n wallets || [\n {\n groupName: \"Popular\",\n wallets: [\n safeWallet,\n rainbowWallet,\n coinbaseWallet,\n metaMaskWallet,\n walletConnectWallet\n ]\n }\n ],\n {\n projectId,\n appName,\n appDescription,\n appUrl,\n appIcon,\n walletConnectParameters: { metadata }\n }\n );\n return createConfig({\n connectors,\n chains,\n transports: transports || createDefaultTransports(chains),\n ...restWagmiParameters\n });\n};\n\n// src/wallets/getDefaultWallets.ts\nfunction getDefaultWallets(parameters) {\n const wallets = [\n {\n groupName: \"Popular\",\n wallets: [\n safeWallet,\n rainbowWallet,\n coinbaseWallet,\n metaMaskWallet,\n walletConnectWallet\n ]\n }\n ];\n if (parameters) {\n return {\n connectors: connectorsForWallets(wallets, parameters),\n wallets\n };\n }\n return {\n wallets\n };\n}\n\n// src/transactions/useAddRecentTransaction.ts\nimport { useCallback as useCallback11 } from \"react\";\nimport { useAccount as useAccount16 } from \"wagmi\";\nfunction useAddRecentTransaction() {\n const store = useTransactionStore();\n const { address } = useAccount16();\n const chainId = useChainId();\n return useCallback11(\n (transaction) => {\n if (!address || !chainId) {\n throw new Error(\"No address or chain ID found\");\n }\n store.addTransaction(address, chainId, transaction);\n },\n [store, address, chainId]\n );\n}\n\n// src/__private__/index.ts\nvar __private__ = {\n DesktopOptions,\n dialogContent,\n dialogContentMobile,\n MobileOptions\n};\nexport {\n ConnectButton,\n RainbowKitAuthenticationProvider,\n RainbowKitProvider,\n WalletButton2 as WalletButton,\n __private__,\n connectorsForWallets,\n createAuthenticationAdapter,\n cssObjectFromTheme,\n cssStringFromTheme,\n darkTheme,\n getDefaultConfig,\n getDefaultWallets,\n getWalletConnectConnector,\n lightTheme,\n midnightTheme,\n useAccountModal,\n useAddRecentTransaction,\n useChainModal,\n useConnectModal\n};\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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 root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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 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","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","/**\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","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","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var root = require('./_root');\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 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\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 overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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 baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar 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 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","/** 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","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","/**\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","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 getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\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","/**\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","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","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 baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\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 * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\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","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\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 `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.12.1\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map(stringify)).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"number\":\n return (value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Some mathematic operations.\n *\n * @_subsection: api/utils:Math Helpers [about-maths]\n */\nimport { hexlify, isBytesLike } from \"./data.js\";\nimport { assert, assertArgument } from \"./errors.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n//const BN_Max256 = (BN_1 << BigInt(256)) - BN_1;\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n/**\n * Convert %%value%% from a twos-compliment representation of %%width%%\n * bits to its value.\n *\n * If the highest bit is ``1``, the result will be negative.\n */\nexport function fromTwos(_value, _width) {\n const value = getUint(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n assert((value >> width) === BN_0, \"overflow\", \"NUMERIC_FAULT\", {\n operation: \"fromTwos\", fault: \"overflow\", value: _value\n });\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n/**\n * Convert %%value%% to a twos-compliment representation of\n * %%width%% bits.\n *\n * The result will always be positive.\n */\nexport function toTwos(_value, _width) {\n let value = getBigInt(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n const limit = (BN_1 << (width - BN_1));\n if (value < BN_0) {\n value = -value;\n assert(value <= limit, \"too low\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n const mask = (BN_1 << width) - BN_1;\n return ((~value) & mask) + BN_1;\n }\n else {\n assert(value < limit, \"too high\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n }\n return value;\n}\n/**\n * Mask %%value%% with a bitmask of %%bits%% ones.\n */\nexport function mask(_value, _bits) {\n const value = getUint(_value, \"value\");\n const bits = BigInt(getNumber(_bits, \"bits\"));\n return value & ((BN_1 << bits) - BN_1);\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\", name || \"value\", value);\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nexport function getUint(value, name) {\n const result = getBigInt(value, name);\n assert(result >= BN_0, \"unsigned value cannot be negative\", \"NUMERIC_FAULT\", {\n fault: \"overflow\", operation: \"getUint\", value\n });\n return result;\n}\nconst Nibbles = \"0123456789abcdef\";\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nexport function toBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\n/**\n * Gets a //number// from %%value%%. If it is an invalid value for\n * a //number//, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return Number(value);\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return value;\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n return getNumber(BigInt(value), name);\n }\n catch (e) {\n assertArgument(false, `invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid numeric value\", name || \"value\", value);\n}\n/**\n * Converts %%value%% to a number. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data. Throws if the value is not safe.\n */\nexport function toNumber(value) {\n return getNumber(toBigInt(value));\n}\n/**\n * Converts %%value%% to a Big Endian hexstring, optionally padded to\n * %%width%% bytes.\n */\nexport function toBeHex(_value, _width) {\n const value = getUint(_value, \"value\");\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = getNumber(_width, \"width\");\n assert(width * 2 >= result.length, `value exceeds width (${width} bytes)`, \"NUMERIC_FAULT\", {\n operation: \"toBeHex\",\n fault: \"overflow\",\n value: _value\n });\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\n/**\n * Converts %%value%% to a Big Endian Uint8Array.\n */\nexport function toBeArray(_value) {\n const value = getUint(_value, \"value\");\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns a [[HexString]] for %%value%% safe to use as a //Quantity//.\n *\n * A //Quantity// does not have and leading 0 values unless the value is\n * the literal value `0x0`. This is most commonly used for JSSON-RPC\n * numeric values.\n */\nexport function toQuantity(value) {\n let result = hexlify(isBytesLike(value) ? value : toBeArray(value)).substring(2);\n while (result.startsWith(\"0\")) {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=maths.js.map","/**\n * The [Base58 Encoding](link-base58) scheme allows a **numeric** value\n * to be encoded as a compact string using a radix of 58 using only\n * alpha-numeric characters. Confusingly similar characters are omitted\n * (i.e. ``\"l0O\"``).\n *\n * Note that Base58 encodes a **numeric** value, not arbitrary bytes,\n * since any zero-bytes on the left would get removed. To mitigate this\n * issue most schemes that use Base58 choose specific high-order values\n * to ensure non-zero prefixes.\n *\n * @_subsection: api/utils:Base58 Encoding [about-base58]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument } from \"./errors.js\";\nimport { toBigInt } from \"./maths.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n assertArgument(result != null, `invalid base58 value`, \"letter\", letter);\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\n/**\n * Encode %%value%% as a Base58-encoded string.\n */\nexport function encodeBase58(_value) {\n const bytes = getBytes(_value);\n let value = toBigInt(bytes);\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n // Account for leading padding zeros\n for (let i = 0; i < bytes.length; i++) {\n if (bytes[i]) {\n break;\n }\n result = Alphabet[0] + result;\n }\n return result;\n}\n/**\n * Decode the Base58-encoded %%value%%.\n */\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return result;\n}\n//# sourceMappingURL=base58.js.map","// utils/base64-browser\nimport { getBytes } from \"./data.js\";\nexport function decodeBase64(textData) {\n textData = atob(textData);\n const data = new Uint8Array(textData.length);\n for (let i = 0; i < textData.length; i++) {\n data[i] = textData.charCodeAt(i);\n }\n return getBytes(data);\n}\nexport function encodeBase64(_data) {\n const data = getBytes(_data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64-browser.js.map","/**\n * Events allow for applications to use the observer pattern, which\n * allows subscribing and publishing events, outside the normal\n * execution paths.\n *\n * @_section api/utils/events:Events [about-events]\n */\nimport { defineProperties } from \"./properties.js\";\n/**\n * When an [[EventEmitterable]] triggers a [[Listener]], the\n * callback always ahas one additional argument passed, which is\n * an **EventPayload**.\n */\nexport class EventPayload {\n /**\n * The event filter.\n */\n filter;\n /**\n * The **EventEmitterable**.\n */\n emitter;\n #listener;\n /**\n * Create a new **EventPayload** for %%emitter%% with\n * the %%listener%% and for %%filter%%.\n */\n constructor(emitter, listener, filter) {\n this.#listener = listener;\n defineProperties(this, { emitter, filter });\n }\n /**\n * Unregister the triggered listener for future events.\n */\n async removeListener() {\n if (this.#listener == null) {\n return;\n }\n await this.emitter.off(this.filter, this.#listener);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\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 === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\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 return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { assert } from \"./errors.js\";\n// @TODO: timeout is completely ignored; start a Promise.any with a reject?\nexport function createGetUrl(options) {\n async function getUrl(req, _signal) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n assert(protocol === \"http\" || protocol === \"https\", `unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n assert(protocol === \"https\" || !req.credentials || req.allowInsecureAuthentication, \"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n let signal = undefined;\n if (_signal) {\n const controller = new AbortController();\n signal = controller.signal;\n _signal.addListener(() => { controller.abort(); });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n signal\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const respBody = await resp.arrayBuffer();\n const body = (respBody == null) ? null : new Uint8Array(respBody);\n return {\n statusCode: resp.status,\n statusMessage: resp.statusText,\n headers, body\n };\n }\n return getUrl;\n}\n// @TODO: remove in v7; provided for backwards compat\nconst defaultGetUrl = createGetUrl({});\nexport async function getUrl(req, _signal) {\n return defaultGetUrl(req, _signal);\n}\n//# sourceMappingURL=geturl-browser.js.map","/**\n * Fetching content from the web is environment-specific, so Ethers\n * provides an abstraction that each environment can implement to provide\n * this service.\n *\n * On [Node.js](link-node), the ``http`` and ``https`` libs are used to\n * create a request object, register event listeners and process data\n * and populate the [[FetchResponse]].\n *\n * In a browser, the [DOM fetch](link-js-fetch) is used, and the resulting\n * ``Promise`` is waited on to retrieve the payload.\n *\n * The [[FetchRequest]] is responsible for handling many common situations,\n * such as redirects, server throttling, authentication, etc.\n *\n * It also handles common gateways, such as IPFS and data URIs.\n *\n * @_section api/utils/fetching:Fetching Web Content [about-fetch]\n */\nimport { decodeBase64, encodeBase64 } from \"./base64.js\";\nimport { hexlify } from \"./data.js\";\nimport { assert, assertArgument } from \"./errors.js\";\nimport { defineProperties } from \"./properties.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nimport { createGetUrl } from \"./geturl.js\";\nconst MAX_ATTEMPTS = 12;\nconst SLOT_INTERVAL = 250;\n// The global FetchGetUrlFunc implementation.\nlet defaultGetUrlFunc = createGetUrl();\nconst reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\nconst reIpfs = new RegExp(\"^ipfs:/\\/(ipfs/)?(.*)$\", \"i\");\n// If locked, new Gateways cannot be added\nlet locked = false;\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs\nasync function dataGatewayFunc(url, signal) {\n try {\n const match = url.match(reData);\n if (!match) {\n throw new Error(\"invalid data\");\n }\n return new FetchResponse(200, \"OK\", {\n \"content-type\": (match[1] || \"text/plain\"),\n }, (match[2] ? decodeBase64(match[3]) : unpercent(match[3])));\n }\n catch (error) {\n return new FetchResponse(599, \"BAD REQUEST (invalid data: URI)\", {}, null, new FetchRequest(url));\n }\n}\n/**\n * Returns a [[FetchGatewayFunc]] for fetching content from a standard\n * IPFS gateway hosted at %%baseUrl%%.\n */\nfunction getIpfsGatewayFunc(baseUrl) {\n async function gatewayIpfs(url, signal) {\n try {\n const match = url.match(reIpfs);\n if (!match) {\n throw new Error(\"invalid link\");\n }\n return new FetchRequest(`${baseUrl}${match[2]}`);\n }\n catch (error) {\n return new FetchResponse(599, \"BAD REQUEST (invalid IPFS URI)\", {}, null, new FetchRequest(url));\n }\n }\n return gatewayIpfs;\n}\nconst Gateways = {\n \"data\": dataGatewayFunc,\n \"ipfs\": getIpfsGatewayFunc(\"https:/\\/gateway.ipfs.io/ipfs/\")\n};\nconst fetchSignals = new WeakMap();\n/**\n * @_ignore\n */\nexport class FetchCancelSignal {\n #listeners;\n #cancelled;\n constructor(request) {\n this.#listeners = [];\n this.#cancelled = false;\n fetchSignals.set(request, () => {\n if (this.#cancelled) {\n return;\n }\n this.#cancelled = true;\n for (const listener of this.#listeners) {\n setTimeout(() => { listener(); }, 0);\n }\n this.#listeners = [];\n });\n }\n addListener(listener) {\n assert(!this.#cancelled, \"singal already cancelled\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fetchCancelSignal.addCancelListener\"\n });\n this.#listeners.push(listener);\n }\n get cancelled() { return this.#cancelled; }\n checkSignal() {\n assert(!this.cancelled, \"cancelled\", \"CANCELLED\", {});\n }\n}\n// Check the signal, throwing if it is cancelled\nfunction checkSignal(signal) {\n if (signal == null) {\n throw new Error(\"missing signal; should not happen\");\n }\n signal.checkSignal();\n return signal;\n}\n/**\n * Represents a request for a resource using a URI.\n *\n * By default, the supported schemes are ``HTTP``, ``HTTPS``, ``data:``,\n * and ``IPFS:``.\n *\n * Additional schemes can be added globally using [[registerGateway]].\n *\n * @example:\n * req = new FetchRequest(\"https://www.ricmoo.com\")\n * resp = await req.send()\n * resp.body.length\n * //_result:\n */\nexport class FetchRequest {\n #allowInsecure;\n #gzip;\n #headers;\n #method;\n #timeout;\n #url;\n #body;\n #bodyType;\n #creds;\n // Hooks\n #preflight;\n #process;\n #retry;\n #signal;\n #throttle;\n #getUrlFunc;\n /**\n * The fetch URL to request.\n */\n get url() { return this.#url; }\n set url(url) {\n this.#url = String(url);\n }\n /**\n * The fetch body, if any, to send as the request body. //(default: null)//\n *\n * When setting a body, the intrinsic ``Content-Type`` is automatically\n * set and will be used if **not overridden** by setting a custom\n * header.\n *\n * If %%body%% is null, the body is cleared (along with the\n * intrinsic ``Content-Type``).\n *\n * If %%body%% is a string, the intrinsic ``Content-Type`` is set to\n * ``text/plain``.\n *\n * If %%body%% is a Uint8Array, the intrinsic ``Content-Type`` is set to\n * ``application/octet-stream``.\n *\n * If %%body%% is any other object, the intrinsic ``Content-Type`` is\n * set to ``application/json``.\n */\n get body() {\n if (this.#body == null) {\n return null;\n }\n return new Uint8Array(this.#body);\n }\n set body(body) {\n if (body == null) {\n this.#body = undefined;\n this.#bodyType = undefined;\n }\n else if (typeof (body) === \"string\") {\n this.#body = toUtf8Bytes(body);\n this.#bodyType = \"text/plain\";\n }\n else if (body instanceof Uint8Array) {\n this.#body = body;\n this.#bodyType = \"application/octet-stream\";\n }\n else if (typeof (body) === \"object\") {\n this.#body = toUtf8Bytes(JSON.stringify(body));\n this.#bodyType = \"application/json\";\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n /**\n * Returns true if the request has a body.\n */\n hasBody() {\n return (this.#body != null);\n }\n /**\n * The HTTP method to use when requesting the URI. If no method\n * has been explicitly set, then ``GET`` is used if the body is\n * null and ``POST`` otherwise.\n */\n get method() {\n if (this.#method) {\n return this.#method;\n }\n if (this.hasBody()) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n this.#method = String(method).toUpperCase();\n }\n /**\n * The headers that will be used when requesting the URI. All\n * keys are lower-case.\n *\n * This object is a copy, so any changes will **NOT** be reflected\n * in the ``FetchRequest``.\n *\n * To set a header entry, use the ``setHeader`` method.\n */\n get headers() {\n const headers = Object.assign({}, this.#headers);\n if (this.#creds) {\n headers[\"authorization\"] = `Basic ${encodeBase64(toUtf8Bytes(this.#creds))}`;\n }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && this.#bodyType) {\n headers[\"content-type\"] = this.#bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return headers;\n }\n /**\n * Get the header for %%key%%, ignoring case.\n */\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n /**\n * Set the header for %%key%% to %%value%%. All values are coerced\n * to a string.\n */\n setHeader(key, value) {\n this.#headers[String(key).toLowerCase()] = String(value);\n }\n /**\n * Clear all headers, resetting all intrinsic headers.\n */\n clearHeaders() {\n this.#headers = {};\n }\n [Symbol.iterator]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n /**\n * The value that will be sent for the ``Authorization`` header.\n *\n * To set the credentials, use the ``setCredentials`` method.\n */\n get credentials() {\n return this.#creds || null;\n }\n /**\n * Sets an ``Authorization`` for %%username%% with %%password%%.\n */\n setCredentials(username, password) {\n assertArgument(!username.match(/:/), \"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n this.#creds = `${username}:${password}`;\n }\n /**\n * Enable and request gzip-encoded responses. The response will\n * automatically be decompressed. //(default: true)//\n */\n get allowGzip() {\n return this.#gzip;\n }\n set allowGzip(value) {\n this.#gzip = !!value;\n }\n /**\n * Allow ``Authentication`` credentials to be sent over insecure\n * channels. //(default: false)//\n */\n get allowInsecureAuthentication() {\n return !!this.#allowInsecure;\n }\n set allowInsecureAuthentication(value) {\n this.#allowInsecure = !!value;\n }\n /**\n * The timeout (in milliseconds) to wait for a complete response.\n * //(default: 5 minutes)//\n */\n get timeout() { return this.#timeout; }\n set timeout(timeout) {\n assertArgument(timeout >= 0, \"timeout must be non-zero\", \"timeout\", timeout);\n this.#timeout = timeout;\n }\n /**\n * This function is called prior to each request, for example\n * during a redirection or retry in case of server throttling.\n *\n * This offers an opportunity to populate headers or update\n * content before sending a request.\n */\n get preflightFunc() {\n return this.#preflight || null;\n }\n set preflightFunc(preflight) {\n this.#preflight = preflight;\n }\n /**\n * This function is called after each response, offering an\n * opportunity to provide client-level throttling or updating\n * response data.\n *\n * Any error thrown in this causes the ``send()`` to throw.\n *\n * To schedule a retry attempt (assuming the maximum retry limit\n * has not been reached), use [[response.throwThrottleError]].\n */\n get processFunc() {\n return this.#process || null;\n }\n set processFunc(process) {\n this.#process = process;\n }\n /**\n * This function is called on each retry attempt.\n */\n get retryFunc() {\n return this.#retry || null;\n }\n set retryFunc(retry) {\n this.#retry = retry;\n }\n /**\n * This function is called to fetch content from HTTP and\n * HTTPS URLs and is platform specific (e.g. nodejs vs\n * browsers).\n *\n * This is by default the currently registered global getUrl\n * function, which can be changed using [[registerGetUrl]].\n * If this has been set, setting is to ``null`` will cause\n * this FetchRequest (and any future clones) to revert back to\n * using the currently registered global getUrl function.\n *\n * Setting this is generally not necessary, but may be useful\n * for developers that wish to intercept requests or to\n * configurege a proxy or other agent.\n */\n get getUrlFunc() {\n return this.#getUrlFunc || defaultGetUrlFunc;\n }\n set getUrlFunc(value) {\n this.#getUrlFunc = value;\n }\n /**\n * Create a new FetchRequest instance with default values.\n *\n * Once created, each property may be set before issuing a\n * ``.send()`` to make the request.\n */\n constructor(url) {\n this.#url = String(url);\n this.#allowInsecure = false;\n this.#gzip = true;\n this.#headers = {};\n this.#method = \"\";\n this.#timeout = 300000;\n this.#throttle = {\n slotInterval: SLOT_INTERVAL,\n maxAttempts: MAX_ATTEMPTS\n };\n this.#getUrlFunc = null;\n }\n toString() {\n return ``;\n }\n /**\n * Update the throttle parameters used to determine maximum\n * attempts and exponential-backoff properties.\n */\n setThrottleParams(params) {\n if (params.slotInterval != null) {\n this.#throttle.slotInterval = params.slotInterval;\n }\n if (params.maxAttempts != null) {\n this.#throttle.maxAttempts = params.maxAttempts;\n }\n }\n async #send(attempt, expires, delay, _request, _response) {\n if (attempt >= this.#throttle.maxAttempts) {\n return _response.makeServerError(\"exceeded maximum retry limit\");\n }\n assert(getTime() <= expires, \"timeout\", \"TIMEOUT\", {\n operation: \"request.send\", reason: \"timeout\", request: _request\n });\n if (delay > 0) {\n await wait(delay);\n }\n let req = this.clone();\n const scheme = (req.url.split(\":\")[0] || \"\").toLowerCase();\n // Process any Gateways\n if (scheme in Gateways) {\n const result = await Gateways[scheme](req.url, checkSignal(_request.#signal));\n if (result instanceof FetchResponse) {\n let response = result;\n if (this.processFunc) {\n checkSignal(_request.#signal);\n try {\n response = await this.processFunc(req, response);\n }\n catch (error) {\n // Something went wrong during processing; throw a 5xx server error\n if (error.throttle == null || typeof (error.stall) !== \"number\") {\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n // Ignore throttling\n }\n }\n return response;\n }\n req = result;\n }\n // We have a preflight function; update the request\n if (this.preflightFunc) {\n req = await this.preflightFunc(req);\n }\n const resp = await this.getUrlFunc(req, checkSignal(_request.#signal));\n let response = new FetchResponse(resp.statusCode, resp.statusMessage, resp.headers, resp.body, _request);\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirect\n try {\n const location = response.headers.location || \"\";\n return req.redirect(location).#send(attempt + 1, expires, 0, _request, response);\n }\n catch (error) { }\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n // Throttle\n if (this.retryFunc == null || (await this.retryFunc(req, response, attempt))) {\n const retryAfter = response.headers[\"retry-after\"];\n let delay = this.#throttle.slotInterval * Math.trunc(Math.random() * Math.pow(2, attempt));\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n delay = parseInt(retryAfter);\n }\n return req.clone().#send(attempt + 1, expires, delay, _request, response);\n }\n }\n if (this.processFunc) {\n checkSignal(_request.#signal);\n try {\n response = await this.processFunc(req, response);\n }\n catch (error) {\n // Something went wrong during processing; throw a 5xx server error\n if (error.throttle == null || typeof (error.stall) !== \"number\") {\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n // Throttle\n let delay = this.#throttle.slotInterval * Math.trunc(Math.random() * Math.pow(2, attempt));\n ;\n if (error.stall >= 0) {\n delay = error.stall;\n }\n return req.clone().#send(attempt + 1, expires, delay, _request, response);\n }\n }\n return response;\n }\n /**\n * Resolves to the response by sending the request.\n */\n send() {\n assert(this.#signal == null, \"request already sent\", \"UNSUPPORTED_OPERATION\", { operation: \"fetchRequest.send\" });\n this.#signal = new FetchCancelSignal(this);\n return this.#send(0, getTime() + this.timeout, 0, this, new FetchResponse(0, \"\", {}, null, this));\n }\n /**\n * Cancels the inflight response, causing a ``CANCELLED``\n * error to be rejected from the [[send]].\n */\n cancel() {\n assert(this.#signal != null, \"request has not been sent\", \"UNSUPPORTED_OPERATION\", { operation: \"fetchRequest.cancel\" });\n const signal = fetchSignals.get(this);\n if (!signal) {\n throw new Error(\"missing signal; should not happen\");\n }\n signal();\n }\n /**\n * Returns a new [[FetchRequest]] that represents the redirection\n * to %%location%%.\n */\n redirect(location) {\n // Redirection; for now we only support absolute locations\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n // Don't allow redirecting:\n // - non-GET requests\n // - downgrading the security (e.g. https => http)\n // - to non-HTTP (or non-HTTPS) protocols [this could be relaxed?]\n assert(this.method === \"GET\" && (current !== \"https\" || target !== \"http\") && location.match(/^https?:/), `unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n req.#headers = Object.assign({}, this.#headers);\n if (this.#body) {\n req.#body = new Uint8Array(this.#body);\n }\n req.#bodyType = this.#bodyType;\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n /**\n * Create a new copy of this request.\n */\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n clone.#method = this.#method;\n // Preserve \"default body\" with type, copying the Uint8Array is present\n if (this.#body) {\n clone.#body = this.#body;\n }\n clone.#bodyType = this.#bodyType;\n // Preserve \"default headers\"\n clone.#headers = Object.assign({}, this.#headers);\n // Credentials is readonly, so we copy internally\n clone.#creds = this.#creds;\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n clone.#preflight = this.#preflight;\n clone.#process = this.#process;\n clone.#retry = this.#retry;\n clone.#throttle = Object.assign({}, this.#throttle);\n clone.#getUrlFunc = this.#getUrlFunc;\n return clone;\n }\n /**\n * Locks all static configuration for gateways and FetchGetUrlFunc\n * registration.\n */\n static lockConfig() {\n locked = true;\n }\n /**\n * Get the current Gateway function for %%scheme%%.\n */\n static getGateway(scheme) {\n return Gateways[scheme.toLowerCase()] || null;\n }\n /**\n * Use the %%func%% when fetching URIs using %%scheme%%.\n *\n * This method affects all requests globally.\n *\n * If [[lockConfig]] has been called, no change is made and this\n * throws.\n */\n static registerGateway(scheme, func) {\n scheme = scheme.toLowerCase();\n if (scheme === \"http\" || scheme === \"https\") {\n throw new Error(`cannot intercept ${scheme}; use registerGetUrl`);\n }\n if (locked) {\n throw new Error(\"gateways locked\");\n }\n Gateways[scheme] = func;\n }\n /**\n * Use %%getUrl%% when fetching URIs over HTTP and HTTPS requests.\n *\n * This method affects all requests globally.\n *\n * If [[lockConfig]] has been called, no change is made and this\n * throws.\n */\n static registerGetUrl(getUrl) {\n if (locked) {\n throw new Error(\"gateways locked\");\n }\n defaultGetUrlFunc = getUrl;\n }\n /**\n * Creates a getUrl function that fetches content from HTTP and\n * HTTPS URLs.\n *\n * The available %%options%% are dependent on the platform\n * implementation of the default getUrl function.\n *\n * This is not generally something that is needed, but is useful\n * when trying to customize simple behaviour when fetching HTTP\n * content.\n */\n static createGetUrlFunc(options) {\n return createGetUrl(options);\n }\n /**\n * Creates a function that can \"fetch\" data URIs.\n *\n * Note that this is automatically done internally to support\n * data URIs, so it is not necessary to register it.\n *\n * This is not generally something that is needed, but may\n * be useful in a wrapper to perfom custom data URI functionality.\n */\n static createDataGateway() {\n return dataGatewayFunc;\n }\n /**\n * Creates a function that will fetch IPFS (unvalidated) from\n * a custom gateway baseUrl.\n *\n * The default IPFS gateway used internally is\n * ``\"https:/\\/gateway.ipfs.io/ipfs/\"``.\n */\n static createIpfsGatewayFunc(baseUrl) {\n return getIpfsGatewayFunc(baseUrl);\n }\n}\n;\n/**\n * The response for a FetchRequest.\n */\nexport class FetchResponse {\n #statusCode;\n #statusMessage;\n #headers;\n #body;\n #request;\n #error;\n toString() {\n return ``;\n }\n /**\n * The response status code.\n */\n get statusCode() { return this.#statusCode; }\n /**\n * The response status message.\n */\n get statusMessage() { return this.#statusMessage; }\n /**\n * The response headers. All keys are lower-case.\n */\n get headers() { return Object.assign({}, this.#headers); }\n /**\n * The response body, or ``null`` if there was no body.\n */\n get body() {\n return (this.#body == null) ? null : new Uint8Array(this.#body);\n }\n /**\n * The response body as a UTF-8 encoded string, or the empty\n * string (i.e. ``\"\"``) if there was no body.\n *\n * An error is thrown if the body is invalid UTF-8 data.\n */\n get bodyText() {\n try {\n return (this.#body == null) ? \"\" : toUtf8String(this.#body);\n }\n catch (error) {\n assert(false, \"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n /**\n * The response body, decoded as JSON.\n *\n * An error is thrown if the body is invalid JSON-encoded data\n * or if there was no body.\n */\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n assert(false, \"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [Symbol.iterator]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n constructor(statusCode, statusMessage, headers, body, request) {\n this.#statusCode = statusCode;\n this.#statusMessage = statusMessage;\n this.#headers = Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = String(headers[k]);\n return accum;\n }, {});\n this.#body = ((body == null) ? null : new Uint8Array(body));\n this.#request = (request || null);\n this.#error = { message: \"\" };\n }\n /**\n * Return a Response with matching headers and body, but with\n * an error status code (i.e. 599) and %%message%% with an\n * optional %%error%%.\n */\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, this.#request || undefined);\n response.#error = { message, error };\n return response;\n }\n /**\n * If called within a [request.processFunc](FetchRequest-processFunc)\n * call, causes the request to retry as if throttled for %%stall%%\n * milliseconds.\n */\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = -1;\n }\n else {\n assertArgument(Number.isInteger(stall) && stall >= 0, \"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n /**\n * Get the header value for %%key%%, ignoring case.\n */\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n /**\n * Returns true if the response has a body.\n */\n hasBody() {\n return (this.#body != null);\n }\n /**\n * The request made for this response.\n */\n get request() { return this.#request; }\n /**\n * Returns true if this response was a success statusCode.\n */\n ok() {\n return (this.#error.message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n /**\n * Throws a ``SERVER_ERROR`` if this response is not ok.\n */\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = this.#error;\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n let requestUrl = null;\n if (this.request) {\n requestUrl = this.request.url;\n }\n let responseBody = null;\n try {\n if (this.#body) {\n responseBody = toUtf8String(this.#body);\n }\n }\n catch (e) { }\n assert(false, message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error,\n info: {\n requestUrl, responseBody,\n responseStatus: `${this.statusCode} ${this.statusMessage}`\n }\n });\n }\n}\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\nfunction wait(delay) {\n return new Promise((resolve) => setTimeout(resolve, delay));\n}\n//# sourceMappingURL=fetch.js.map","/**\n * The **FixedNumber** class permits using values with decimal places,\n * using fixed-pont math.\n *\n * Fixed-point math is still based on integers under-the-hood, but uses an\n * internal offset to store fractional components below, and each operation\n * corrects for this after each operation.\n *\n * @_section: api/utils/fixed-point-math:Fixed-Point Maths [about-fixed-point-math]\n */\nimport { getBytes } from \"./data.js\";\nimport { assert, assertArgument, assertPrivate } from \"./errors.js\";\nimport { getBigInt, getNumber, fromTwos, mask, toBigInt } from \"./maths.js\";\nimport { defineProperties } from \"./properties.js\";\nconst BN_N1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_5 = BigInt(5);\nconst _guard = {};\n// Constant to pull zeros from for multipliers\nlet Zeros = \"0000\";\nwhile (Zeros.length < 80) {\n Zeros += Zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getTens(decimals) {\n let result = Zeros;\n while (result.length < decimals) {\n result += result;\n }\n return BigInt(\"1\" + result.substring(0, decimals));\n}\nfunction checkValue(val, format, safeOp) {\n const width = BigInt(format.width);\n if (format.signed) {\n const limit = (BN_1 << (width - BN_1));\n assert(safeOp == null || (val >= -limit && val < limit), \"overflow\", \"NUMERIC_FAULT\", {\n operation: safeOp, fault: \"overflow\", value: val\n });\n if (val > BN_0) {\n val = fromTwos(mask(val, width), width);\n }\n else {\n val = -fromTwos(mask(-val, width), width);\n }\n }\n else {\n const limit = (BN_1 << width);\n assert(safeOp == null || (val >= 0 && val < limit), \"overflow\", \"NUMERIC_FAULT\", {\n operation: safeOp, fault: \"overflow\", value: val\n });\n val = (((val % limit) + limit) % limit) & (limit - BN_1);\n }\n return val;\n}\nfunction getFormat(value) {\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n // Parse the format string\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n assertArgument(match, \"invalid fixed format\", \"format\", value);\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n // Extract the values from the object\n const v = value;\n const check = (key, type, defaultValue) => {\n if (v[key] == null) {\n return defaultValue;\n }\n assertArgument(typeof (v[key]) === type, \"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, v[key]);\n return v[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n assertArgument((width % 8) === 0, \"invalid FixedNumber width (not byte aligned)\", \"format.width\", width);\n assertArgument(decimals <= 80, \"invalid FixedNumber decimals (too large)\", \"format.decimals\", decimals);\n const name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n return { signed, width, decimals, name };\n}\nfunction toString(val, decimals) {\n let negative = \"\";\n if (val < BN_0) {\n negative = \"-\";\n val *= BN_N1;\n }\n let str = val.toString();\n // No decimal point for whole values\n if (decimals === 0) {\n return (negative + str);\n }\n // Pad out to the whole component (including a whole digit)\n while (str.length <= decimals) {\n str = Zeros + str;\n }\n // Insert the decimal point\n const index = str.length - decimals;\n str = str.substring(0, index) + \".\" + str.substring(index);\n // Trim the whole component (leaving at least one 0)\n while (str[0] === \"0\" && str[1] !== \".\") {\n str = str.substring(1);\n }\n // Trim the decimal component (leaving at least one 0)\n while (str[str.length - 1] === \"0\" && str[str.length - 2] !== \".\") {\n str = str.substring(0, str.length - 1);\n }\n return (negative + str);\n}\n/**\n * A FixedNumber represents a value over its [[FixedFormat]]\n * arithmetic field.\n *\n * A FixedNumber can be used to perform math, losslessly, on\n * values which have decmial places.\n *\n * A FixedNumber has a fixed bit-width to store values in, and stores all\n * values internally by multiplying the value by 10 raised to the power of\n * %%decimals%%.\n *\n * If operations are performed that cause a value to grow too high (close to\n * positive infinity) or too low (close to negative infinity), the value\n * is said to //overflow//.\n *\n * For example, an 8-bit signed value, with 0 decimals may only be within\n * the range ``-128`` to ``127``; so ``-128 - 1`` will overflow and become\n * ``127``. Likewise, ``127 + 1`` will overflow and become ``-127``.\n *\n * Many operation have a normal and //unsafe// variant. The normal variant\n * will throw a [[NumericFaultError]] on any overflow, while the //unsafe//\n * variant will silently allow overflow, corrupting its value value.\n *\n * If operations are performed that cause a value to become too small\n * (close to zero), the value loses precison and is said to //underflow//.\n *\n * For example, an value with 1 decimal place may store a number as small\n * as ``0.1``, but the value of ``0.1 / 2`` is ``0.05``, which cannot fit\n * into 1 decimal place, so underflow occurs which means precision is lost\n * and the value becomes ``0``.\n *\n * Some operations have a normal and //signalling// variant. The normal\n * variant will silently ignore underflow, while the //signalling// variant\n * will thow a [[NumericFaultError]] on underflow.\n */\nexport class FixedNumber {\n /**\n * The specific fixed-point arithmetic field for this value.\n */\n format;\n #format;\n // The actual value (accounting for decimals)\n #val;\n // A base-10 value to multiple values by to maintain the magnitude\n #tens;\n /**\n * This is a property so console.log shows a human-meaningful value.\n *\n * @private\n */\n _value;\n // Use this when changing this file to get some typing info,\n // but then switch to any to mask the internal type\n //constructor(guard: any, value: bigint, format: _FixedFormat) {\n /**\n * @private\n */\n constructor(guard, value, format) {\n assertPrivate(guard, _guard, \"FixedNumber\");\n this.#val = value;\n this.#format = format;\n const _value = toString(value, format.decimals);\n defineProperties(this, { format: format.name, _value });\n this.#tens = getTens(format.decimals);\n }\n /**\n * If true, negative values are permitted, otherwise only\n * positive values and zero are allowed.\n */\n get signed() { return this.#format.signed; }\n /**\n * The number of bits available to store the value.\n */\n get width() { return this.#format.width; }\n /**\n * The number of decimal places in the fixed-point arithment field.\n */\n get decimals() { return this.#format.decimals; }\n /**\n * The value as an integer, based on the smallest unit the\n * [[decimals]] allow.\n */\n get value() { return this.#val; }\n #checkFormat(other) {\n assertArgument(this.format === other.format, \"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n #checkValue(val, safeOp) {\n /*\n const width = BigInt(this.width);\n if (this.signed) {\n const limit = (BN_1 << (width - BN_1));\n assert(safeOp == null || (val >= -limit && val < limit), \"overflow\", \"NUMERIC_FAULT\", {\n operation: safeOp, fault: \"overflow\", value: val\n });\n \n if (val > BN_0) {\n val = fromTwos(mask(val, width), width);\n } else {\n val = -fromTwos(mask(-val, width), width);\n }\n \n } else {\n const masked = mask(val, width);\n assert(safeOp == null || (val >= 0 && val === masked), \"overflow\", \"NUMERIC_FAULT\", {\n operation: safeOp, fault: \"overflow\", value: val\n });\n val = masked;\n }\n */\n val = checkValue(val, this.#format, safeOp);\n return new FixedNumber(_guard, val, this.#format);\n }\n #add(o, safeOp) {\n this.#checkFormat(o);\n return this.#checkValue(this.#val + o.#val, safeOp);\n }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% added\n * to %%other%%, ignoring overflow.\n */\n addUnsafe(other) { return this.#add(other); }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% added\n * to %%other%%. A [[NumericFaultError]] is thrown if overflow\n * occurs.\n */\n add(other) { return this.#add(other, \"add\"); }\n #sub(o, safeOp) {\n this.#checkFormat(o);\n return this.#checkValue(this.#val - o.#val, safeOp);\n }\n /**\n * Returns a new [[FixedNumber]] with the result of %%other%% subtracted\n * from %%this%%, ignoring overflow.\n */\n subUnsafe(other) { return this.#sub(other); }\n /**\n * Returns a new [[FixedNumber]] with the result of %%other%% subtracted\n * from %%this%%. A [[NumericFaultError]] is thrown if overflow\n * occurs.\n */\n sub(other) { return this.#sub(other, \"sub\"); }\n #mul(o, safeOp) {\n this.#checkFormat(o);\n return this.#checkValue((this.#val * o.#val) / this.#tens, safeOp);\n }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% multiplied\n * by %%other%%, ignoring overflow and underflow (precision loss).\n */\n mulUnsafe(other) { return this.#mul(other); }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% multiplied\n * by %%other%%. A [[NumericFaultError]] is thrown if overflow\n * occurs.\n */\n mul(other) { return this.#mul(other, \"mul\"); }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% multiplied\n * by %%other%%. A [[NumericFaultError]] is thrown if overflow\n * occurs or if underflow (precision loss) occurs.\n */\n mulSignal(other) {\n this.#checkFormat(other);\n const value = this.#val * other.#val;\n assert((value % this.#tens) === BN_0, \"precision lost during signalling mul\", \"NUMERIC_FAULT\", {\n operation: \"mulSignal\", fault: \"underflow\", value: this\n });\n return this.#checkValue(value / this.#tens, \"mulSignal\");\n }\n #div(o, safeOp) {\n assert(o.#val !== BN_0, \"division by zero\", \"NUMERIC_FAULT\", {\n operation: \"div\", fault: \"divide-by-zero\", value: this\n });\n this.#checkFormat(o);\n return this.#checkValue((this.#val * this.#tens) / o.#val, safeOp);\n }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% divided\n * by %%other%%, ignoring underflow (precision loss). A\n * [[NumericFaultError]] is thrown if overflow occurs.\n */\n divUnsafe(other) { return this.#div(other); }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% divided\n * by %%other%%, ignoring underflow (precision loss). A\n * [[NumericFaultError]] is thrown if overflow occurs.\n */\n div(other) { return this.#div(other, \"div\"); }\n /**\n * Returns a new [[FixedNumber]] with the result of %%this%% divided\n * by %%other%%. A [[NumericFaultError]] is thrown if underflow\n * (precision loss) occurs.\n */\n divSignal(other) {\n assert(other.#val !== BN_0, \"division by zero\", \"NUMERIC_FAULT\", {\n operation: \"div\", fault: \"divide-by-zero\", value: this\n });\n this.#checkFormat(other);\n const value = (this.#val * this.#tens);\n assert((value % other.#val) === BN_0, \"precision lost during signalling div\", \"NUMERIC_FAULT\", {\n operation: \"divSignal\", fault: \"underflow\", value: this\n });\n return this.#checkValue(value / other.#val, \"divSignal\");\n }\n /**\n * Returns a comparison result between %%this%% and %%other%%.\n *\n * This is suitable for use in sorting, where ``-1`` implies %%this%%\n * is smaller, ``1`` implies %%this%% is larger and ``0`` implies\n * both are equal.\n */\n cmp(other) {\n let a = this.value, b = other.value;\n // Coerce a and b to the same magnitude\n const delta = this.decimals - other.decimals;\n if (delta > 0) {\n b *= getTens(delta);\n }\n else if (delta < 0) {\n a *= getTens(-delta);\n }\n // Comnpare\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n }\n /**\n * Returns true if %%other%% is equal to %%this%%.\n */\n eq(other) { return this.cmp(other) === 0; }\n /**\n * Returns true if %%other%% is less than to %%this%%.\n */\n lt(other) { return this.cmp(other) < 0; }\n /**\n * Returns true if %%other%% is less than or equal to %%this%%.\n */\n lte(other) { return this.cmp(other) <= 0; }\n /**\n * Returns true if %%other%% is greater than to %%this%%.\n */\n gt(other) { return this.cmp(other) > 0; }\n /**\n * Returns true if %%other%% is greater than or equal to %%this%%.\n */\n gte(other) { return this.cmp(other) >= 0; }\n /**\n * Returns a new [[FixedNumber]] which is the largest **integer**\n * that is less than or equal to %%this%%.\n *\n * The decimal component of the result will always be ``0``.\n */\n floor() {\n let val = this.#val;\n if (this.#val < BN_0) {\n val -= this.#tens - BN_1;\n }\n val = (this.#val / this.#tens) * this.#tens;\n return this.#checkValue(val, \"floor\");\n }\n /**\n * Returns a new [[FixedNumber]] which is the smallest **integer**\n * that is greater than or equal to %%this%%.\n *\n * The decimal component of the result will always be ``0``.\n */\n ceiling() {\n let val = this.#val;\n if (this.#val > BN_0) {\n val += this.#tens - BN_1;\n }\n val = (this.#val / this.#tens) * this.#tens;\n return this.#checkValue(val, \"ceiling\");\n }\n /**\n * Returns a new [[FixedNumber]] with the decimal component\n * rounded up on ties at %%decimals%% places.\n */\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // Not enough precision to not already be rounded\n if (decimals >= this.decimals) {\n return this;\n }\n const delta = this.decimals - decimals;\n const bump = BN_5 * getTens(delta - 1);\n let value = this.value + bump;\n const tens = getTens(delta);\n value = (value / tens) * tens;\n checkValue(value, this.#format, \"round\");\n return new FixedNumber(_guard, value, this.#format);\n }\n /**\n * Returns true if %%this%% is equal to ``0``.\n */\n isZero() { return (this.#val === BN_0); }\n /**\n * Returns true if %%this%% is less than ``0``.\n */\n isNegative() { return (this.#val < BN_0); }\n /**\n * Returns the string representation of %%this%%.\n */\n toString() { return this._value; }\n /**\n * Returns a float approximation.\n *\n * Due to IEEE 754 precission (or lack thereof), this function\n * can only return an approximation and most values will contain\n * rounding errors.\n */\n toUnsafeFloat() { return parseFloat(this.toString()); }\n /**\n * Return a new [[FixedNumber]] with the same value but has had\n * its field set to %%format%%.\n *\n * This will throw if the value cannot fit into %%format%%.\n */\n toFormat(format) {\n return FixedNumber.fromString(this.toString(), format);\n }\n /**\n * Creates a new [[FixedNumber]] for %%value%% divided by\n * %%decimal%% places with %%format%%.\n *\n * This will throw a [[NumericFaultError]] if %%value%% (once adjusted\n * for %%decimals%%) cannot fit in %%format%%, either due to overflow\n * or underflow (precision loss).\n */\n static fromValue(_value, _decimals, _format) {\n const decimals = (_decimals == null) ? 0 : getNumber(_decimals);\n const format = getFormat(_format);\n let value = getBigInt(_value, \"value\");\n const delta = decimals - format.decimals;\n if (delta > 0) {\n const tens = getTens(delta);\n assert((value % tens) === BN_0, \"value loses precision for format\", \"NUMERIC_FAULT\", {\n operation: \"fromValue\", fault: \"underflow\", value: _value\n });\n value /= tens;\n }\n else if (delta < 0) {\n value *= getTens(-delta);\n }\n checkValue(value, format, \"fromValue\");\n return new FixedNumber(_guard, value, format);\n }\n /**\n * Creates a new [[FixedNumber]] for %%value%% with %%format%%.\n *\n * This will throw a [[NumericFaultError]] if %%value%% cannot fit\n * in %%format%%, either due to overflow or underflow (precision loss).\n */\n static fromString(_value, _format) {\n const match = _value.match(/^(-?)([0-9]*)\\.?([0-9]*)$/);\n assertArgument(match && (match[2].length + match[3].length) > 0, \"invalid FixedNumber string value\", \"value\", _value);\n const format = getFormat(_format);\n let whole = (match[2] || \"0\"), decimal = (match[3] || \"\");\n // Pad out the decimals\n while (decimal.length < format.decimals) {\n decimal += Zeros;\n }\n // Check precision is safe\n assert(decimal.substring(format.decimals).match(/^0*$/), \"too many decimals for format\", \"NUMERIC_FAULT\", {\n operation: \"fromString\", fault: \"underflow\", value: _value\n });\n // Remove extra padding\n decimal = decimal.substring(0, format.decimals);\n const value = BigInt(match[1] + whole + decimal);\n checkValue(value, format, \"fromString\");\n return new FixedNumber(_guard, value, format);\n }\n /**\n * Creates a new [[FixedNumber]] with the big-endian representation\n * %%value%% with %%format%%.\n *\n * This will throw a [[NumericFaultError]] if %%value%% cannot fit\n * in %%format%% due to overflow.\n */\n static fromBytes(_value, _format) {\n let value = toBigInt(getBytes(_value, \"value\"));\n const format = getFormat(_format);\n if (format.signed) {\n value = fromTwos(value, format.width);\n }\n checkValue(value, format, \"fromBytes\");\n return new FixedNumber(_guard, value, format);\n }\n}\n//const f1 = FixedNumber.fromString(\"12.56\", \"fixed16x2\");\n//const f2 = FixedNumber.fromString(\"0.3\", \"fixed16x2\");\n//console.log(f1.divSignal(f2));\n//const BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"./data.js\";\nimport { assert, assertArgument } from \"./errors.js\";\nimport { getBytes } from \"./data.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n assert(childOffset <= offset + 1 + length, \"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n assert(data.length !== 0, \"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n const checkOffset = (offset) => {\n assert(offset <= data.length, \"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\n/**\n * Decodes %%data%% into the structured data it represents.\n */\nexport function decodeRlp(_data) {\n const data = getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n assertArgument(decoded.consumed === data.length, \"unexpected junk after rlp payload\", \"data\", _data);\n return decoded.result;\n}\n//# sourceMappingURL=rlp-decode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { getBytes } from \"./data.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\n/**\n * Encodes %%object%% as an RLP-encoded [[DataHexString]].\n */\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=rlp-encode.js.map","/**\n * Most interactions with Ethereum requires integer values, which use\n * the smallest magnitude unit.\n *\n * For example, imagine dealing with dollars and cents. Since dollars\n * are divisible, non-integer values are possible, such as ``$10.77``.\n * By using the smallest indivisible unit (i.e. cents), the value can\n * be kept as the integer ``1077``.\n *\n * When receiving decimal input from the user (as a decimal string),\n * the value should be converted to an integer and when showing a user\n * a value, the integer value should be converted to a decimal string.\n *\n * This creates a clear distinction, between values to be used by code\n * (integers) and values used for display logic to users (decimals).\n *\n * The native unit in Ethereum, //ether// is divisible to 18 decimal places,\n * where each individual unit is called a //wei//.\n *\n * @_subsection api/utils:Unit Conversion [about-units]\n */\nimport { assertArgument } from \"./errors.js\";\nimport { FixedNumber } from \"./fixednumber.js\";\nimport { getNumber } from \"./maths.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n/**\n * Converts %%value%% into a //decimal string//, assuming %%unit%% decimal\n * places. The %%unit%% may be the number of decimal places or the name of\n * a unit (e.g. ``\"gwei\"`` for 9 decimal places).\n *\n */\nexport function formatUnits(value, unit) {\n let decimals = 18;\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n assertArgument(index >= 0, \"invalid unit\", \"unit\", unit);\n decimals = 3 * index;\n }\n else if (unit != null) {\n decimals = getNumber(unit, \"unit\");\n }\n return FixedNumber.fromValue(value, decimals, { decimals, width: 512 }).toString();\n}\n/**\n * Converts the //decimal string// %%value%% to a BigInt, assuming\n * %%unit%% decimal places. The %%unit%% may the number of decimal places\n * or the name of a unit (e.g. ``\"gwei\"`` for 9 decimal places).\n */\nexport function parseUnits(value, unit) {\n assertArgument(typeof (value) === \"string\", \"value must be a string\", \"value\", value);\n let decimals = 18;\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n assertArgument(index >= 0, \"invalid unit\", \"unit\", unit);\n decimals = 3 * index;\n }\n else if (unit != null) {\n decimals = getNumber(unit, \"unit\");\n }\n return FixedNumber.fromString(value, { decimals, width: 512 }).value;\n}\n/**\n * Converts %%value%% into a //decimal string// using 18 decimal places.\n */\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\n/**\n * Converts the //decimal string// %%ether%% to a BigInt, using 18\n * decimal places.\n */\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","/**\n * Explain UUID and link to RFC here.\n *\n * @_subsection: api/utils:UUID [about-uuid]\n */\nimport { getBytes, hexlify } from \"./data.js\";\n/**\n * Returns the version 4 [[link-uuid]] for the %%randomBytes%%.\n *\n * @see: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\n */\nexport function uuidV4(randomBytes) {\n const bytes = getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=uuid.js.map","import { defineProperties, concat, getBytesCopy, getNumber, hexlify, toBeArray, toBigInt, toNumber, assert, assertArgument } from \"../../utils/index.js\";\n/**\n * @_ignore:\n */\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nfunction throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n}\n/**\n * A [[Result]] is a sub-class of Array, which allows accessing any\n * of its values either positionally by its index or, if keys are\n * provided by its name.\n *\n * @_docloc: api/abi\n */\nexport class Result extends Array {\n #names;\n /**\n * @private\n */\n constructor(...args) {\n // To properly sub-class Array so the other built-in\n // functions work, the constructor has to behave fairly\n // well. So, in the event we are created via fromItems()\n // we build the read-only Result object we want, but on\n // any other input, we use the default constructor\n // constructor(guard: any, items: Array, keys?: Array);\n const guard = args[0];\n let items = args[1];\n let names = (args[2] || []).slice();\n let wrap = true;\n if (guard !== _guard) {\n items = args;\n names = [];\n wrap = false;\n }\n // Can't just pass in ...items since an array of length 1\n // is a special case in the super.\n super(items.length);\n items.forEach((item, index) => { this[index] = item; });\n // Find all unique keys\n const nameCounts = names.reduce((accum, name) => {\n if (typeof (name) === \"string\") {\n accum.set(name, (accum.get(name) || 0) + 1);\n }\n return accum;\n }, (new Map()));\n // Remove any key thats not unique\n this.#names = Object.freeze(items.map((item, index) => {\n const name = names[index];\n if (name != null && nameCounts.get(name) === 1) {\n return name;\n }\n return null;\n }));\n if (!wrap) {\n return;\n }\n // A wrapped Result is immutable\n Object.freeze(this);\n // Proxy indices and names so we can trap deferred errors\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n // Index accessor\n if (prop.match(/^[0-9]+$/)) {\n const index = getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n throwError(`index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n const value = target[prop];\n if (value instanceof Function) {\n // Make sure functions work with private variables\n // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#no_private_property_forwarding\n return function (...args) {\n return value.apply((this === receiver) ? target : this, args);\n };\n }\n else if (!(prop in target)) {\n // Possible name accessor\n return target.getValue.apply((this === receiver) ? target : this, [prop]);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n /**\n * Returns the Result as a normal Array. If %%deep%%, any children\n * which are Result objects are also converted to a normal Array.\n *\n * This will throw if there are any outstanding deferred\n * errors.\n */\n toArray(deep) {\n const result = [];\n this.forEach((item, index) => {\n if (item instanceof Error) {\n throwError(`index ${index}`, item);\n }\n if (deep && item instanceof Result) {\n item = item.toArray(deep);\n }\n result.push(item);\n });\n return result;\n }\n /**\n * Returns the Result as an Object with each name-value pair. If\n * %%deep%%, any children which are Result objects are also\n * converted to an Object.\n *\n * This will throw if any value is unnamed, or if there are\n * any outstanding deferred errors.\n */\n toObject(deep) {\n return this.#names.reduce((accum, name, index) => {\n assert(name != null, \"value at index ${ index } unnamed\", \"UNSUPPORTED_OPERATION\", {\n operation: \"toObject()\"\n });\n // Add values for names that don't conflict\n if (!(name in accum)) {\n let child = this.getValue(name);\n if (deep && child instanceof Result) {\n child = child.toObject(deep);\n }\n accum[name] = child;\n }\n return accum;\n }, {});\n }\n /**\n * @_ignore\n */\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (start < 0) {\n start += this.length;\n if (start < 0) {\n start = 0;\n }\n }\n if (end == null) {\n end = this.length;\n }\n if (end < 0) {\n end += this.length;\n if (end < 0) {\n end = 0;\n }\n }\n if (end > this.length) {\n end = this.length;\n }\n const result = [], names = [];\n for (let i = start; i < end; i++) {\n result.push(this[i]);\n names.push(this.#names[i]);\n }\n return new Result(_guard, result, names);\n }\n /**\n * @_ignore\n */\n filter(callback, thisArg) {\n const result = [], names = [];\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n if (item instanceof Error) {\n throwError(`index ${i}`, item);\n }\n if (callback.call(thisArg, item, i, this)) {\n result.push(item);\n names.push(this.#names[i]);\n }\n }\n return new Result(_guard, result, names);\n }\n /**\n * @_ignore\n */\n map(callback, thisArg) {\n const result = [];\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n if (item instanceof Error) {\n throwError(`index ${i}`, item);\n }\n result.push(callback.call(thisArg, item, i, this));\n }\n return result;\n }\n /**\n * Returns the value for %%name%%.\n *\n * Since it is possible to have a key whose name conflicts with\n * a method on a [[Result]] or its superclass Array, or any\n * JavaScript keyword, this ensures all named values are still\n * accessible by name.\n */\n getValue(name) {\n const index = this.#names.indexOf(name);\n if (index === -1) {\n return undefined;\n }\n const value = this[index];\n if (value instanceof Error) {\n throwError(`property ${JSON.stringify(name)}`, value.error);\n }\n return value;\n }\n /**\n * Creates a new [[Result]] for %%items%% with each entry\n * also accessible by its corresponding name in %%keys%%.\n */\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n/**\n * Returns all errors found in a [[Result]].\n *\n * Since certain errors encountered when creating a [[Result]] do\n * not impact the ability to continue parsing data, they are\n * deferred until they are actually accessed. Hence a faulty string\n * in an Event that is never used does not impact the program flow.\n *\n * However, sometimes it may be useful to access, identify or\n * validate correctness of a [[Result]].\n *\n * @_docloc api/abi\n */\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toBeArray(value);\n assert(bytes.length <= WordSize, \"value out-of-bounds\", \"BUFFER_OVERRUN\", { buffer: bytes, length: WordSize, offset: bytes.length });\n if (bytes.length !== WordSize) {\n bytes = getBytesCopy(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\n/**\n * @_ignore\n */\nexport class Coder {\n // The coder name:\n // - address, uint256, tuple, array, etc.\n name;\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n type;\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n localName;\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n dynamic;\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n assertArgument(false, message, this.localName, value);\n }\n}\n/**\n * @_ignore\n */\nexport class Writer {\n // An array of WordSize lengthed objects to concatenation\n #data;\n #dataLength;\n constructor() {\n this.#data = [];\n this.#dataLength = 0;\n }\n get data() {\n return concat(this.#data);\n }\n get length() { return this.#dataLength; }\n #writeData(data) {\n this.#data.push(data);\n this.#dataLength += data.length;\n return data.length;\n }\n appendWriter(writer) {\n return this.#writeData(getBytesCopy(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = getBytesCopy(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = getBytesCopy(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return this.#writeData(bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return this.#writeData(getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = this.#data.length;\n this.#data.push(Padding);\n this.#dataLength += WordSize;\n return (value) => {\n this.#data[offset] = getValue(value);\n };\n }\n}\n/**\n * @_ignore\n */\nexport class Reader {\n // Allows incomplete unpadded data to be read; otherwise an error\n // is raised if attempting to overrun the buffer. This is required\n // to deal with an old Solidity bug, in which event data for\n // external (not public thoguh) was tightly packed.\n allowLoose;\n #data;\n #offset;\n #bytesRead;\n #parent;\n #maxInflation;\n constructor(data, allowLoose, maxInflation) {\n defineProperties(this, { allowLoose: !!allowLoose });\n this.#data = getBytesCopy(data);\n this.#bytesRead = 0;\n this.#parent = null;\n this.#maxInflation = (maxInflation != null) ? maxInflation : 1024;\n this.#offset = 0;\n }\n get data() { return hexlify(this.#data); }\n get dataLength() { return this.#data.length; }\n get consumed() { return this.#offset; }\n get bytes() { return new Uint8Array(this.#data); }\n #incrementBytesRead(count) {\n if (this.#parent) {\n return this.#parent.#incrementBytesRead(count);\n }\n this.#bytesRead += count;\n // Check for excessive inflation (see: #4537)\n assert(this.#maxInflation < 1 || this.#bytesRead <= this.#maxInflation * this.dataLength, `compressed ABI data exceeds inflation ratio of ${this.#maxInflation} ( see: https:/\\/github.com/ethers-io/ethers.js/issues/4537 )`, \"BUFFER_OVERRUN\", {\n buffer: getBytesCopy(this.#data), offset: this.#offset,\n length: count, info: {\n bytesRead: this.#bytesRead,\n dataLength: this.dataLength\n }\n });\n }\n #peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (this.#offset + alignedLength > this.#data.length) {\n if (this.allowLoose && loose && this.#offset + length <= this.#data.length) {\n alignedLength = length;\n }\n else {\n assert(false, \"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: getBytesCopy(this.#data),\n length: this.#data.length,\n offset: this.#offset + alignedLength\n });\n }\n }\n return this.#data.slice(this.#offset, this.#offset + alignedLength);\n }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n const reader = new Reader(this.#data.slice(this.#offset + offset), this.allowLoose, this.#maxInflation);\n reader.#parent = this;\n return reader;\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = this.#peekBytes(0, length, !!loose);\n this.#incrementBytesRead(length);\n this.#offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n//# sourceMappingURL=abstract-coder.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","import { hash as assertHash, number as assertNumber } from './_assert.js';\nimport { hmac } from './hmac.js';\nimport { createView, toBytes, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, () => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n//# sourceMappingURL=pbkdf2.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { assert, assertArgument } from \"../utils/index.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nconst crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n assertArgument(false, \"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n assertArgument(algo != null, \"invalid hmac algorithm\", \"algorithm\", _algo);\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n assertArgument(algo != null, \"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n assert(crypto != null, \"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n assertArgument(Number.isInteger(length) && length > 0 && length <= 1024, \"invalid length\", \"length\", length);\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","/**\n * An **HMAC** enables verification that a given key was used\n * to authenticate a payload.\n *\n * See: [[link-wiki-hmac]]\n *\n * @_subsection: api/crypto:HMAC [about-hmac]\n */\nimport { createHmac } from \"./crypto.js\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return createHmac(algorithm, key).update(data).digest();\n};\nlet __computeHmac = _computeHmac;\n/**\n * Return the HMAC for %%data%% using the %%key%% key with the underlying\n * %%algo%% used for compression.\n *\n * @example:\n * key = id(\"some-secret\")\n *\n * // Compute the HMAC\n * computeHmac(\"sha256\", key, \"0x1337\")\n * //_result:\n *\n * // To compute the HMAC of UTF-8 data, the data must be\n * // converted to UTF-8 bytes\n * computeHmac(\"sha256\", key, toUtf8Bytes(\"Hello World\"))\n * //_result:\n *\n */\nexport function computeHmac(algorithm, _key, _data) {\n const key = getBytes(_key, \"key\");\n const data = getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = /* @__PURE__ */ new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = /* @__PURE__ */ Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = /* @__PURE__ */ Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = /* @__PURE__ */ [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = /* @__PURE__ */ new Uint32Array([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr = /* @__PURE__ */ new Uint32Array([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = /* @__PURE__ */ new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = /* @__PURE__ */ wrapConstructor(() => new RIPEMD160());\n//# sourceMappingURL=ripemd160.js.map","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\n/**\n * Compute the cryptographic RIPEMD-160 hash of %%data%%.\n *\n * @_docloc: api/crypto:Hash Functions\n * @returns DataHexstring\n *\n * @example:\n * ripemd160(\"0x\")\n * //_result:\n *\n * ripemd160(\"0x1337\")\n * //_result:\n *\n * ripemd160(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n */\nexport function ripemd160(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","/**\n * A **Password-Based Key-Derivation Function** is designed to create\n * a sequence of bytes suitible as a **key** from a human-rememberable\n * password.\n *\n * @_subsection: api/crypto:Passwords [about-pbkdf]\n */\nimport { pbkdf2Sync } from \"./crypto.js\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\n/**\n * Return the [[link-pbkdf2]] for %%keylen%% bytes for %%password%% using\n * the %%salt%% and using %%iterations%% of %%algo%%.\n *\n * This PBKDF is outdated and should not be used in new projects, but is\n * required to decrypt older files.\n *\n * @example:\n * // The password must be converted to bytes, and it is generally\n * // best practices to ensure the string has been normalized. Many\n * // formats explicitly indicate the normalization form to use.\n * password = \"hello\"\n * passwordBytes = toUtf8Bytes(password, \"NFKC\")\n *\n * salt = id(\"some-salt\")\n *\n * // Compute the PBKDF2\n * pbkdf2(passwordBytes, salt, 1024, 16, \"sha256\")\n * //_result:\n */\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = getBytes(_password, \"password\");\n const salt = getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","/**\n * A **Cryptographically Secure Random Value** is one that has been\n * generated with additional care take to prevent side-channels\n * from allowing others to detect it and prevent others from through\n * coincidence generate the same values.\n *\n * @_subsection: api/crypto:Random Values [about-crypto-random]\n */\nimport { randomBytes as crypto_random } from \"./crypto.js\";\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\n/**\n * Return %%length%% bytes of cryptographically secure random data.\n *\n * @example:\n * randomBytes(8)\n * //_result:\n */\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"randomBytes is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { number as assertNumber } from './_assert.js';\nimport { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, () => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, () => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n//# sourceMappingURL=scrypt.js.map","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { getBytes, hexlify as H } from \"../utils/index.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\n/**\n * The [[link-wiki-scrypt]] uses a memory and cpu hard method of\n * derivation to increase the resource cost to brute-force a password\n * for a given key.\n *\n * This means this algorithm is intentionally slow, and can be tuned to\n * become slower. As computation and memory speed improve over time,\n * increasing the difficulty maintains the cost of an attacker.\n *\n * For example, if a target time of 5 seconds is used, a legitimate user\n * which knows their password requires only 5 seconds to unlock their\n * account. A 6 character password has 68 billion possibilities, which\n * would require an attacker to invest over 10,000 years of CPU time. This\n * is of course a crude example (as password generally aren't random),\n * but demonstrates to value of imposing large costs to decryption.\n *\n * For this reason, if building a UI which involved decrypting or\n * encrypting datsa using scrypt, it is recommended to use a\n * [[ProgressCallback]] (as event short periods can seem lik an eternity\n * if the UI freezes). Including the phrase //\"decrypting\"// in the UI\n * can also help, assuring the user their waiting is for a good reason.\n *\n * @_docloc: api/crypto:Passwords\n *\n * @example:\n * // The password must be converted to bytes, and it is generally\n * // best practices to ensure the string has been normalized. Many\n * // formats explicitly indicate the normalization form to use.\n * password = \"hello\"\n * passwordBytes = toUtf8Bytes(password, \"NFKC\")\n *\n * salt = id(\"some-salt\")\n *\n * // Compute the scrypt\n * scrypt(passwordBytes, salt, 1024, 8, 1, 16)\n * //_result:\n */\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = getBytes(_passwd, \"passwd\");\n const salt = getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\n/**\n * Provides a synchronous variant of [[scrypt]].\n *\n * This will completely lock up and freeze the UI in a browser and will\n * prevent any event loop from progressing. For this reason, it is\n * preferred to use the [async variant](scrypt).\n *\n * @_docloc: api/crypto:Passwords\n *\n * @example:\n * // The password must be converted to bytes, and it is generally\n * // best practices to ensure the string has been normalized. Many\n * // formats explicitly indicate the normalization form to use.\n * password = \"hello\"\n * passwordBytes = toUtf8Bytes(password, \"NFKC\")\n *\n * salt = id(\"some-salt\")\n *\n * // Compute the scrypt\n * scryptSync(passwordBytes, salt, 1024, 8, 1, 16)\n * //_result:\n */\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = getBytes(_passwd, \"passwd\");\n const salt = getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"./crypto.js\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\n/**\n * Compute the cryptographic SHA2-256 hash of %%data%%.\n *\n * @_docloc: api/crypto:Hash Functions\n * @returns DataHexstring\n *\n * @example:\n * sha256(\"0x\")\n * //_result:\n *\n * sha256(\"0x1337\")\n * //_result:\n *\n * sha256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n */\nexport function sha256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\n/**\n * Compute the cryptographic SHA2-512 hash of %%data%%.\n *\n * @_docloc: api/crypto:Hash Functions\n * @returns DataHexstring\n *\n * @example:\n * sha512(\"0x\")\n * //_result:\n *\n * sha512(\"0x1337\")\n * //_result:\n *\n * sha512(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n */\nexport function sha512(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst u8a = (a) => a instanceof Uint8Array;\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (u8a(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\nexport function equalBytes(b1, b2) {\n // We don't care about timing attacks here\n if (b1.length !== b2.length)\n return false;\n for (let i = 0; i < b1.length; i++)\n if (b1[i] !== b2[i])\n return false;\n return true;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n, pos, value) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || val instanceof Uint8Array,\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, numberToBytesBE, numberToBytesLE, bytesToNumberBE, bytesToNumberLE, ensureBytes, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x) => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, precomputesMap, n, transform) {\n // @ts-ignore\n const W = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes } from './utils.js';\nimport { wNAF, validateBasic } from './curve.js';\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts });\n}\n// ASN.1 DER encoding utilities\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n _parseInt(data) {\n const { Err: E } = DER;\n if (data.length < 2 || data[0] !== 0x02)\n throw new E('Invalid signature integer tag');\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len)\n throw new E('Invalid signature integer: wrong length');\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n if (res[0] & 0b10000000)\n throw new E('Invalid signature integer: negative');\n if (res[0] === 0x00 && !(res[1] & 0b10000000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n if (!(data instanceof Uint8Array))\n throw new Error('ui8a expected');\n let l = data.length;\n if (l < 2 || data[0] != 0x30)\n throw new E('Invalid signature tag');\n if (data[1] !== l - 2)\n throw new E('Invalid signature: incorrect length');\n const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));\n const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);\n if (rBytesLeft.length)\n throw new E('Invalid signature: left bytes after parsing');\n return { r, s };\n },\n hexFromSig(sig) {\n // Add leading zero if first byte has negative bit enabled. More details in '_parseInt'\n const slice = (s) => (Number.parseInt(s[0], 16) & 0b1000 ? '00' + s : s);\n const h = (num) => {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n };\n const s = slice(h(sig.s));\n const r = slice(h(sig.r));\n const shl = s.length / 2;\n const rhl = r.length / 2;\n const sl = h(shl);\n const rl = h(rhl);\n return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const toBytes = CURVE.toBytes ||\n ((_c, point, _isCompressed) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return typeof num === 'bigint' && _0n < num && num < CURVE.n;\n }\n function assertGE(num) {\n if (!isWithinCurveOrder(num))\n throw new Error('Expected valid bigint: 0 < bigint < curve.n');\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (key instanceof Uint8Array)\n key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey)\n num = mod.mod(num, n); // disabled by default, enabled for BLS\n assertGE(num); // num in range [1..N-1]\n return num;\n }\n const pointPrecomputes = new Map();\n function assertPrjPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n this.px = px;\n this.py = py;\n this.pz = pz;\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n if (this.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(this.py))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = this.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right))\n throw new Error('bad point: equation left != right');\n if (!this.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, pointPrecomputes, n, (comp) => {\n const toInv = Fp.invertBatch(comp.map((p) => p.pz));\n return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n });\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(n) {\n const I = Point.ZERO;\n if (n === _0n)\n return I;\n assertGE(n); // Will throw on 0\n if (n === _1n)\n return this;\n const { endo } = CURVE;\n if (!endo)\n return wnaf.unsafeLadder(this, n);\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n assertGE(scalar);\n let n = scalar;\n let point, fake; // Fake point is used to const-time mult\n const { endo } = CURVE;\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n const { px: x, py: y, pz: z } = this;\n const is0 = this.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function isValidFieldElement(num) {\n return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE\n }\n function modN(a) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return mod.invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);\n }\n },\n });\n const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = r;\n this.s = s;\n this.recovery = recovery;\n this.assertValidity();\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n assertValidity() {\n // can use assertGE here\n if (!isWithinCurveOrder(this.r))\n throw new Error('r must be 0 < r < CURVE.n');\n if (!isWithinCurveOrder(this.s))\n throw new Error('s must be 0 < s < CURVE.n');\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: () => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point)\n return true;\n return false;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA))\n throw new Error('first arg must be private key');\n if (!isProbPub(publicB))\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('bigint expected');\n if (!(_0n <= num && num < ORDER_MASK))\n throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n const { lowS, prehash } = opts;\n let _sig = undefined;\n let P;\n try {\n if (typeof sg === 'string' || sg instanceof Uint8Array) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n _sig = Signature.fromCompact(sg);\n }\n }\n else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n }\n else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n if (error.message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from './abstract/weierstrass.js';\n// connects noble-curves to noble-hashes\nexport function getHash(hash) {\n return {\n hash,\n hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n//# sourceMappingURL=_shortw_utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nimport { bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE } from './abstract/utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { createCurve } from './_shortw_utils.js';\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\nexport const secp256k1 = createCurve({\n a: BigInt(0),\n b: BigInt(7),\n Fp,\n n: secp256k1N,\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1),\n lowS: true,\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\nconst fe = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1P;\nconst ge = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1N;\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n if (!fe(x))\n throw new Error('bad x: need 0 < x < p'); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n)\n y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return modN(bytesToNumberBE(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ bytesToNumberBE(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(bytesToNumberBE(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n)\n throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(bytesToNumberBE(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = bytesToNumberBE(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!fe(r))\n return false;\n const s = bytesToNumberBE(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!ge(s))\n return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n }\n catch (error) {\n return false;\n }\n}\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fp, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n}))();\nconst htf = /* @__PURE__ */ (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","/**\n * A constant for the zero address.\n *\n * (**i.e.** ``\"0x0000000000000000000000000000000000000000\"``)\n */\nexport const ZeroAddress = \"0x0000000000000000000000000000000000000000\";\n//# sourceMappingURL=addresses.js.map","/**\n * A constant for the zero hash.\n *\n * (**i.e.** ``\"0x0000000000000000000000000000000000000000000000000000000000000000\"``)\n */\nexport const ZeroHash = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n//# sourceMappingURL=hashes.js.map","/**\n * A constant for the order N for the secp256k1 curve.\n *\n * (**i.e.** ``0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n``)\n */\nexport const N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n/**\n * A constant for the number of wei in a single ether.\n *\n * (**i.e.** ``1000000000000000000n``)\n */\nexport const WeiPerEther = BigInt(\"1000000000000000000\");\n/**\n * A constant for the maximum value for a ``uint256``.\n *\n * (**i.e.** ``0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn``)\n */\nexport const MaxUint256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n/**\n * A constant for the minimum value for an ``int256``.\n *\n * (**i.e.** ``-8000000000000000000000000000000000000000000000000000000000000000n``)\n */\nexport const MinInt256 = BigInt(\"0x8000000000000000000000000000000000000000000000000000000000000000\") * BigInt(-1);\n/**\n * A constant for the maximum value for an ``int256``.\n *\n * (**i.e.** ``0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn``)\n */\nexport const MaxInt256 = BigInt(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//# sourceMappingURL=numbers.js.map","// NFKC (composed) // (decomposed)\n/**\n * A constant for the ether symbol (normalized using NFKC).\n *\n * (**i.e.** ``\"\\\\u039e\"``)\n */\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n/**\n * A constant for the [[link-eip-191]] personal message prefix.\n *\n * (**i.e.** ``\"\\\\x19Ethereum Signed Message:\\\\n\"``)\n */\nexport const MessagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n//# sourceMappingURL=strings.js.map","import { ZeroHash } from \"../constants/index.js\";\nimport { concat, dataLength, getBigInt, getBytes, getNumber, hexlify, toBeArray, isHexString, zeroPadValue, assertArgument, assertPrivate } from \"../utils/index.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nfunction toUint256(value) {\n return zeroPadValue(toBeArray(value), 32);\n}\n/**\n * A Signature @TODO\n *\n *\n * @_docloc: api/crypto:Signing\n */\nexport class Signature {\n #r;\n #s;\n #v;\n #networkV;\n /**\n * The ``r`` value for a signautre.\n *\n * This represents the ``x`` coordinate of a \"reference\" or\n * challenge point, from which the ``y`` can be computed.\n */\n get r() { return this.#r; }\n set r(value) {\n assertArgument(dataLength(value) === 32, \"invalid r\", \"value\", value);\n this.#r = hexlify(value);\n }\n /**\n * The ``s`` value for a signature.\n */\n get s() { return this.#s; }\n set s(_value) {\n assertArgument(dataLength(_value) === 32, \"invalid s\", \"value\", _value);\n const value = hexlify(_value);\n assertArgument(parseInt(value.substring(0, 3)) < 8, \"non-canonical s\", \"value\", value);\n this.#s = value;\n }\n /**\n * The ``v`` value for a signature.\n *\n * Since a given ``x`` value for ``r`` has two possible values for\n * its correspondin ``y``, the ``v`` indicates which of the two ``y``\n * values to use.\n *\n * It is normalized to the values ``27`` or ``28`` for legacy\n * purposes.\n */\n get v() { return this.#v; }\n set v(value) {\n const v = getNumber(value, \"value\");\n assertArgument(v === 27 || v === 28, \"invalid v\", \"v\", value);\n this.#v = v;\n }\n /**\n * The EIP-155 ``v`` for legacy transactions. For non-legacy\n * transactions, this value is ``null``.\n */\n get networkV() { return this.#networkV; }\n /**\n * The chain ID for EIP-155 legacy transactions. For non-legacy\n * transactions, this value is ``null``.\n */\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n /**\n * The ``yParity`` for the signature.\n *\n * See ``v`` for more details on how this value is used.\n */\n get yParity() {\n return (this.v === 27) ? 0 : 1;\n }\n /**\n * The [[link-eip-2098]] compact representation of the ``yParity``\n * and ``s`` compacted into a single ``bytes32``.\n */\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n /**\n * The [[link-eip-2098]] compact representation.\n */\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n /**\n * The serialized representation.\n */\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n /**\n * @private\n */\n constructor(guard, r, s, v) {\n assertPrivate(guard, _guard, \"Signature\");\n this.#r = r;\n this.#s = s;\n this.#v = v;\n this.#networkV = null;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n /**\n * Returns a new identical [[Signature]].\n */\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n clone.#networkV = this.networkV;\n }\n return clone;\n }\n /**\n * Returns a representation that is compatible with ``JSON.stringify``.\n */\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n /**\n * Compute the chain ID from the ``v`` in a legacy EIP-155 transactions.\n *\n * @example:\n * Signature.getChainId(45)\n * //_result:\n *\n * Signature.getChainId(46)\n * //_result:\n */\n static getChainId(v) {\n const bv = getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n assertArgument(bv >= BN_35, \"invalid EIP-155 v\", \"v\", v);\n return (bv - BN_35) / BN_2;\n }\n /**\n * Compute the ``v`` for a chain ID for a legacy EIP-155 transactions.\n *\n * Legacy transactions which use [[link-eip-155]] hijack the ``v``\n * property to include the chain ID.\n *\n * @example:\n * Signature.getChainIdV(5, 27)\n * //_result:\n *\n * Signature.getChainIdV(5, 28)\n * //_result:\n *\n */\n static getChainIdV(chainId, v) {\n return (getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n /**\n * Compute the normalized legacy transaction ``v`` from a ``yParirty``,\n * a legacy transaction ``v`` or a legacy [[link-eip-155]] transaction.\n *\n * @example:\n * // The values 0 and 1 imply v is actually yParity\n * Signature.getNormalizedV(0)\n * //_result:\n *\n * // Legacy non-EIP-1559 transaction (i.e. 27 or 28)\n * Signature.getNormalizedV(27)\n * //_result:\n *\n * // Legacy EIP-155 transaction (i.e. >= 35)\n * Signature.getNormalizedV(46)\n * //_result:\n *\n * // Invalid values throw\n * Signature.getNormalizedV(5)\n * //_error:\n */\n static getNormalizedV(v) {\n const bv = getBigInt(v);\n if (bv === BN_0 || bv === BN_27) {\n return 27;\n }\n if (bv === BN_1 || bv === BN_28) {\n return 28;\n }\n assertArgument(bv >= BN_35, \"invalid v\", \"v\", v);\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n /**\n * Creates a new [[Signature]].\n *\n * If no %%sig%% is provided, a new [[Signature]] is created\n * with default values.\n *\n * If %%sig%% is a string, it is parsed.\n */\n static from(sig) {\n function assertError(check, message) {\n assertArgument(check, message, \"signature\", sig);\n }\n ;\n if (sig == null) {\n return new Signature(_guard, ZeroHash, ZeroHash, 27);\n }\n if (typeof (sig) === \"string\") {\n const bytes = getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (bytes.length === 65) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n assertError((s[0] & 0x80) === 0, \"non-canonical s\");\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n assertError(false, \"invalid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const _r = sig.r;\n assertError(_r != null, \"missing r\");\n const r = toUint256(_r);\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n return toUint256(s);\n }\n if (yParityAndS != null) {\n assertError(isHexString(yParityAndS, 32), \"invalid yParityAndS\");\n const bytes = getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n assertError(false, \"missing s\");\n })(sig.s, sig.yParityAndS);\n assertError((getBytes(s)[0] & 0x80) == 0, \"non-canonical s\");\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n assertError(isHexString(yParityAndS, 32), \"invalid yParityAndS\");\n return { v: ((getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (getNumber(yParity, \"sig.yParity\")) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n assertError(false, \"invalid yParity\");\n }\n assertError(false, \"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n result.#networkV = networkV;\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n assertError(sig.yParity == null || getNumber(sig.yParity, \"sig.yParity\") === result.yParity, \"yParity mismatch\");\n assertError(sig.yParityAndS == null || sig.yParityAndS === result.yParityAndS, \"yParityAndS mismatch\");\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/**\n * Add details about signing here.\n *\n * @_subsection: api/crypto:Signing [about-signing]\n */\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { concat, dataLength, getBytes, getBytesCopy, hexlify, toBeHex, assertArgument } from \"../utils/index.js\";\nimport { Signature } from \"./signature.js\";\n/**\n * A **SigningKey** provides high-level access to the elliptic curve\n * cryptography (ECC) operations and key management.\n */\nexport class SigningKey {\n #privateKey;\n /**\n * Creates a new **SigningKey** for %%privateKey%%.\n */\n constructor(privateKey) {\n assertArgument(dataLength(privateKey) === 32, \"invalid private key\", \"privateKey\", \"[REDACTED]\");\n this.#privateKey = hexlify(privateKey);\n }\n /**\n * The private key.\n */\n get privateKey() { return this.#privateKey; }\n /**\n * The uncompressed public key.\n *\n * This will always begin with the prefix ``0x04`` and be 132\n * characters long (the ``0x`` prefix and 130 hexadecimal nibbles).\n */\n get publicKey() { return SigningKey.computePublicKey(this.#privateKey); }\n /**\n * The compressed public key.\n *\n * This will always begin with either the prefix ``0x02`` or ``0x03``\n * and be 68 characters long (the ``0x`` prefix and 33 hexadecimal\n * nibbles)\n */\n get compressedPublicKey() { return SigningKey.computePublicKey(this.#privateKey, true); }\n /**\n * Return the signature of the signed %%digest%%.\n */\n sign(digest) {\n assertArgument(dataLength(digest) === 32, \"invalid digest length\", \"digest\", digest);\n const sig = secp256k1.sign(getBytesCopy(digest), getBytesCopy(this.#privateKey), {\n lowS: true\n });\n return Signature.from({\n r: toBeHex(sig.r, 32),\n s: toBeHex(sig.s, 32),\n v: (sig.recovery ? 0x1c : 0x1b)\n });\n }\n /**\n * Returns the [[link-wiki-ecdh]] shared secret between this\n * private key and the %%other%% key.\n *\n * The %%other%% key may be any type of key, a raw public key,\n * a compressed/uncompressed pubic key or aprivate key.\n *\n * Best practice is usually to use a cryptographic hash on the\n * returned value before using it as a symetric secret.\n *\n * @example:\n * sign1 = new SigningKey(id(\"some-secret-1\"))\n * sign2 = new SigningKey(id(\"some-secret-2\"))\n *\n * // Notice that privA.computeSharedSecret(pubB)...\n * sign1.computeSharedSecret(sign2.publicKey)\n * //_result:\n *\n * // ...is equal to privB.computeSharedSecret(pubA).\n * sign2.computeSharedSecret(sign1.publicKey)\n * //_result:\n */\n computeSharedSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(getBytesCopy(this.#privateKey), getBytes(pubKey), false));\n }\n /**\n * Compute the public key for %%key%%, optionally %%compressed%%.\n *\n * The %%key%% may be any type of key, a raw public key, a\n * compressed/uncompressed public key or private key.\n *\n * @example:\n * sign = new SigningKey(id(\"some-secret\"));\n *\n * // Compute the uncompressed public key for a private key\n * SigningKey.computePublicKey(sign.privateKey)\n * //_result:\n *\n * // Compute the compressed public key for a private key\n * SigningKey.computePublicKey(sign.privateKey, true)\n * //_result:\n *\n * // Compute the uncompressed public key\n * SigningKey.computePublicKey(sign.publicKey, false);\n * //_result:\n *\n * // Compute the Compressed a public key\n * SigningKey.computePublicKey(sign.publicKey, true);\n * //_result:\n */\n static computePublicKey(key, compressed) {\n let bytes = getBytes(key, \"key\");\n // private key\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n // raw public key; use uncompressed key with 0x04 prefix\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.ProjectivePoint.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n /**\n * Returns the public key for the private key which produced the\n * %%signature%% for the given %%digest%%.\n *\n * @example:\n * key = new SigningKey(id(\"some-secret\"))\n * digest = id(\"hello world\")\n * sig = key.sign(digest)\n *\n * // Notice the signer public key...\n * key.publicKey\n * //_result:\n *\n * // ...is equal to the recovered public key\n * SigningKey.recoverPublicKey(digest, sig)\n * //_result:\n *\n */\n static recoverPublicKey(digest, signature) {\n assertArgument(dataLength(digest) === 32, \"invalid digest length\", \"digest\", digest);\n const sig = Signature.from(signature);\n let secpSig = secp256k1.Signature.fromCompact(getBytesCopy(concat([sig.r, sig.s])));\n secpSig = secpSig.addRecoveryBit(sig.yParity);\n const pubKey = secpSig.recoverPublicKey(getBytesCopy(digest));\n assertArgument(pubKey != null, \"invalid signautre for digest\", \"signature\", signature);\n return \"0x\" + pubKey.toHex(false);\n }\n /**\n * Returns the point resulting from adding the ellipic curve points\n * %%p0%% and %%p1%%.\n *\n * This is not a common function most developers should require, but\n * can be useful for certain privacy-specific techniques.\n *\n * For example, it is used by [[HDNodeWallet]] to compute child\n * addresses from parent public keys and chain codes.\n */\n static addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.ProjectivePoint.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.ProjectivePoint.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n//# sourceMappingURL=signing-key.js.map","/**\n * A fundamental building block of Ethereum is the underlying\n * cryptographic primitives.\n *\n * @_section: api/crypto:Cryptographic Functions [about-crypto]\n */\nnull;\n// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport { SigningKey } from \"./signing-key.js\";\nexport { Signature } from \"./signature.js\";\n/**\n * Once called, prevents any future change to the underlying cryptographic\n * primitives using the ``.register`` feature for hooks.\n */\nfunction lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n randomBytes.lock();\n}\nexport { lock };\n//# sourceMappingURL=index.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { concat, dataSlice, getBigInt, getBytes, encodeRlp, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\n/**\n * Returns the address that would result from a ``CREATE`` for %%tx%%.\n *\n * This can be used to compute the address a contract will be\n * deployed to by an EOA when sending a deployment transaction (i.e.\n * when the ``to`` address is ``null``).\n *\n * This can also be used to compute the address a contract will be\n * deployed to by a contract, by using the contract's address as the\n * ``to`` and the contract's nonce.\n *\n * @example\n * from = \"0x8ba1f109551bD432803012645Ac136ddd64DBA72\";\n * nonce = 5;\n *\n * getCreateAddress({ from, nonce });\n * //_result:\n */\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\n/**\n * Returns the address that would result from a ``CREATE2`` operation\n * with the given %%from%%, %%salt%% and %%initCodeHash%%.\n *\n * To compute the %%initCodeHash%% from a contract's init code, use\n * the [[keccak256]] function.\n *\n * For a quick overview and example of ``CREATE2``, see [[link-ricmoo-wisps]].\n *\n * @example\n * // The address of the contract\n * from = \"0x8ba1f109551bD432803012645Ac136ddd64DBA72\"\n *\n * // The salt\n * salt = id(\"HelloWorld\")\n *\n * // The hash of the initCode\n * initCode = \"0x6394198df16000526103ff60206004601c335afa6040516060f3\";\n * initCodeHash = keccak256(initCode)\n *\n * getCreate2Address(from, salt, initCodeHash)\n * //_result:\n */\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = getBytes(_salt, \"salt\");\n const initCodeHash = getBytes(_initCodeHash, \"initCodeHash\");\n assertArgument(salt.length === 32, \"salt must be 32 bytes\", \"salt\", _salt);\n assertArgument(initCodeHash.length === 32, \"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { assert, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n/**\n * Returns true if %%value%% is an object which implements the\n * [[Addressable]] interface.\n *\n * @example:\n * // Wallets and AbstractSigner sub-classes\n * isAddressable(Wallet.createRandom())\n * //_result:\n *\n * // Contracts\n * contract = new Contract(\"dai.tokens.ethers.eth\", [ ], provider)\n * isAddressable(contract)\n * //_result:\n */\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\n/**\n * Returns true if %%value%% is a valid address.\n *\n * @example:\n * // Valid address\n * isAddress(\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Valid ICAP address\n * isAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\")\n * //_result:\n *\n * // Invalid checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBa72\")\n * //_result:\n *\n * // Invalid ICAP checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Not an address (an ENS name requires a provided and an\n * // asynchronous API to access)\n * isAddress(\"ricmoo.eth\")\n * //_result:\n */\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\nasync function checkAddress(target, promise) {\n const result = await promise;\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n assert(typeof (target) !== \"string\", \"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n assertArgument(false, \"invalid AddressLike value; did not resolve to a value address\", \"target\", target);\n }\n return getAddress(result);\n}\n/**\n * Resolves to an address for the %%target%%, which may be any\n * supported address type, an [[Addressable]] or a Promise which\n * resolves to an address.\n *\n * If an ENS name is provided, but that name has not been correctly\n * configured a [[UnconfiguredNameError]] is thrown.\n *\n * @example:\n * addr = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n *\n * // Addresses are return synchronously\n * resolveAddress(addr, provider)\n * //_result:\n *\n * // Address promises are resolved asynchronously\n * resolveAddress(Promise.resolve(addr))\n * //_result:\n *\n * // ENS names are resolved asynchronously\n * resolveAddress(\"dai.tokens.ethers.eth\", provider)\n * //_result:\n *\n * // Addressable objects are resolved asynchronously\n * contract = new Contract(addr, [ ])\n * resolveAddress(contract, provider)\n * //_result:\n *\n * // Unconfigured ENS names reject\n * resolveAddress(\"nothing-here.ricmoo.eth\", provider)\n * //_error:\n *\n * // ENS names require a NameResolver object passed in\n * // (notice the provider was omitted)\n * resolveAddress(\"nothing-here.ricmoo.eth\")\n * //_error:\n */\nexport function resolveAddress(target, resolver) {\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n assert(resolver != null, \"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"resolveName\" });\n return checkAddress(target, resolver.resolveName(target));\n }\n else if (isAddressable(target)) {\n return checkAddress(target, target.getAddress());\n }\n else if (target && typeof (target.then) === \"function\") {\n return checkAddress(target, target);\n }\n assertArgument(false, \"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","/**\n * A Typed object allows a value to have its type explicitly\n * specified.\n *\n * For example, in Solidity, the value ``45`` could represent a\n * ``uint8`` or a ``uint256``. The value ``0x1234`` could represent\n * a ``bytes2`` or ``bytes``.\n *\n * Since JavaScript has no meaningful way to explicitly inform any\n * APIs which what the type is, this allows transparent interoperation\n * with Soldity.\n *\n * @_subsection: api/abi:Typed Values\n */\nimport { assertPrivate, defineProperties } from \"../utils/index.js\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\n/**\n * The **Typed** class to wrap values providing explicit type information.\n */\nexport class Typed {\n /**\n * The type, as a Solidity-compatible type.\n */\n type;\n /**\n * The actual value.\n */\n value;\n #options;\n /**\n * @_ignore:\n */\n _typedSymbol;\n /**\n * @_ignore:\n */\n constructor(gaurd, type, value, options) {\n if (options == null) {\n options = null;\n }\n assertPrivate(_gaurd, gaurd, \"Typed\");\n defineProperties(this, { _typedSymbol, type, value });\n this.#options = options;\n // Check the value is valid\n this.format();\n }\n /**\n * Format the type as a Human-Readable type.\n */\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n /**\n * The default value returned by this type.\n */\n defaultValue() {\n return 0;\n }\n /**\n * The minimum value for numeric types.\n */\n minValue() {\n return 0;\n }\n /**\n * The maximum value for numeric types.\n */\n maxValue() {\n return 0;\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedBigInt]].\n */\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedData]].\n */\n isData() {\n return this.type.startsWith(\"bytes\");\n }\n /**\n * Returns ``true`` and provides a type guard is this is a [[TypedString]].\n */\n isString() {\n return (this.type === \"string\");\n }\n /**\n * Returns the tuple name, if this is a tuple. Throws otherwise.\n */\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return this.#options;\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n /**\n * Returns the length of the array type or ``-1`` if it is dynamic.\n *\n * Throws if the type is not an array.\n */\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (this.#options === true) {\n return -1;\n }\n if (this.#options === false) {\n return (this.value).length;\n }\n return null;\n }\n /**\n * Returns a new **Typed** of %%type%% with the %%value%%.\n */\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n /**\n * Return a new ``uint8`` type for %%v%%.\n */\n static uint8(v) { return n(v, 8); }\n /**\n * Return a new ``uint16`` type for %%v%%.\n */\n static uint16(v) { return n(v, 16); }\n /**\n * Return a new ``uint24`` type for %%v%%.\n */\n static uint24(v) { return n(v, 24); }\n /**\n * Return a new ``uint32`` type for %%v%%.\n */\n static uint32(v) { return n(v, 32); }\n /**\n * Return a new ``uint40`` type for %%v%%.\n */\n static uint40(v) { return n(v, 40); }\n /**\n * Return a new ``uint48`` type for %%v%%.\n */\n static uint48(v) { return n(v, 48); }\n /**\n * Return a new ``uint56`` type for %%v%%.\n */\n static uint56(v) { return n(v, 56); }\n /**\n * Return a new ``uint64`` type for %%v%%.\n */\n static uint64(v) { return n(v, 64); }\n /**\n * Return a new ``uint72`` type for %%v%%.\n */\n static uint72(v) { return n(v, 72); }\n /**\n * Return a new ``uint80`` type for %%v%%.\n */\n static uint80(v) { return n(v, 80); }\n /**\n * Return a new ``uint88`` type for %%v%%.\n */\n static uint88(v) { return n(v, 88); }\n /**\n * Return a new ``uint96`` type for %%v%%.\n */\n static uint96(v) { return n(v, 96); }\n /**\n * Return a new ``uint104`` type for %%v%%.\n */\n static uint104(v) { return n(v, 104); }\n /**\n * Return a new ``uint112`` type for %%v%%.\n */\n static uint112(v) { return n(v, 112); }\n /**\n * Return a new ``uint120`` type for %%v%%.\n */\n static uint120(v) { return n(v, 120); }\n /**\n * Return a new ``uint128`` type for %%v%%.\n */\n static uint128(v) { return n(v, 128); }\n /**\n * Return a new ``uint136`` type for %%v%%.\n */\n static uint136(v) { return n(v, 136); }\n /**\n * Return a new ``uint144`` type for %%v%%.\n */\n static uint144(v) { return n(v, 144); }\n /**\n * Return a new ``uint152`` type for %%v%%.\n */\n static uint152(v) { return n(v, 152); }\n /**\n * Return a new ``uint160`` type for %%v%%.\n */\n static uint160(v) { return n(v, 160); }\n /**\n * Return a new ``uint168`` type for %%v%%.\n */\n static uint168(v) { return n(v, 168); }\n /**\n * Return a new ``uint176`` type for %%v%%.\n */\n static uint176(v) { return n(v, 176); }\n /**\n * Return a new ``uint184`` type for %%v%%.\n */\n static uint184(v) { return n(v, 184); }\n /**\n * Return a new ``uint192`` type for %%v%%.\n */\n static uint192(v) { return n(v, 192); }\n /**\n * Return a new ``uint200`` type for %%v%%.\n */\n static uint200(v) { return n(v, 200); }\n /**\n * Return a new ``uint208`` type for %%v%%.\n */\n static uint208(v) { return n(v, 208); }\n /**\n * Return a new ``uint216`` type for %%v%%.\n */\n static uint216(v) { return n(v, 216); }\n /**\n * Return a new ``uint224`` type for %%v%%.\n */\n static uint224(v) { return n(v, 224); }\n /**\n * Return a new ``uint232`` type for %%v%%.\n */\n static uint232(v) { return n(v, 232); }\n /**\n * Return a new ``uint240`` type for %%v%%.\n */\n static uint240(v) { return n(v, 240); }\n /**\n * Return a new ``uint248`` type for %%v%%.\n */\n static uint248(v) { return n(v, 248); }\n /**\n * Return a new ``uint256`` type for %%v%%.\n */\n static uint256(v) { return n(v, 256); }\n /**\n * Return a new ``uint256`` type for %%v%%.\n */\n static uint(v) { return n(v, 256); }\n /**\n * Return a new ``int8`` type for %%v%%.\n */\n static int8(v) { return n(v, -8); }\n /**\n * Return a new ``int16`` type for %%v%%.\n */\n static int16(v) { return n(v, -16); }\n /**\n * Return a new ``int24`` type for %%v%%.\n */\n static int24(v) { return n(v, -24); }\n /**\n * Return a new ``int32`` type for %%v%%.\n */\n static int32(v) { return n(v, -32); }\n /**\n * Return a new ``int40`` type for %%v%%.\n */\n static int40(v) { return n(v, -40); }\n /**\n * Return a new ``int48`` type for %%v%%.\n */\n static int48(v) { return n(v, -48); }\n /**\n * Return a new ``int56`` type for %%v%%.\n */\n static int56(v) { return n(v, -56); }\n /**\n * Return a new ``int64`` type for %%v%%.\n */\n static int64(v) { return n(v, -64); }\n /**\n * Return a new ``int72`` type for %%v%%.\n */\n static int72(v) { return n(v, -72); }\n /**\n * Return a new ``int80`` type for %%v%%.\n */\n static int80(v) { return n(v, -80); }\n /**\n * Return a new ``int88`` type for %%v%%.\n */\n static int88(v) { return n(v, -88); }\n /**\n * Return a new ``int96`` type for %%v%%.\n */\n static int96(v) { return n(v, -96); }\n /**\n * Return a new ``int104`` type for %%v%%.\n */\n static int104(v) { return n(v, -104); }\n /**\n * Return a new ``int112`` type for %%v%%.\n */\n static int112(v) { return n(v, -112); }\n /**\n * Return a new ``int120`` type for %%v%%.\n */\n static int120(v) { return n(v, -120); }\n /**\n * Return a new ``int128`` type for %%v%%.\n */\n static int128(v) { return n(v, -128); }\n /**\n * Return a new ``int136`` type for %%v%%.\n */\n static int136(v) { return n(v, -136); }\n /**\n * Return a new ``int144`` type for %%v%%.\n */\n static int144(v) { return n(v, -144); }\n /**\n * Return a new ``int52`` type for %%v%%.\n */\n static int152(v) { return n(v, -152); }\n /**\n * Return a new ``int160`` type for %%v%%.\n */\n static int160(v) { return n(v, -160); }\n /**\n * Return a new ``int168`` type for %%v%%.\n */\n static int168(v) { return n(v, -168); }\n /**\n * Return a new ``int176`` type for %%v%%.\n */\n static int176(v) { return n(v, -176); }\n /**\n * Return a new ``int184`` type for %%v%%.\n */\n static int184(v) { return n(v, -184); }\n /**\n * Return a new ``int92`` type for %%v%%.\n */\n static int192(v) { return n(v, -192); }\n /**\n * Return a new ``int200`` type for %%v%%.\n */\n static int200(v) { return n(v, -200); }\n /**\n * Return a new ``int208`` type for %%v%%.\n */\n static int208(v) { return n(v, -208); }\n /**\n * Return a new ``int216`` type for %%v%%.\n */\n static int216(v) { return n(v, -216); }\n /**\n * Return a new ``int224`` type for %%v%%.\n */\n static int224(v) { return n(v, -224); }\n /**\n * Return a new ``int232`` type for %%v%%.\n */\n static int232(v) { return n(v, -232); }\n /**\n * Return a new ``int240`` type for %%v%%.\n */\n static int240(v) { return n(v, -240); }\n /**\n * Return a new ``int248`` type for %%v%%.\n */\n static int248(v) { return n(v, -248); }\n /**\n * Return a new ``int256`` type for %%v%%.\n */\n static int256(v) { return n(v, -256); }\n /**\n * Return a new ``int256`` type for %%v%%.\n */\n static int(v) { return n(v, -256); }\n /**\n * Return a new ``bytes1`` type for %%v%%.\n */\n static bytes1(v) { return b(v, 1); }\n /**\n * Return a new ``bytes2`` type for %%v%%.\n */\n static bytes2(v) { return b(v, 2); }\n /**\n * Return a new ``bytes3`` type for %%v%%.\n */\n static bytes3(v) { return b(v, 3); }\n /**\n * Return a new ``bytes4`` type for %%v%%.\n */\n static bytes4(v) { return b(v, 4); }\n /**\n * Return a new ``bytes5`` type for %%v%%.\n */\n static bytes5(v) { return b(v, 5); }\n /**\n * Return a new ``bytes6`` type for %%v%%.\n */\n static bytes6(v) { return b(v, 6); }\n /**\n * Return a new ``bytes7`` type for %%v%%.\n */\n static bytes7(v) { return b(v, 7); }\n /**\n * Return a new ``bytes8`` type for %%v%%.\n */\n static bytes8(v) { return b(v, 8); }\n /**\n * Return a new ``bytes9`` type for %%v%%.\n */\n static bytes9(v) { return b(v, 9); }\n /**\n * Return a new ``bytes10`` type for %%v%%.\n */\n static bytes10(v) { return b(v, 10); }\n /**\n * Return a new ``bytes11`` type for %%v%%.\n */\n static bytes11(v) { return b(v, 11); }\n /**\n * Return a new ``bytes12`` type for %%v%%.\n */\n static bytes12(v) { return b(v, 12); }\n /**\n * Return a new ``bytes13`` type for %%v%%.\n */\n static bytes13(v) { return b(v, 13); }\n /**\n * Return a new ``bytes14`` type for %%v%%.\n */\n static bytes14(v) { return b(v, 14); }\n /**\n * Return a new ``bytes15`` type for %%v%%.\n */\n static bytes15(v) { return b(v, 15); }\n /**\n * Return a new ``bytes16`` type for %%v%%.\n */\n static bytes16(v) { return b(v, 16); }\n /**\n * Return a new ``bytes17`` type for %%v%%.\n */\n static bytes17(v) { return b(v, 17); }\n /**\n * Return a new ``bytes18`` type for %%v%%.\n */\n static bytes18(v) { return b(v, 18); }\n /**\n * Return a new ``bytes19`` type for %%v%%.\n */\n static bytes19(v) { return b(v, 19); }\n /**\n * Return a new ``bytes20`` type for %%v%%.\n */\n static bytes20(v) { return b(v, 20); }\n /**\n * Return a new ``bytes21`` type for %%v%%.\n */\n static bytes21(v) { return b(v, 21); }\n /**\n * Return a new ``bytes22`` type for %%v%%.\n */\n static bytes22(v) { return b(v, 22); }\n /**\n * Return a new ``bytes23`` type for %%v%%.\n */\n static bytes23(v) { return b(v, 23); }\n /**\n * Return a new ``bytes24`` type for %%v%%.\n */\n static bytes24(v) { return b(v, 24); }\n /**\n * Return a new ``bytes25`` type for %%v%%.\n */\n static bytes25(v) { return b(v, 25); }\n /**\n * Return a new ``bytes26`` type for %%v%%.\n */\n static bytes26(v) { return b(v, 26); }\n /**\n * Return a new ``bytes27`` type for %%v%%.\n */\n static bytes27(v) { return b(v, 27); }\n /**\n * Return a new ``bytes28`` type for %%v%%.\n */\n static bytes28(v) { return b(v, 28); }\n /**\n * Return a new ``bytes29`` type for %%v%%.\n */\n static bytes29(v) { return b(v, 29); }\n /**\n * Return a new ``bytes30`` type for %%v%%.\n */\n static bytes30(v) { return b(v, 30); }\n /**\n * Return a new ``bytes31`` type for %%v%%.\n */\n static bytes31(v) { return b(v, 31); }\n /**\n * Return a new ``bytes32`` type for %%v%%.\n */\n static bytes32(v) { return b(v, 32); }\n /**\n * Return a new ``address`` type for %%v%%.\n */\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n /**\n * Return a new ``bool`` type for %%v%%.\n */\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n /**\n * Return a new ``bytes`` type for %%v%%.\n */\n static bytes(v) { return new Typed(_gaurd, \"bytes\", v); }\n /**\n * Return a new ``string`` type for %%v%%.\n */\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n /**\n * Return a new ``array`` type for %%v%%, allowing %%dynamic%% length.\n */\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n /**\n * Return a new ``tuple`` type for %%v%%, with the optional %%name%%.\n */\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n /**\n * Return a new ``uint8`` type for %%v%%.\n */\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n /**\n * Returns true only if %%value%% is a [[Typed]] instance.\n */\n static isTyped(value) {\n return (value\n && typeof (value) === \"object\"\n && \"_typedSymbol\" in value\n && value._typedSymbol === _typedSymbol);\n }\n /**\n * If the value is a [[Typed]] instance, validates the underlying value\n * and returns it, otherwise returns value directly.\n *\n * This is useful for functions that with to accept either a [[Typed]]\n * object or values.\n */\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"../../address/index.js\";\nimport { toBeHex } from \"../../utils/maths.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toBeHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n/**\n * Clones the functionality of an existing Coder, but without a localName\n *\n * @_ignore\n */\nexport class AnonymousCoder extends Coder {\n coder;\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties, isError, assert, assertArgument, assertArgumentCount } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\n/**\n * @_ignore\n */\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n assert(name, \"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", { argument: \"values\", info: { coder }, value: values });\n assert(!unique[name], \"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", { argument: \"values\", info: { coder }, value: values });\n unique[name] = true;\n return values[name];\n });\n }\n else {\n assertArgument(false, \"invalid tuple value\", \"tuple\", values);\n }\n assertArgument(coders.length === arrayValues.length, \"types/value length mismatch\", \"tuple\", values);\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n/**\n * @_ignore\n */\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n else {\n try {\n value = coder.decode(reader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\n/**\n * @_ignore\n */\nexport class ArrayCoder extends Coder {\n coder;\n length;\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n assert(count * WordSize <= reader.dataLength, \"insufficient data length\", \"BUFFER_OVERRUN\", { buffer: reader.bytes, offset: count * WordSize, length: reader.dataLength });\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { getBytesCopy, hexlify } from \"../../utils/index.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = getBytesCopy(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\n/**\n * @_ignore\n */\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { defineProperties, getBytesCopy, hexlify } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\n/**\n * @_ignore\n */\nexport class FixedBytesCoder extends Coder {\n size;\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = getBytesCopy(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\n/**\n * @_ignore\n */\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { defineProperties, fromTwos, getBigInt, mask, toTwos } from \"../../utils/index.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n/**\n * @_ignore\n */\nexport class NumberCoder extends Coder {\n size;\n signed;\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = toTwos(value, 8 * WordSize);\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","import { toUtf8Bytes, toUtf8String } from \"../../utils/utf8.js\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\n/**\n * @_ignore\n */\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"../../utils/properties.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\n/**\n * @_ignore\n */\nexport class TupleCoder extends Coder {\n coders;\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","// created 2023-09-25T01:01:55.148Z\n// compressed base64-encoded blob for include-ens data\n// source: https://github.com/adraffy/ens-normalize.js/blob/main/src/make.js\n// see: https://github.com/adraffy/ens-normalize.js#security\n// SHA-256: 0565ed049b9cf1614bb9e11ba7d8ac6a6fb96c893253d890f7e2b2884b9ded32\nvar COMPRESSED$1 = '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';\nconst FENCED = new Map([[8217,\"apostrophe\"],[8260,\"fraction slash\"],[12539,\"middle dot\"]]);\nconst NSM_MAX = 4;\n\nfunction decode_arithmetic(bytes) {\r\n\tlet pos = 0;\r\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\r\n\t\r\n\t// decode the frequency table\r\n\tlet symbol_count = u16();\r\n\tlet total = 1;\r\n\tlet acc = [0, 1]; // first symbol has frequency 1\r\n\tfor (let i = 1; i < symbol_count; i++) {\r\n\t\tacc.push(total += u16());\r\n\t}\r\n\r\n\t// skip the sized-payload that the last 3 symbols index into\r\n\tlet skip = u16();\r\n\tlet pos_payload = pos;\r\n\tpos += skip;\r\n\r\n\tlet read_width = 0;\r\n\tlet read_buffer = 0; \r\n\tfunction read_bit() {\r\n\t\tif (read_width == 0) {\r\n\t\t\t// this will read beyond end of buffer\r\n\t\t\t// but (undefined|0) => zero pad\r\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\r\n\t\t\tread_width = 8;\r\n\t\t}\r\n\t\treturn (read_buffer >> --read_width) & 1;\r\n\t}\r\n\r\n\tconst N = 31;\r\n\tconst FULL = 2**N;\r\n\tconst HALF = FULL >>> 1;\r\n\tconst QRTR = HALF >> 1;\r\n\tconst MASK = FULL - 1;\r\n\r\n\t// fill register\r\n\tlet register = 0;\r\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\r\n\r\n\tlet symbols = [];\r\n\tlet low = 0;\r\n\tlet range = FULL; // treat like a float\r\n\twhile (true) {\r\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\r\n\t\tlet start = 0;\r\n\t\tlet end = symbol_count;\r\n\t\twhile (end - start > 1) { // binary search\r\n\t\t\tlet mid = (start + end) >>> 1;\r\n\t\t\tif (value < acc[mid]) {\r\n\t\t\t\tend = mid;\r\n\t\t\t} else {\r\n\t\t\t\tstart = mid;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (start == 0) break; // first symbol is end mark\r\n\t\tsymbols.push(start);\r\n\t\tlet a = low + Math.floor(range * acc[start] / total);\r\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1;\r\n\t\twhile (((a ^ b) & HALF) == 0) {\r\n\t\t\tregister = (register << 1) & MASK | read_bit();\r\n\t\t\ta = (a << 1) & MASK;\r\n\t\t\tb = (b << 1) & MASK | 1;\r\n\t\t}\r\n\t\twhile (a & ~b & QRTR) {\r\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\r\n\t\t\ta = (a << 1) ^ HALF;\r\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\r\n\t\t}\r\n\t\tlow = a;\r\n\t\trange = 1 + b - a;\r\n\t}\r\n\tlet offset = symbol_count - 4;\r\n\treturn symbols.map(x => { // index into payload\r\n\t\tswitch (x - offset) {\r\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\r\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\r\n\t\t\tcase 1: return offset + bytes[pos_payload++];\r\n\t\t\tdefault: return x - 1;\r\n\t\t}\r\n\t});\r\n}\t\r\n\r\n// returns an iterator which returns the next symbol\r\nfunction read_payload(v) {\r\n\tlet pos = 0;\r\n\treturn () => v[pos++];\r\n}\r\nfunction read_compressed_payload(s) {\r\n\treturn read_payload(decode_arithmetic(unsafe_atob(s)));\r\n}\r\n\r\n// unsafe in the sense:\r\n// expected well-formed Base64 w/o padding \r\n// 20220922: added for https://github.com/adraffy/ens-normalize.js/issues/4\r\nfunction unsafe_atob(s) {\r\n\tlet lookup = [];\r\n\t[...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'].forEach((c, i) => lookup[c.charCodeAt(0)] = i);\r\n\tlet n = s.length;\r\n\tlet ret = new Uint8Array((6 * n) >> 3);\r\n\tfor (let i = 0, pos = 0, width = 0, carry = 0; i < n; i++) {\r\n\t\tcarry = (carry << 6) | lookup[s.charCodeAt(i)];\r\n\t\twidth += 6;\r\n\t\tif (width >= 8) {\r\n\t\t\tret[pos++] = (carry >> (width -= 8));\r\n\t\t}\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\r\nfunction signed(i) { \r\n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\r\n}\r\n\r\nfunction read_deltas(n, next) {\r\n\tlet v = Array(n);\r\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\r\n\treturn v;\r\n}\r\n\r\n// [123][5] => [0 3] [1 1] [0 0]\r\nfunction read_sorted(next, prev = 0) {\r\n\tlet ret = [];\r\n\twhile (true) {\r\n\t\tlet x = next();\r\n\t\tlet n = next();\r\n\t\tif (!n) break;\r\n\t\tprev += x;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tret.push(prev + i);\r\n\t\t}\r\n\t\tprev += n + 1;\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction read_sorted_arrays(next) {\r\n\treturn read_array_while(() => { \r\n\t\tlet v = read_sorted(next);\r\n\t\tif (v.length) return v;\r\n\t});\r\n}\r\n\r\n// returns map of x => ys\r\nfunction read_mapped(next) {\r\n\tlet ret = [];\r\n\twhile (true) {\r\n\t\tlet w = next();\r\n\t\tif (w == 0) break;\r\n\t\tret.push(read_linear_table(w, next));\r\n\t}\r\n\twhile (true) {\r\n\t\tlet w = next() - 1;\r\n\t\tif (w < 0) break;\r\n\t\tret.push(read_replacement_table(w, next));\r\n\t}\r\n\treturn ret.flat();\r\n}\r\n\r\n// read until next is falsy\r\n// return array of read values\r\nfunction read_array_while(next) {\r\n\tlet v = [];\r\n\twhile (true) {\r\n\t\tlet x = next(v.length);\r\n\t\tif (!x) break;\r\n\t\tv.push(x);\r\n\t}\r\n\treturn v;\r\n}\r\n\r\n// read w columns of length n\r\n// return as n rows of length w\r\nfunction read_transposed(n, w, next) {\r\n\tlet m = Array(n).fill().map(() => []);\r\n\tfor (let i = 0; i < w; i++) {\r\n\t\tread_deltas(n, next).forEach((x, j) => m[j].push(x));\r\n\t}\r\n\treturn m;\r\n}\r\n \r\n// returns [[x, ys], [x+dx, ys+dy], [x+2*dx, ys+2*dy], ...]\r\n// where dx/dy = steps, n = run size, w = length of y\r\nfunction read_linear_table(w, next) {\r\n\tlet dx = 1 + next();\r\n\tlet dy = next();\r\n\tlet vN = read_array_while(next);\r\n\tlet m = read_transposed(vN.length, 1+w, next);\r\n\treturn m.flatMap((v, i) => {\r\n\t\tlet [x, ...ys] = v;\r\n\t\treturn Array(vN[i]).fill().map((_, j) => {\r\n\t\t\tlet j_dy = j * dy;\r\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\r\n\t\t});\r\n\t});\r\n}\r\n\r\n// return [[x, ys...], ...]\r\n// where w = length of y\r\nfunction read_replacement_table(w, next) { \r\n\tlet n = 1 + next();\r\n\tlet m = read_transposed(n, 1+w, next);\r\n\treturn m.map(v => [v[0], v.slice(1)]);\r\n}\r\n\r\n\r\nfunction read_trie(next) {\r\n\tlet ret = [];\r\n\tlet sorted = read_sorted(next); \r\n\texpand(decode([]), []);\r\n\treturn ret; // not sorted\r\n\tfunction decode(Q) { // characters that lead into this node\r\n\t\tlet S = next(); // state: valid, save, check\r\n\t\tlet B = read_array_while(() => { // buckets leading to new nodes\r\n\t\t\tlet cps = read_sorted(next).map(i => sorted[i]);\r\n\t\t\tif (cps.length) return decode(cps);\r\n\t\t});\r\n\t\treturn {S, B, Q};\r\n\t}\r\n\tfunction expand({S, B}, cps, saved) {\r\n\t\tif (S & 4 && saved === cps[cps.length-1]) return;\r\n\t\tif (S & 2) saved = cps[cps.length-1];\r\n\t\tif (S & 1) ret.push(cps); \r\n\t\tfor (let br of B) {\r\n\t\t\tfor (let cp of br.Q) {\r\n\t\t\t\texpand(br, [...cps, cp], saved);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\n\nfunction hex_cp(cp) {\r\n\treturn cp.toString(16).toUpperCase().padStart(2, '0');\r\n}\r\n\r\nfunction quote_cp(cp) {\r\n\treturn `{${hex_cp(cp)}}`; // raffy convention: like \"\\u{X}\" w/o the \"\\u\"\r\n}\r\n\r\n/*\r\nexport function explode_cp(s) {\r\n\treturn [...s].map(c => c.codePointAt(0));\r\n}\r\n*/\r\nfunction explode_cp(s) { // this is about 2x faster\r\n\tlet cps = [];\r\n\tfor (let pos = 0, len = s.length; pos < len; ) {\r\n\t\tlet cp = s.codePointAt(pos);\r\n\t\tpos += cp < 0x10000 ? 1 : 2;\r\n\t\tcps.push(cp);\r\n\t}\r\n\treturn cps;\r\n}\r\n\r\nfunction str_from_cps(cps) {\r\n\tconst chunk = 4096;\r\n\tlet len = cps.length;\r\n\tif (len < chunk) return String.fromCodePoint(...cps);\r\n\tlet buf = [];\r\n\tfor (let i = 0; i < len; ) {\r\n\t\tbuf.push(String.fromCodePoint(...cps.slice(i, i += chunk)));\r\n\t}\r\n\treturn buf.join('');\r\n}\r\n\r\nfunction compare_arrays(a, b) {\r\n\tlet n = a.length;\r\n\tlet c = n - b.length;\r\n\tfor (let i = 0; c == 0 && i < n; i++) c = a[i] - b[i];\r\n\treturn c;\r\n}\n\n// created 2023-09-25T01:01:55.148Z\n// compressed base64-encoded blob for include-nf data\n// source: https://github.com/adraffy/ens-normalize.js/blob/main/src/make.js\n// see: https://github.com/adraffy/ens-normalize.js#security\n// SHA-256: a974b6f8541fc29d919bc85118af0a44015851fab5343f8679cb31be2bdb209e\nvar COMPRESSED = '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';\n\n// https://unicode.org/reports/tr15/\r\n// for reference implementation\r\n// see: /derive/nf.js\r\n\r\n\r\n// algorithmic hangul\r\n// https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf (page 144)\r\nconst S0 = 0xAC00;\r\nconst L0 = 0x1100;\r\nconst V0 = 0x1161;\r\nconst T0 = 0x11A7;\r\nconst L_COUNT = 19;\r\nconst V_COUNT = 21;\r\nconst T_COUNT = 28;\r\nconst N_COUNT = V_COUNT * T_COUNT;\r\nconst S_COUNT = L_COUNT * N_COUNT;\r\nconst S1 = S0 + S_COUNT;\r\nconst L1 = L0 + L_COUNT;\r\nconst V1 = V0 + V_COUNT;\r\nconst T1 = T0 + T_COUNT;\r\n\r\nfunction unpack_cc(packed) {\r\n\treturn (packed >> 24) & 0xFF;\r\n}\r\nfunction unpack_cp(packed) {\r\n\treturn packed & 0xFFFFFF;\r\n}\r\n\r\nlet SHIFTED_RANK, EXCLUSIONS, DECOMP, RECOMP;\r\n\r\nfunction init$1() {\r\n\t//console.time('nf');\r\n\tlet r = read_compressed_payload(COMPRESSED);\r\n\tSHIFTED_RANK = new Map(read_sorted_arrays(r).flatMap((v, i) => v.map(x => [x, (i+1) << 24]))); // pre-shifted\r\n\tEXCLUSIONS = new Set(read_sorted(r));\r\n\tDECOMP = new Map();\r\n\tRECOMP = new Map();\r\n\tfor (let [cp, cps] of read_mapped(r)) {\r\n\t\tif (!EXCLUSIONS.has(cp) && cps.length == 2) {\r\n\t\t\tlet [a, b] = cps;\r\n\t\t\tlet bucket = RECOMP.get(a);\r\n\t\t\tif (!bucket) {\r\n\t\t\t\tbucket = new Map();\r\n\t\t\t\tRECOMP.set(a, bucket);\r\n\t\t\t}\r\n\t\t\tbucket.set(b, cp);\r\n\t\t}\r\n\t\tDECOMP.set(cp, cps.reverse()); // stored reversed\r\n\t}\r\n\t//console.timeEnd('nf');\r\n\t// 20230905: 11ms\r\n}\r\n\r\nfunction is_hangul(cp) {\r\n\treturn cp >= S0 && cp < S1;\r\n}\r\n\r\nfunction compose_pair(a, b) {\r\n\tif (a >= L0 && a < L1 && b >= V0 && b < V1) {\r\n\t\treturn S0 + (a - L0) * N_COUNT + (b - V0) * T_COUNT;\r\n\t} else if (is_hangul(a) && b > T0 && b < T1 && (a - S0) % T_COUNT == 0) {\r\n\t\treturn a + (b - T0);\r\n\t} else {\r\n\t\tlet recomp = RECOMP.get(a);\r\n\t\tif (recomp) {\r\n\t\t\trecomp = recomp.get(b);\r\n\t\t\tif (recomp) {\r\n\t\t\t\treturn recomp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n}\r\n\r\nfunction decomposed(cps) {\r\n\tif (!SHIFTED_RANK) init$1();\r\n\tlet ret = [];\r\n\tlet buf = [];\r\n\tlet check_order = false;\r\n\tfunction add(cp) {\r\n\t\tlet cc = SHIFTED_RANK.get(cp);\r\n\t\tif (cc) {\r\n\t\t\tcheck_order = true;\r\n\t\t\tcp |= cc;\r\n\t\t}\r\n\t\tret.push(cp);\r\n\t}\r\n\tfor (let cp of cps) {\r\n\t\twhile (true) {\r\n\t\t\tif (cp < 0x80) {\r\n\t\t\t\tret.push(cp);\r\n\t\t\t} else if (is_hangul(cp)) {\r\n\t\t\t\tlet s_index = cp - S0;\r\n\t\t\t\tlet l_index = s_index / N_COUNT | 0;\r\n\t\t\t\tlet v_index = (s_index % N_COUNT) / T_COUNT | 0;\r\n\t\t\t\tlet t_index = s_index % T_COUNT;\r\n\t\t\t\tadd(L0 + l_index);\r\n\t\t\t\tadd(V0 + v_index);\r\n\t\t\t\tif (t_index > 0) add(T0 + t_index);\r\n\t\t\t} else {\r\n\t\t\t\tlet mapped = DECOMP.get(cp);\r\n\t\t\t\tif (mapped) {\r\n\t\t\t\t\tbuf.push(...mapped);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tadd(cp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!buf.length) break;\r\n\t\t\tcp = buf.pop();\r\n\t\t}\r\n\t}\r\n\tif (check_order && ret.length > 1) {\r\n\t\tlet prev_cc = unpack_cc(ret[0]);\r\n\t\tfor (let i = 1; i < ret.length; i++) {\r\n\t\t\tlet cc = unpack_cc(ret[i]);\r\n\t\t\tif (cc == 0 || prev_cc <= cc) {\r\n\t\t\t\tprev_cc = cc;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet j = i-1;\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet tmp = ret[j+1];\r\n\t\t\t\tret[j+1] = ret[j];\r\n\t\t\t\tret[j] = tmp;\r\n\t\t\t\tif (!j) break;\r\n\t\t\t\tprev_cc = unpack_cc(ret[--j]);\r\n\t\t\t\tif (prev_cc <= cc) break;\r\n\t\t\t}\r\n\t\t\tprev_cc = unpack_cc(ret[i]);\r\n\t\t}\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction composed_from_decomposed(v) {\r\n\tlet ret = [];\r\n\tlet stack = [];\r\n\tlet prev_cp = -1;\r\n\tlet prev_cc = 0;\r\n\tfor (let packed of v) {\r\n\t\tlet cc = unpack_cc(packed);\r\n\t\tlet cp = unpack_cp(packed);\r\n\t\tif (prev_cp == -1) {\r\n\t\t\tif (cc == 0) {\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tret.push(cp);\r\n\t\t\t}\r\n\t\t} else if (prev_cc > 0 && prev_cc >= cc) {\r\n\t\t\tif (cc == 0) {\r\n\t\t\t\tret.push(prev_cp, ...stack);\r\n\t\t\t\tstack.length = 0;\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(cp);\r\n\t\t\t}\r\n\t\t\tprev_cc = cc;\r\n\t\t} else {\r\n\t\t\tlet composed = compose_pair(prev_cp, cp);\r\n\t\t\tif (composed >= 0) {\r\n\t\t\t\tprev_cp = composed;\r\n\t\t\t} else if (prev_cc == 0 && cc == 0) {\r\n\t\t\t\tret.push(prev_cp);\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(cp);\r\n\t\t\t\tprev_cc = cc;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (prev_cp >= 0) {\r\n\t\tret.push(prev_cp, ...stack);\t\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\n// note: cps can be iterable\r\nfunction nfd(cps) {\r\n\treturn decomposed(cps).map(unpack_cp);\r\n}\r\nfunction nfc(cps) {\r\n\treturn composed_from_decomposed(decomposed(cps));\r\n}\n\nconst HYPHEN = 0x2D;\r\nconst STOP = 0x2E;\r\nconst STOP_CH = '.';\r\nconst FE0F = 0xFE0F;\r\nconst UNIQUE_PH = 1;\r\n\r\n// 20230913: replace [...v] with Array_from(v) to avoid large spreads\r\nconst Array_from = x => Array.from(x); // Array.from.bind(Array);\r\n\r\nfunction group_has_cp(g, cp) {\r\n\t// 20230913: keep primary and secondary distinct instead of creating valid union\r\n\treturn g.P.has(cp) || g.Q.has(cp);\r\n}\r\n\r\nclass Emoji extends Array {\r\n\tget is_emoji() { return true; } // free tagging system\r\n}\r\n\r\nlet MAPPED, IGNORED, CM, NSM, ESCAPE, NFC_CHECK, GROUPS, WHOLE_VALID, WHOLE_MAP, VALID, EMOJI_LIST, EMOJI_ROOT;\r\n\r\nfunction init() {\r\n\tif (MAPPED) return;\r\n\t\r\n\tlet r = read_compressed_payload(COMPRESSED$1);\r\n\tconst read_sorted_array = () => read_sorted(r);\r\n\tconst read_sorted_set = () => new Set(read_sorted_array());\r\n\tconst set_add_many = (set, v) => v.forEach(x => set.add(x));\r\n\r\n\tMAPPED = new Map(read_mapped(r)); \r\n\tIGNORED = read_sorted_set(); // ignored characters are not valid, so just read raw codepoints\r\n\r\n\t/*\r\n\t// direct include from payload is smaller than the decompression code\r\n\tconst FENCED = new Map(read_array_while(() => {\r\n\t\tlet cp = r();\r\n\t\tif (cp) return [cp, read_str(r())];\r\n\t}));\r\n\t*/\r\n\t// 20230217: we still need all CM for proper error formatting\r\n\t// but norm only needs NSM subset that are potentially-valid\r\n\tCM = read_sorted_array();\r\n\tNSM = new Set(read_sorted_array().map(i => CM[i]));\r\n\tCM = new Set(CM);\r\n\t\r\n\tESCAPE = read_sorted_set(); // characters that should not be printed\r\n\tNFC_CHECK = read_sorted_set(); // only needed to illustrate ens_tokenize() transformations\r\n\r\n\tlet chunks = read_sorted_arrays(r);\r\n\tlet unrestricted = r();\r\n\t//const read_chunked = () => new Set(read_sorted_array().flatMap(i => chunks[i]).concat(read_sorted_array()));\r\n\tconst read_chunked = () => {\r\n\t\t// 20230921: build set in parts, 2x faster\r\n\t\tlet set = new Set();\r\n\t\tread_sorted_array().forEach(i => set_add_many(set, chunks[i]));\r\n\t\tset_add_many(set, read_sorted_array());\r\n\t\treturn set; \r\n\t};\r\n\tGROUPS = read_array_while(i => {\r\n\t\t// minifier property mangling seems unsafe\r\n\t\t// so these are manually renamed to single chars\r\n\t\tlet N = read_array_while(r).map(x => x+0x60);\r\n\t\tif (N.length) {\r\n\t\t\tlet R = i >= unrestricted; // unrestricted then restricted\r\n\t\t\tN[0] -= 32; // capitalize\r\n\t\t\tN = str_from_cps(N);\r\n\t\t\tif (R) N=`Restricted[${N}]`;\r\n\t\t\tlet P = read_chunked(); // primary\r\n\t\t\tlet Q = read_chunked(); // secondary\r\n\t\t\tlet M = !r(); // not-whitelisted, check for NSM\r\n\t\t\t// *** this code currently isn't needed ***\r\n\t\t\t/*\r\n\t\t\tlet V = [...P, ...Q].sort((a, b) => a-b); // derive: sorted valid\r\n\t\t\tlet M = r()-1; // number of combining mark\r\n\t\t\tif (M < 0) { // whitelisted\r\n\t\t\t\tM = new Map(read_array_while(() => {\r\n\t\t\t\t\tlet i = r();\r\n\t\t\t\t\tif (i) return [V[i-1], read_array_while(() => {\r\n\t\t\t\t\t\tlet v = read_array_while(r);\r\n\t\t\t\t\t\tif (v.length) return v.map(x => x-1);\r\n\t\t\t\t\t})];\r\n\t\t\t\t}));\r\n\t\t\t}*/\r\n\t\t\treturn {N, P, Q, M, R};\r\n\t\t}\r\n\t});\r\n\r\n\t// decode compressed wholes\r\n\tWHOLE_VALID = read_sorted_set();\r\n\tWHOLE_MAP = new Map();\r\n\tlet wholes = read_sorted_array().concat(Array_from(WHOLE_VALID)).sort((a, b) => a-b); // must be sorted\r\n\twholes.forEach((cp, i) => {\r\n\t\tlet d = r(); \r\n\t\tlet w = wholes[i] = d ? wholes[i-d] : {V: [], M: new Map()};\r\n\t\tw.V.push(cp); // add to member set\r\n\t\tif (!WHOLE_VALID.has(cp)) {\r\n\t\t\tWHOLE_MAP.set(cp, w); // register with whole map\r\n\t\t}\r\n\t});\r\n\r\n\t// compute confusable-extent complements\r\n\t// usage: WHOLE_MAP.get(cp).M.get(cp) = complement set\r\n\tfor (let {V, M} of new Set(WHOLE_MAP.values())) {\r\n\t\t// connect all groups that have each whole character\r\n\t\tlet recs = [];\r\n\t\tfor (let cp of V) {\r\n\t\t\tlet gs = GROUPS.filter(g => group_has_cp(g, cp));\r\n\t\t\tlet rec = recs.find(({G}) => gs.some(g => G.has(g)));\r\n\t\t\tif (!rec) {\r\n\t\t\t\trec = {G: new Set(), V: []};\r\n\t\t\t\trecs.push(rec);\r\n\t\t\t}\r\n\t\t\trec.V.push(cp);\r\n\t\t\tset_add_many(rec.G, gs);\r\n\t\t}\r\n\t\t// per character cache groups which are not a member of the extent\r\n\t\tlet union = recs.flatMap(x => Array_from(x.G)); // all of the groups used by this whole\r\n\t\tfor (let {G, V} of recs) {\r\n\t\t\tlet complement = new Set(union.filter(g => !G.has(g))); // groups not covered by the extent\r\n\t\t\tfor (let cp of V) {\r\n\t\t\t\tM.set(cp, complement); // this is the same reference\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// compute valid set\r\n\t// 20230924: VALID was union but can be re-used\r\n\tVALID = new Set(); // exists in 1+ groups\r\n\tlet multi = new Set(); // exists in 2+ groups\r\n\tconst add_to_union = cp => VALID.has(cp) ? multi.add(cp) : VALID.add(cp);\r\n\tfor (let g of GROUPS) {\r\n\t\tfor (let cp of g.P) add_to_union(cp);\r\n\t\tfor (let cp of g.Q) add_to_union(cp);\r\n\t}\r\n\t// dual purpose WHOLE_MAP: return placeholder if unique non-confusable\r\n\tfor (let cp of VALID) {\r\n\t\tif (!WHOLE_MAP.has(cp) && !multi.has(cp)) {\r\n\t\t\tWHOLE_MAP.set(cp, UNIQUE_PH);\r\n\t\t}\r\n\t}\r\n\t// add all decomposed parts\r\n\t// see derive: \"Valid is Closed (via Brute-force)\"\r\n\tset_add_many(VALID, nfd(VALID));\r\n\t\r\n\t// decode emoji\r\n\t// 20230719: emoji are now fully-expanded to avoid quirk logic \r\n\tEMOJI_LIST = read_trie(r).map(v => Emoji.from(v)).sort(compare_arrays);\r\n\tEMOJI_ROOT = new Map(); // this has approx 7K nodes (2+ per emoji)\r\n\tfor (let cps of EMOJI_LIST) {\r\n\t\t// 20230719: change to *slightly* stricter algorithm which disallows \r\n\t\t// insertion of misplaced FE0F in emoji sequences (matching ENSIP-15)\r\n\t\t// example: beautified [A B] (eg. flag emoji) \r\n\t\t// before: allow: [A FE0F B], error: [A FE0F FE0F B] \r\n\t\t// after: error: both\r\n\t\t// note: this code now matches ENSNormalize.{cs,java} logic\r\n\t\tlet prev = [EMOJI_ROOT];\r\n\t\tfor (let cp of cps) {\r\n\t\t\tlet next = prev.map(node => {\r\n\t\t\t\tlet child = node.get(cp);\r\n\t\t\t\tif (!child) {\r\n\t\t\t\t\t// should this be object? \r\n\t\t\t\t\t// (most have 1-2 items, few have many)\r\n\t\t\t\t\t// 20230719: no, v8 default map is 4?\r\n\t\t\t\t\tchild = new Map();\r\n\t\t\t\t\tnode.set(cp, child);\r\n\t\t\t\t}\r\n\t\t\t\treturn child;\r\n\t\t\t});\r\n\t\t\tif (cp === FE0F) {\r\n\t\t\t\tprev.push(...next); // less than 20 elements\r\n\t\t\t} else {\r\n\t\t\t\tprev = next;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (let x of prev) {\r\n\t\t\tx.V = cps;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// if escaped: {HEX}\r\n// else: \"x\" {HEX}\r\nfunction quoted_cp(cp) {\r\n\treturn (should_escape(cp) ? '' : `${bidi_qq(safe_str_from_cps([cp]))} `) + quote_cp(cp);\r\n}\r\n\r\n// 20230211: some messages can be mixed-directional and result in spillover\r\n// use 200E after a quoted string to force the remainder of a string from \r\n// acquring the direction of the quote\r\n// https://www.w3.org/International/questions/qa-bidi-unicode-controls#exceptions\r\nfunction bidi_qq(s) {\r\n\treturn `\"${s}\"\\u200E`; // strong LTR\r\n}\r\n\r\nfunction check_label_extension(cps) {\r\n\tif (cps.length >= 4 && cps[2] == HYPHEN && cps[3] == HYPHEN) {\r\n\t\tthrow new Error(`invalid label extension: \"${str_from_cps(cps.slice(0, 4))}\"`); // this can only be ascii so cant be bidi\r\n\t}\r\n}\r\nfunction check_leading_underscore(cps) {\r\n\tconst UNDERSCORE = 0x5F;\r\n\tfor (let i = cps.lastIndexOf(UNDERSCORE); i > 0; ) {\r\n\t\tif (cps[--i] !== UNDERSCORE) {\r\n\t\t\tthrow new Error('underscore allowed only at start');\r\n\t\t}\r\n\t}\r\n}\r\n// check that a fenced cp is not leading, trailing, or touching another fenced cp\r\nfunction check_fenced(cps) {\r\n\tlet cp = cps[0];\r\n\tlet prev = FENCED.get(cp);\r\n\tif (prev) throw error_placement(`leading ${prev}`);\r\n\tlet n = cps.length;\r\n\tlet last = -1; // prevents trailing from throwing\r\n\tfor (let i = 1; i < n; i++) {\r\n\t\tcp = cps[i];\r\n\t\tlet match = FENCED.get(cp);\r\n\t\tif (match) {\r\n\t\t\t// since cps[0] isn't fenced, cps[1] cannot throw\r\n\t\t\tif (last == i) throw error_placement(`${prev} + ${match}`);\r\n\t\t\tlast = i + 1;\r\n\t\t\tprev = match;\r\n\t\t}\r\n\t}\r\n\tif (last == n) throw error_placement(`trailing ${prev}`);\r\n}\r\n\r\n// create a safe to print string \r\n// invisibles are escaped\r\n// leading cm uses placeholder\r\n// if cps exceed max, middle truncate with ellipsis\r\n// quoter(cp) => string, eg. 3000 => \"{3000}\"\r\n// note: in html, you'd call this function then replace [<>&] with entities\r\nfunction safe_str_from_cps(cps, max = Infinity, quoter = quote_cp) {\r\n\t//if (Number.isInteger(cps)) cps = [cps];\r\n\t//if (!Array.isArray(cps)) throw new TypeError(`expected codepoints`);\r\n\tlet buf = [];\r\n\tif (is_combining_mark(cps[0])) buf.push('◌');\r\n\tif (cps.length > max) {\r\n\t\tmax >>= 1;\r\n\t\tcps = [...cps.slice(0, max), 0x2026, ...cps.slice(-max)];\r\n\t}\r\n\tlet prev = 0;\r\n\tlet n = cps.length;\r\n\tfor (let i = 0; i < n; i++) {\r\n\t\tlet cp = cps[i];\r\n\t\tif (should_escape(cp)) {\r\n\t\t\tbuf.push(str_from_cps(cps.slice(prev, i)));\r\n\t\t\tbuf.push(quoter(cp));\r\n\t\t\tprev = i + 1;\r\n\t\t}\r\n\t}\r\n\tbuf.push(str_from_cps(cps.slice(prev, n)));\r\n\treturn buf.join('');\r\n}\r\n\r\n// note: set(s) cannot be exposed because they can be modified\r\n// note: Object.freeze() doesn't work\r\nfunction is_combining_mark(cp) {\r\n\tinit();\r\n\treturn CM.has(cp);\r\n}\r\nfunction should_escape(cp) {\r\n\tinit();\r\n\treturn ESCAPE.has(cp);\r\n}\r\n\r\n// return all supported emoji as fully-qualified emoji \r\n// ordered by length then lexicographic \r\nfunction ens_emoji() {\r\n\tinit();\r\n\treturn EMOJI_LIST.map(x => x.slice()); // emoji are exposed so copy\r\n}\r\n\r\nfunction ens_normalize_fragment(frag, decompose) {\r\n\tinit();\r\n\tlet nf = decompose ? nfd : nfc;\r\n\treturn frag.split(STOP_CH).map(label => str_from_cps(tokens_from_str(explode_cp(label), nf, filter_fe0f).flat())).join(STOP_CH);\r\n}\r\n\r\nfunction ens_normalize(name) {\r\n\treturn flatten(split(name, nfc, filter_fe0f));\r\n}\r\n\r\nfunction ens_beautify(name) {\r\n\tlet labels = split(name, nfc, x => x); // emoji not exposed\r\n\tfor (let {type, output, error} of labels) {\r\n\t\tif (error) break; // flatten will throw\r\n\r\n\t\t// replace leading/trailing hyphen\r\n\t\t// 20230121: consider beautifing all or leading/trailing hyphen to unicode variant\r\n\t\t// not exactly the same in every font, but very similar: \"-\" vs \"‐\"\r\n\t\t/*\r\n\t\tconst UNICODE_HYPHEN = 0x2010;\r\n\t\t// maybe this should replace all for visual consistancy?\r\n\t\t// `node tools/reg-count.js regex ^-\\{2,\\}` => 592\r\n\t\t//for (let i = 0; i < output.length; i++) if (output[i] == 0x2D) output[i] = 0x2010;\r\n\t\tif (output[0] == HYPHEN) output[0] = UNICODE_HYPHEN;\r\n\t\tlet end = output.length-1;\r\n\t\tif (output[end] == HYPHEN) output[end] = UNICODE_HYPHEN;\r\n\t\t*/\r\n\t\t// 20230123: WHATWG URL uses \"CheckHyphens\" false\r\n\t\t// https://url.spec.whatwg.org/#idna\r\n\r\n\t\t// update ethereum symbol\r\n\t\t// ξ => Ξ if not greek\r\n\t\tif (type !== 'Greek') array_replace(output, 0x3BE, 0x39E);\r\n\r\n\t\t// 20221213: fixes bidi subdomain issue, but breaks invariant (200E is disallowed)\r\n\t\t// could be fixed with special case for: 2D (.) + 200E (LTR)\r\n\t\t// https://discuss.ens.domains/t/bidi-label-ordering-spoof/15824\r\n\t\t//output.splice(0, 0, 0x200E);\r\n\t}\r\n\treturn flatten(labels);\r\n}\r\n\r\nfunction array_replace(v, a, b) {\r\n\tlet prev = 0;\r\n\twhile (true) {\r\n\t\tlet next = v.indexOf(a, prev);\r\n\t\tif (next < 0) break;\r\n\t\tv[next] = b; \r\n\t\tprev = next + 1;\r\n\t}\r\n}\r\n\r\nfunction ens_split(name, preserve_emoji) {\r\n\treturn split(name, nfc, preserve_emoji ? x => x.slice() : filter_fe0f); // emoji are exposed so copy\r\n}\r\n\r\nfunction split(name, nf, ef) {\r\n\tif (!name) return []; // 20230719: empty name allowance\r\n\tinit();\r\n\tlet offset = 0;\r\n\t// https://unicode.org/reports/tr46/#Validity_Criteria\r\n\t// 4.) \"The label must not contain a U+002E ( . ) FULL STOP.\"\r\n\treturn name.split(STOP_CH).map(label => {\r\n\t\tlet input = explode_cp(label);\r\n\t\tlet info = {\r\n\t\t\tinput,\r\n\t\t\toffset, // codepoint, not substring!\r\n\t\t};\r\n\t\toffset += input.length + 1; // + stop\r\n\t\ttry {\r\n\t\t\t// 1.) \"The label must be in Unicode Normalization Form NFC\"\r\n\t\t\tlet tokens = info.tokens = tokens_from_str(input, nf, ef);\r\n\t\t\tlet token_count = tokens.length;\r\n\t\t\tlet type;\r\n\t\t\tif (!token_count) { // the label was effectively empty (could of had ignored characters)\r\n\t\t\t\t//norm = [];\r\n\t\t\t\t//type = 'None'; // use this instead of next match, \"ASCII\"\r\n\t\t\t\t// 20230120: change to strict\r\n\t\t\t\t// https://discuss.ens.domains/t/ens-name-normalization-2nd/14564/59\r\n\t\t\t\tthrow new Error(`empty label`);\r\n\t\t\t} \r\n\t\t\tlet norm = info.output = tokens.flat();\r\n\t\t\tcheck_leading_underscore(norm);\r\n\t\t\tlet emoji = info.emoji = token_count > 1 || tokens[0].is_emoji; // same as: tokens.some(x => x.is_emoji);\r\n\t\t\tif (!emoji && norm.every(cp => cp < 0x80)) { // special case for ascii\r\n\t\t\t\t// 20230123: matches matches WHATWG, see note 3.3\r\n\t\t\t\tcheck_label_extension(norm); // only needed for ascii\r\n\t\t\t\t// cant have fenced\r\n\t\t\t\t// cant have cm\r\n\t\t\t\t// cant have wholes\r\n\t\t\t\t// see derive: \"Fastpath ASCII\"\r\n\t\t\t\ttype = 'ASCII';\r\n\t\t\t} else {\r\n\t\t\t\tlet chars = tokens.flatMap(x => x.is_emoji ? [] : x); // all of the nfc tokens concat together\r\n\t\t\t\tif (!chars.length) { // theres no text, just emoji\r\n\t\t\t\t\ttype = 'Emoji';\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// 5.) \"The label must not begin with a combining mark, that is: General_Category=Mark.\"\r\n\t\t\t\t\tif (CM.has(norm[0])) throw error_placement('leading combining mark');\r\n\t\t\t\t\tfor (let i = 1; i < token_count; i++) { // we've already checked the first token\r\n\t\t\t\t\t\tlet cps = tokens[i];\r\n\t\t\t\t\t\tif (!cps.is_emoji && CM.has(cps[0])) { // every text token has emoji neighbors, eg. EtEEEtEt...\r\n\t\t\t\t\t\t\t// bidi_qq() not needed since emoji is LTR and cps is a CM\r\n\t\t\t\t\t\t\tthrow error_placement(`emoji + combining mark: \"${str_from_cps(tokens[i-1])} + ${safe_str_from_cps([cps[0]])}\"`); \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheck_fenced(norm);\r\n\t\t\t\t\tlet unique = Array_from(new Set(chars));\r\n\t\t\t\t\tlet [g] = determine_group(unique); // take the first match\r\n\t\t\t\t\t// see derive: \"Matching Groups have Same CM Style\"\r\n\t\t\t\t\t// alternative: could form a hybrid type: Latin/Japanese/...\t\r\n\t\t\t\t\tcheck_group(g, chars); // need text in order\r\n\t\t\t\t\tcheck_whole(g, unique); // only need unique text (order would be required for multiple-char confusables)\r\n\t\t\t\t\ttype = g.N;\r\n\t\t\t\t\t// 20230121: consider exposing restricted flag\r\n\t\t\t\t\t// it's simpler to just check for 'Restricted'\r\n\t\t\t\t\t// or even better: type.endsWith(']')\r\n\t\t\t\t\t//if (g.R) info.restricted = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tinfo.type = type;\r\n\t\t} catch (err) {\r\n\t\t\tinfo.error = err; // use full error object\r\n\t\t}\r\n\t\treturn info;\r\n\t});\r\n}\r\n\r\nfunction check_whole(group, unique) {\r\n\tlet maker;\r\n\tlet shared = [];\r\n\tfor (let cp of unique) {\r\n\t\tlet whole = WHOLE_MAP.get(cp);\r\n\t\tif (whole === UNIQUE_PH) return; // unique, non-confusable\r\n\t\tif (whole) {\r\n\t\t\tlet set = whole.M.get(cp); // groups which have a character that look-like this character\r\n\t\t\tmaker = maker ? maker.filter(g => set.has(g)) : Array_from(set);\r\n\t\t\tif (!maker.length) return; // confusable intersection is empty\r\n\t\t} else {\r\n\t\t\tshared.push(cp); \r\n\t\t}\r\n\t}\r\n\tif (maker) {\r\n\t\t// we have 1+ confusable\r\n\t\t// check if any of the remaining groups\r\n\t\t// contain the shared characters too\r\n\t\tfor (let g of maker) {\r\n\t\t\tif (shared.every(cp => group_has_cp(g, cp))) {\r\n\t\t\t\tthrow new Error(`whole-script confusable: ${group.N}/${g.N}`);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// assumption: unique.size > 0\r\n// returns list of matching groups\r\nfunction determine_group(unique) {\r\n\tlet groups = GROUPS;\r\n\tfor (let cp of unique) {\r\n\t\t// note: we need to dodge CM that are whitelisted\r\n\t\t// but that code isn't currently necessary\r\n\t\tlet gs = groups.filter(g => group_has_cp(g, cp));\r\n\t\tif (!gs.length) {\r\n\t\t\tif (!GROUPS.some(g => group_has_cp(g, cp))) { \r\n\t\t\t\t// the character was composed of valid parts\r\n\t\t\t\t// but it's NFC form is invalid\r\n\t\t\t\t// 20230716: change to more exact statement, see: ENSNormalize.{cs,java}\r\n\t\t\t\t// note: this doesn't have to be a composition\r\n\t\t\t\t// 20230720: change to full check\r\n\t\t\t\tthrow error_disallowed(cp); // this should be rare\r\n\t\t\t} else {\r\n\t\t\t\t// there is no group that contains all these characters\r\n\t\t\t\t// throw using the highest priority group that matched\r\n\t\t\t\t// https://www.unicode.org/reports/tr39/#mixed_script_confusables\r\n\t\t\t\tthrow error_group_member(groups[0], cp);\r\n\t\t\t}\r\n\t\t}\r\n\t\tgroups = gs;\r\n\t\tif (gs.length == 1) break; // there is only one group left\r\n\t}\r\n\t// there are at least 1 group(s) with all of these characters\r\n\treturn groups;\r\n}\r\n\r\n// throw on first error\r\nfunction flatten(split) {\r\n\treturn split.map(({input, error, output}) => {\r\n\t\tif (error) {\r\n\t\t\t// don't print label again if just a single label\r\n\t\t\tlet msg = error.message;\r\n\t\t\t// bidi_qq() only necessary if msg is digits\r\n\t\t\tthrow new Error(split.length == 1 ? msg : `Invalid label ${bidi_qq(safe_str_from_cps(input, 63))}: ${msg}`); \r\n\t\t}\r\n\t\treturn str_from_cps(output);\r\n\t}).join(STOP_CH);\r\n}\r\n\r\nfunction error_disallowed(cp) {\r\n\t// TODO: add cp to error?\r\n\treturn new Error(`disallowed character: ${quoted_cp(cp)}`); \r\n}\r\nfunction error_group_member(g, cp) {\r\n\tlet quoted = quoted_cp(cp);\r\n\tlet gg = GROUPS.find(g => g.P.has(cp)); // only check primary\r\n\tif (gg) {\r\n\t\tquoted = `${gg.N} ${quoted}`;\r\n\t}\r\n\treturn new Error(`illegal mixture: ${g.N} + ${quoted}`);\r\n}\r\nfunction error_placement(where) {\r\n\treturn new Error(`illegal placement: ${where}`);\r\n}\r\n\r\n// assumption: cps.length > 0\r\n// assumption: cps[0] isn't a CM\r\n// assumption: the previous character isn't an emoji\r\nfunction check_group(g, cps) {\r\n\tfor (let cp of cps) {\r\n\t\tif (!group_has_cp(g, cp)) {\r\n\t\t\t// for whitelisted scripts, this will throw illegal mixture on invalid cm, eg. \"e{300}{300}\"\r\n\t\t\t// at the moment, it's unnecessary to introduce an extra error type\r\n\t\t\t// until there exists a whitelisted multi-character\r\n\t\t\t// eg. if (M < 0 && is_combining_mark(cp)) { ... }\r\n\t\t\t// there are 3 cases:\r\n\t\t\t// 1. illegal cm for wrong group => mixture error\r\n\t\t\t// 2. illegal cm for same group => cm error\r\n\t\t\t// requires set of whitelist cm per group: \r\n\t\t\t// eg. new Set([...g.P, ...g.Q].flatMap(nfc).filter(cp => CM.has(cp)))\r\n\t\t\t// 3. wrong group => mixture error\r\n\t\t\tthrow error_group_member(g, cp);\r\n\t\t}\r\n\t}\r\n\t//if (M >= 0) { // we have a known fixed cm count\r\n\tif (g.M) { // we need to check for NSM\r\n\t\tlet decomposed = nfd(cps);\r\n\t\tfor (let i = 1, e = decomposed.length; i < e; i++) { // see: assumption\r\n\t\t\t// 20230210: bugfix: using cps instead of decomposed h/t Carbon225\r\n\t\t\t/*\r\n\t\t\tif (CM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\twhile (j < e && CM.has(decomposed[j])) j++;\r\n\t\t\t\tif (j - i > M) {\r\n\t\t\t\t\tthrow new Error(`too many combining marks: ${g.N} ${bidi_qq(str_from_cps(decomposed.slice(i-1, j)))} (${j-i}/${M})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t\t// 20230217: switch to NSM counting\r\n\t\t\t// https://www.unicode.org/reports/tr39/#Optional_Detection\r\n\t\t\tif (NSM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\tfor (let cp; j < e && NSM.has(cp = decomposed[j]); j++) {\r\n\t\t\t\t\t// a. Forbid sequences of the same nonspacing mark.\r\n\t\t\t\t\tfor (let k = i; k < j; k++) { // O(n^2) but n < 100\r\n\t\t\t\t\t\tif (decomposed[k] == cp) {\r\n\t\t\t\t\t\t\tthrow new Error(`duplicate non-spacing marks: ${quoted_cp(cp)}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// parse to end so we have full nsm count\r\n\t\t\t\t// b. Forbid sequences of more than 4 nonspacing marks (gc=Mn or gc=Me).\r\n\t\t\t\tif (j - i > NSM_MAX) {\r\n\t\t\t\t\t// note: this slice starts with a base char or spacing-mark cm\r\n\t\t\t\t\tthrow new Error(`excessive non-spacing marks: ${bidi_qq(safe_str_from_cps(decomposed.slice(i-1, j)))} (${j-i}/${NSM_MAX})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// *** this code currently isn't needed ***\r\n\t/*\r\n\tlet cm_whitelist = M instanceof Map;\r\n\tfor (let i = 0, e = cps.length; i < e; ) {\r\n\t\tlet cp = cps[i++];\r\n\t\tlet seqs = cm_whitelist && M.get(cp);\r\n\t\tif (seqs) { \r\n\t\t\t// list of codepoints that can follow\r\n\t\t\t// if this exists, this will always be 1+\r\n\t\t\tlet j = i;\r\n\t\t\twhile (j < e && CM.has(cps[j])) j++;\r\n\t\t\tlet cms = cps.slice(i, j);\r\n\t\t\tlet match = seqs.find(seq => !compare_arrays(seq, cms));\r\n\t\t\tif (!match) throw new Error(`disallowed combining mark sequence: \"${safe_str_from_cps([cp, ...cms])}\"`);\r\n\t\t\ti = j;\r\n\t\t} else if (!V.has(cp)) {\r\n\t\t\t// https://www.unicode.org/reports/tr39/#mixed_script_confusables\r\n\t\t\tlet quoted = quoted_cp(cp);\r\n\t\t\tfor (let cp of cps) {\r\n\t\t\t\tlet u = UNIQUE.get(cp);\r\n\t\t\t\tif (u && u !== g) {\r\n\t\t\t\t\t// if both scripts are restricted this error is confusing\r\n\t\t\t\t\t// because we don't differentiate RestrictedA from RestrictedB \r\n\t\t\t\t\tif (!u.R) quoted = `${quoted} is ${u.N}`;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthrow new Error(`disallowed ${g.N} character: ${quoted}`);\r\n\t\t\t//throw new Error(`disallowed character: ${quoted} (expected ${g.N})`);\r\n\t\t\t//throw new Error(`${g.N} does not allow: ${quoted}`);\r\n\t\t}\r\n\t}\r\n\tif (!cm_whitelist) {\r\n\t\tlet decomposed = nfd(cps);\r\n\t\tfor (let i = 1, e = decomposed.length; i < e; i++) { // we know it can't be cm leading\r\n\t\t\tif (CM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\twhile (j < e && CM.has(decomposed[j])) j++;\r\n\t\t\t\tif (j - i > M) {\r\n\t\t\t\t\tthrow new Error(`too many combining marks: \"${str_from_cps(decomposed.slice(i-1, j))}\" (${j-i}/${M})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n}\r\n\r\n// given a list of codepoints\r\n// returns a list of lists, where emoji are a fully-qualified (as Array subclass)\r\n// eg. explode_cp(\"abc💩d\") => [[61, 62, 63], Emoji[1F4A9, FE0F], [64]]\r\n// 20230818: rename for 'process' name collision h/t Javarome\r\n// https://github.com/adraffy/ens-normalize.js/issues/23\r\nfunction tokens_from_str(input, nf, ef) {\r\n\tlet ret = [];\r\n\tlet chars = [];\r\n\tinput = input.slice().reverse(); // flip so we can pop\r\n\twhile (input.length) {\r\n\t\tlet emoji = consume_emoji_reversed(input);\r\n\t\tif (emoji) {\r\n\t\t\tif (chars.length) {\r\n\t\t\t\tret.push(nf(chars));\r\n\t\t\t\tchars = [];\r\n\t\t\t}\r\n\t\t\tret.push(ef(emoji));\r\n\t\t} else {\r\n\t\t\tlet cp = input.pop();\r\n\t\t\tif (VALID.has(cp)) {\r\n\t\t\t\tchars.push(cp);\r\n\t\t\t} else {\r\n\t\t\t\tlet cps = MAPPED.get(cp);\r\n\t\t\t\tif (cps) {\r\n\t\t\t\t\tchars.push(...cps); // less than 10 elements\r\n\t\t\t\t} else if (!IGNORED.has(cp)) {\r\n\t\t\t\t\t// 20230912: unicode 15.1 changed the order of processing such that\r\n\t\t\t\t\t// disallowed parts are only rejected after NFC\r\n\t\t\t\t\t// https://unicode.org/reports/tr46/#Validity_Criteria\r\n\t\t\t\t\t// this doesn't impact normalization as of today\r\n\t\t\t\t\t// technically, this error can be removed as the group logic will apply similar logic\r\n\t\t\t\t\t// however the error type might be less clear\r\n\t\t\t\t\tthrow error_disallowed(cp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (chars.length) {\r\n\t\tret.push(nf(chars));\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction filter_fe0f(cps) {\r\n\treturn cps.filter(cp => cp != FE0F);\r\n}\r\n\r\n// given array of codepoints\r\n// returns the longest valid emoji sequence (or undefined if no match)\r\n// *MUTATES* the supplied array\r\n// disallows interleaved ignored characters\r\n// fills (optional) eaten array with matched codepoints\r\nfunction consume_emoji_reversed(cps, eaten) {\r\n\tlet node = EMOJI_ROOT;\r\n\tlet emoji;\r\n\tlet pos = cps.length;\r\n\twhile (pos) {\r\n\t\tnode = node.get(cps[--pos]);\r\n\t\tif (!node) break;\r\n\t\tlet {V} = node;\r\n\t\tif (V) { // this is a valid emoji (so far)\r\n\t\t\temoji = V;\r\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // (optional) copy input, used for ens_tokenize()\r\n\t\t\tcps.length = pos; // truncate\r\n\t\t}\r\n\t}\r\n\treturn emoji;\r\n}\r\n\r\n// ************************************************************\r\n// tokenizer \r\n\r\nconst TY_VALID = 'valid';\r\nconst TY_MAPPED = 'mapped';\r\nconst TY_IGNORED = 'ignored';\r\nconst TY_DISALLOWED = 'disallowed';\r\nconst TY_EMOJI = 'emoji';\r\nconst TY_NFC = 'nfc';\r\nconst TY_STOP = 'stop';\r\n\r\nfunction ens_tokenize(name, {\r\n\tnf = true, // collapse unnormalized runs into a single token\r\n} = {}) {\r\n\tinit();\r\n\tlet input = explode_cp(name).reverse();\r\n\tlet eaten = [];\r\n\tlet tokens = [];\r\n\twhile (input.length) {\r\n\t\tlet emoji = consume_emoji_reversed(input, eaten);\r\n\t\tif (emoji) {\r\n\t\t\ttokens.push({\r\n\t\t\t\ttype: TY_EMOJI,\r\n\t\t\t\temoji: emoji.slice(), // copy emoji\r\n\t\t\t\tinput: eaten,\r\n\t\t\t\tcps: filter_fe0f(emoji)\r\n\t\t\t});\r\n\t\t\teaten = []; // reset buffer\r\n\t\t} else {\r\n\t\t\tlet cp = input.pop();\r\n\t\t\tif (cp == STOP) {\r\n\t\t\t\ttokens.push({type: TY_STOP, cp});\r\n\t\t\t} else if (VALID.has(cp)) {\r\n\t\t\t\ttokens.push({type: TY_VALID, cps: [cp]});\r\n\t\t\t} else if (IGNORED.has(cp)) {\r\n\t\t\t\ttokens.push({type: TY_IGNORED, cp});\r\n\t\t\t} else {\r\n\t\t\t\tlet cps = MAPPED.get(cp);\r\n\t\t\t\tif (cps) {\r\n\t\t\t\t\ttokens.push({type: TY_MAPPED, cp, cps: cps.slice()});\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttokens.push({type: TY_DISALLOWED, cp});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (nf) {\r\n\t\tfor (let i = 0, start = -1; i < tokens.length; i++) {\r\n\t\t\tlet token = tokens[i];\r\n\t\t\tif (is_valid_or_mapped(token.type)) {\r\n\t\t\t\tif (requires_check(token.cps)) { // normalization might be needed\r\n\t\t\t\t\tlet end = i + 1;\r\n\t\t\t\t\tfor (let pos = end; pos < tokens.length; pos++) { // find adjacent text\r\n\t\t\t\t\t\tlet {type, cps} = tokens[pos];\r\n\t\t\t\t\t\tif (is_valid_or_mapped(type)) {\r\n\t\t\t\t\t\t\tif (!requires_check(cps)) break;\r\n\t\t\t\t\t\t\tend = pos + 1;\r\n\t\t\t\t\t\t} else if (type !== TY_IGNORED) { // || type !== TY_DISALLOWED) { \r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (start < 0) start = i;\r\n\t\t\t\t\tlet slice = tokens.slice(start, end);\r\n\t\t\t\t\tlet cps0 = slice.flatMap(x => is_valid_or_mapped(x.type) ? x.cps : []); // strip junk tokens\r\n\t\t\t\t\tlet cps = nfc(cps0);\r\n\t\t\t\t\tif (compare_arrays(cps, cps0)) { // bundle into an nfc token\r\n\t\t\t\t\t\ttokens.splice(start, end - start, {\r\n\t\t\t\t\t\t\ttype: TY_NFC, \r\n\t\t\t\t\t\t\tinput: cps0, // there are 3 states: tokens0 ==(process)=> input ==(nfc)=> tokens/cps\r\n\t\t\t\t\t\t\tcps, \r\n\t\t\t\t\t\t\ttokens0: collapse_valid_tokens(slice),\r\n\t\t\t\t\t\t\ttokens: ens_tokenize(str_from_cps(cps), {nf: false})\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\ti = start;\r\n\t\t\t\t\t} else { \r\n\t\t\t\t\t\ti = end - 1; // skip to end of slice\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart = -1; // reset\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstart = i; // remember last\r\n\t\t\t\t}\r\n\t\t\t} else if (token.type !== TY_IGNORED) { // 20221024: is this correct?\r\n\t\t\t\tstart = -1; // reset\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn collapse_valid_tokens(tokens);\r\n}\r\n\r\nfunction is_valid_or_mapped(type) {\r\n\treturn type == TY_VALID || type == TY_MAPPED;\r\n}\r\n\r\nfunction requires_check(cps) {\r\n\treturn cps.some(cp => NFC_CHECK.has(cp));\r\n}\r\n\r\nfunction collapse_valid_tokens(tokens) {\r\n\tfor (let i = 0; i < tokens.length; i++) {\r\n\t\tif (tokens[i].type == TY_VALID) {\r\n\t\t\tlet j = i + 1;\r\n\t\t\twhile (j < tokens.length && tokens[j].type == TY_VALID) j++;\r\n\t\t\ttokens.splice(i, j - i, {type: TY_VALID, cps: tokens.slice(i, j).flatMap(x => x.cps)});\r\n\t\t}\r\n\t}\r\n\treturn tokens;\r\n}\n\nexport { ens_beautify, ens_emoji, ens_normalize, ens_normalize_fragment, ens_split, ens_tokenize, is_combining_mark, nfc, nfd, safe_str_from_cps, should_escape };\n","import { keccak256 } from \"../crypto/index.js\";\nimport { concat, hexlify, assertArgument, toUtf8Bytes } from \"../utils/index.js\";\nimport { ens_normalize } from \"@adraffy/ens-normalize\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n assertArgument(comp.length !== 0, \"invalid ENS name; empty component\", \"comp\", comp);\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ensNormalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n assertArgument(last < bytes.length, \"invalid ENS name; empty component\", \"name\", name);\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n/**\n * Returns the ENS %%name%% normalized.\n */\nexport function ensNormalize(name) {\n try {\n if (name.length === 0) {\n throw new Error(\"empty label\");\n }\n return ens_normalize(name);\n }\n catch (error) {\n assertArgument(false, `invalid ENS name (${error.message})`, \"name\", name);\n }\n}\n/**\n * Returns ``true`` if %%name%% is a valid ENS name.\n */\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\n/**\n * Returns the [[link-namehash]] for %%name%%.\n */\nexport function namehash(name) {\n assertArgument(typeof (name) === \"string\", \"invalid ENS name; not a string\", \"name\", name);\n assertArgument(name.length, `invalid ENS name (empty label)`, \"name\", name);\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256((comps.pop()))]));\n }\n return hexlify(result);\n}\n/**\n * Returns the DNS encoded %%name%%.\n *\n * This is used for various parts of ENS name resolution, such\n * as the wildcard resolution.\n */\nexport function dnsEncode(name, _maxLength) {\n const length = (_maxLength != null) ? _maxLength : 63;\n assertArgument(length <= 255, \"DNS encoded label cannot exceed 255\", \"length\", length);\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n assertArgument(comp.length <= length, `label ${JSON.stringify(name)} exceeds ${length} bytes`, \"name\", name);\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { getAddress } from \"../address/index.js\";\nimport { assertArgument, isHexString } from \"../utils/index.js\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: storageKeys.map((storageKey, index) => {\n assertArgument(isHexString(storageKey, 32), \"invalid slot\", `storageKeys[${index}]`, storageKey);\n return storageKey.toLowerCase();\n })\n };\n}\n/**\n * Returns a [[AccessList]] from any ethers-supported access-list structure.\n */\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n assertArgument(set.length === 2, \"invalid slot set\", `value[${index}]`, set);\n return accessSetify(set[0], set[1]);\n }\n assertArgument(set != null && typeof (set) === \"object\", \"invalid address-slot set\", \"value\", value);\n return accessSetify(set.address, set.storageKeys);\n });\n }\n assertArgument(value != null && typeof (value) === \"object\", \"invalid access list\", \"value\", value);\n const result = Object.keys(value).map((addr) => {\n const storageKeys = 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//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"../address/index.js\";\nimport { keccak256, SigningKey } from \"../crypto/index.js\";\n/**\n * Returns the address for the %%key%%.\n *\n * The key may be any standard form of public key or a private key.\n */\nexport function computeAddress(key) {\n let pubkey;\n if (typeof (key) === \"string\") {\n pubkey = SigningKey.computePublicKey(key, false);\n }\n else {\n pubkey = key.publicKey;\n }\n return getAddress(keccak256(\"0x\" + pubkey.substring(4)).substring(26));\n}\n/**\n * Returns the recovered address for the private key that was\n * used to sign %%digest%% that resulted in %%signature%%.\n */\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","import { getAddress } from \"../address/index.js\";\nimport { ZeroAddress } from \"../constants/addresses.js\";\nimport { keccak256, sha256, Signature, SigningKey } from \"../crypto/index.js\";\nimport { concat, decodeRlp, encodeRlp, getBytes, getBigInt, getNumber, hexlify, assert, assertArgument, isBytesLike, isHexString, toBeArray, zeroPadValue } from \"../utils/index.js\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nconst BLOB_SIZE = 4096 * 32;\nfunction getVersionedHash(version, hash) {\n let versioned = version.toString(16);\n while (versioned.length < 2) {\n versioned = \"0\" + versioned;\n }\n versioned += sha256(hash).substring(4);\n return \"0x\" + versioned;\n}\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n assertArgument(false, error.message, param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = getBigInt(_value, param);\n assertArgument(value <= BN_MAX_UINT, \"value exceeds uint size\", param, value);\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = getBigInt(_value, \"value\");\n const result = toBeArray(value);\n assertArgument(result.length <= 32, `value too large`, `tx.${name}`, value);\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction formatHashes(value, param) {\n assertArgument(Array.isArray(value), `invalid ${param}`, \"value\", value);\n for (let i = 0; i < value.length; i++) {\n assertArgument(isHexString(value[i], 32), \"invalid ${ param } hash\", `value[${i}]`, value[i]);\n }\n return value;\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n assertArgument(Array.isArray(fields) && (fields.length === 9 || fields.length === 6), \"invalid field count for legacy transaction\", \"data\", data);\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: hexlify(fields[5]),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n assertArgument(chainId !== BN_0 || (v === BN_27 || v === BN_28), \"non-canonical legacy v\", \"v\", fields[6]);\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n //tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit, \"gasLimit\"),\n (tx.to || \"0x\"),\n formatNumber(tx.value, \"value\"),\n tx.data,\n ];\n let chainId = BN_0;\n if (tx.chainId != BN_0) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n assertArgument(!sig || sig.networkV == null || sig.legacyChainId === chainId, \"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n else if (tx.signature) {\n // No explicit chainId, but EIP-155 have a derived implicit chainId\n const legacy = tx.signature.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toBeArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // @TODO: We should probably check that tx.signature, chainId, and sig\n // match but that logic could break existing code, so schedule\n // this for the next major bump.\n // Compute the EIP-155 v\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n assertArgument(false, \"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n // Add the signature\n fields.push(toBeArray(v));\n fields.push(toBeArray(sig.r));\n fields.push(toBeArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n assertArgument(false, \"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(getBytes(data).slice(1));\n assertArgument(Array.isArray(fields) && (fields.length === 9 || fields.length === 12), \"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: handleUint(fields[2], \"maxPriorityFeePerGas\"),\n maxFeePerGas: handleUint(fields[3], \"maxFeePerGas\"),\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: hexlify(fields[7]),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n //tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9));\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId, \"chainId\"),\n formatNumber(tx.nonce, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit, \"gasLimit\"),\n (tx.to || \"0x\"),\n formatNumber(tx.value, \"value\"),\n tx.data,\n formatAccessList(tx.accessList || [])\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toBeArray(sig.r));\n fields.push(toBeArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(getBytes(data).slice(1));\n assertArgument(Array.isArray(fields) && (fields.length === 8 || fields.length === 11), \"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: hexlify(fields[6]),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n //tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8));\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId, \"chainId\"),\n formatNumber(tx.nonce, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit, \"gasLimit\"),\n (tx.to || \"0x\"),\n formatNumber(tx.value, \"value\"),\n tx.data,\n formatAccessList(tx.accessList || [])\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toBeArray(sig.r));\n fields.push(toBeArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nfunction _parseEip4844(data) {\n let fields = decodeRlp(getBytes(data).slice(1));\n let typeName = \"3\";\n let blobs = null;\n // Parse the network format\n if (fields.length === 4 && Array.isArray(fields[0])) {\n typeName = \"3 (network format)\";\n const fBlobs = fields[1], fCommits = fields[2], fProofs = fields[3];\n assertArgument(Array.isArray(fBlobs), \"invalid network format: blobs not an array\", \"fields[1]\", fBlobs);\n assertArgument(Array.isArray(fCommits), \"invalid network format: commitments not an array\", \"fields[2]\", fCommits);\n assertArgument(Array.isArray(fProofs), \"invalid network format: proofs not an array\", \"fields[3]\", fProofs);\n assertArgument(fBlobs.length === fCommits.length, \"invalid network format: blobs/commitments length mismatch\", \"fields\", fields);\n assertArgument(fBlobs.length === fProofs.length, \"invalid network format: blobs/proofs length mismatch\", \"fields\", fields);\n blobs = [];\n for (let i = 0; i < fields[1].length; i++) {\n blobs.push({\n data: fBlobs[i],\n commitment: fCommits[i],\n proof: fProofs[i],\n });\n }\n fields = fields[0];\n }\n assertArgument(Array.isArray(fields) && (fields.length === 11 || fields.length === 14), `invalid field count for transaction type: ${typeName}`, \"data\", hexlify(data));\n const tx = {\n type: 3,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: handleUint(fields[2], \"maxPriorityFeePerGas\"),\n maxFeePerGas: handleUint(fields[3], \"maxFeePerGas\"),\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: hexlify(fields[7]),\n accessList: handleAccessList(fields[8], \"accessList\"),\n maxFeePerBlobGas: handleUint(fields[9], \"maxFeePerBlobGas\"),\n blobVersionedHashes: fields[10]\n };\n if (blobs) {\n tx.blobs = blobs;\n }\n assertArgument(tx.to != null, `invalid address for transaction type: ${typeName}`, \"data\", data);\n assertArgument(Array.isArray(tx.blobVersionedHashes), \"invalid blobVersionedHashes: must be an array\", \"data\", data);\n for (let i = 0; i < tx.blobVersionedHashes.length; i++) {\n assertArgument(isHexString(tx.blobVersionedHashes[i], 32), `invalid blobVersionedHash at index ${i}: must be length 32`, \"data\", data);\n }\n // Unsigned EIP-4844 Transaction\n if (fields.length === 11) {\n return tx;\n }\n // @TODO: Do we need to do this? This is only called internally\n // and used to verify hashes; it might save time to not do this\n //tx.hash = keccak256(concat([ \"0x03\", encodeRlp(fields) ]));\n _parseEipSignature(tx, fields.slice(11));\n return tx;\n}\nfunction _serializeEip4844(tx, sig, blobs) {\n const fields = [\n formatNumber(tx.chainId, \"chainId\"),\n formatNumber(tx.nonce, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit, \"gasLimit\"),\n (tx.to || ZeroAddress),\n formatNumber(tx.value, \"value\"),\n tx.data,\n formatAccessList(tx.accessList || []),\n formatNumber(tx.maxFeePerBlobGas || 0, \"maxFeePerBlobGas\"),\n formatHashes(tx.blobVersionedHashes || [], \"blobVersionedHashes\")\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toBeArray(sig.r));\n fields.push(toBeArray(sig.s));\n // We have blobs; return the network wrapped format\n if (blobs) {\n return concat([\n \"0x03\",\n encodeRlp([\n fields,\n blobs.map((b) => b.data),\n blobs.map((b) => b.commitment),\n blobs.map((b) => b.proof),\n ])\n ]);\n }\n }\n return concat([\"0x03\", encodeRlp(fields)]);\n}\n/**\n * A **Transaction** describes an operation to be executed on\n * Ethereum by an Externally Owned Account (EOA). It includes\n * who (the [[to]] address), what (the [[data]]) and how much (the\n * [[value]] in ether) the operation should entail.\n *\n * @example:\n * tx = new Transaction()\n * //_result:\n *\n * tx.data = \"0x1234\";\n * //_result:\n */\nexport class Transaction {\n #type;\n #to;\n #data;\n #nonce;\n #gasLimit;\n #gasPrice;\n #maxPriorityFeePerGas;\n #maxFeePerGas;\n #value;\n #chainId;\n #sig;\n #accessList;\n #maxFeePerBlobGas;\n #blobVersionedHashes;\n #kzg;\n #blobs;\n /**\n * The transaction type.\n *\n * If null, the type will be automatically inferred based on\n * explicit properties.\n */\n get type() { return this.#type; }\n set type(value) {\n switch (value) {\n case null:\n this.#type = null;\n break;\n case 0:\n case \"legacy\":\n this.#type = 0;\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n this.#type = 1;\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n this.#type = 2;\n break;\n case 3:\n case \"cancun\":\n case \"eip-4844\":\n this.#type = 3;\n break;\n default:\n assertArgument(false, \"unsupported transaction type\", \"type\", value);\n }\n }\n /**\n * The name of the transaction type.\n */\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n case 3: return \"eip-4844\";\n }\n return null;\n }\n /**\n * The ``to`` address for the transaction or ``null`` if the\n * transaction is an ``init`` transaction.\n */\n get to() {\n const value = this.#to;\n if (value == null && this.type === 3) {\n return ZeroAddress;\n }\n return value;\n }\n set to(value) {\n this.#to = (value == null) ? null : getAddress(value);\n }\n /**\n * The transaction nonce.\n */\n get nonce() { return this.#nonce; }\n set nonce(value) { this.#nonce = getNumber(value, \"value\"); }\n /**\n * The gas limit.\n */\n get gasLimit() { return this.#gasLimit; }\n set gasLimit(value) { this.#gasLimit = getBigInt(value); }\n /**\n * The gas price.\n *\n * On legacy networks this defines the fee that will be paid. On\n * EIP-1559 networks, this should be ``null``.\n */\n get gasPrice() {\n const value = this.#gasPrice;\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n this.#gasPrice = (value == null) ? null : getBigInt(value, \"gasPrice\");\n }\n /**\n * The maximum priority fee per unit of gas to pay. On legacy\n * networks this should be ``null``.\n */\n get maxPriorityFeePerGas() {\n const value = this.#maxPriorityFeePerGas;\n if (value == null) {\n if (this.type === 2 || this.type === 3) {\n return BN_0;\n }\n return null;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n this.#maxPriorityFeePerGas = (value == null) ? null : getBigInt(value, \"maxPriorityFeePerGas\");\n }\n /**\n * The maximum total fee per unit of gas to pay. On legacy\n * networks this should be ``null``.\n */\n get maxFeePerGas() {\n const value = this.#maxFeePerGas;\n if (value == null) {\n if (this.type === 2 || this.type === 3) {\n return BN_0;\n }\n return null;\n }\n return value;\n }\n set maxFeePerGas(value) {\n this.#maxFeePerGas = (value == null) ? null : getBigInt(value, \"maxFeePerGas\");\n }\n /**\n * The transaction data. For ``init`` transactions this is the\n * deployment code.\n */\n get data() { return this.#data; }\n set data(value) { this.#data = hexlify(value); }\n /**\n * The amount of ether (in wei) to send in this transactions.\n */\n get value() { return this.#value; }\n set value(value) {\n this.#value = getBigInt(value, \"value\");\n }\n /**\n * The chain ID this transaction is valid on.\n */\n get chainId() { return this.#chainId; }\n set chainId(value) { this.#chainId = getBigInt(value); }\n /**\n * If signed, the signature for this transaction.\n */\n get signature() { return this.#sig || null; }\n set signature(value) {\n this.#sig = (value == null) ? null : Signature.from(value);\n }\n /**\n * The access list.\n *\n * An access list permits discounted (but pre-paid) access to\n * bytecode and state variable access within contract execution.\n */\n get accessList() {\n const value = this.#accessList || null;\n if (value == null) {\n if (this.type === 1 || this.type === 2 || this.type === 3) {\n // @TODO: in v7, this should assign the value or become\n // a live object itself, otherwise mutation is inconsistent\n return [];\n }\n return null;\n }\n return value;\n }\n set accessList(value) {\n this.#accessList = (value == null) ? null : accessListify(value);\n }\n /**\n * The max fee per blob gas for Cancun transactions.\n */\n get maxFeePerBlobGas() {\n const value = this.#maxFeePerBlobGas;\n if (value == null && this.type === 3) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerBlobGas(value) {\n this.#maxFeePerBlobGas = (value == null) ? null : getBigInt(value, \"maxFeePerBlobGas\");\n }\n /**\n * The BLOb versioned hashes for Cancun transactions.\n */\n get blobVersionedHashes() {\n // @TODO: Mutation is inconsistent; if unset, the returned value\n // cannot mutate the object, if set it can\n let value = this.#blobVersionedHashes;\n if (value == null && this.type === 3) {\n return [];\n }\n return value;\n }\n set blobVersionedHashes(value) {\n if (value != null) {\n assertArgument(Array.isArray(value), \"blobVersionedHashes must be an Array\", \"value\", value);\n value = value.slice();\n for (let i = 0; i < value.length; i++) {\n assertArgument(isHexString(value[i], 32), \"invalid blobVersionedHash\", `value[${i}]`, value[i]);\n }\n }\n this.#blobVersionedHashes = value;\n }\n /**\n * The BLObs for the Transaction, if any.\n *\n * If ``blobs`` is non-``null``, then the [[seriailized]]\n * will return the network formatted sidecar, otherwise it\n * will return the standard [[link-eip-2718]] payload. The\n * [[unsignedSerialized]] is unaffected regardless.\n *\n * When setting ``blobs``, either fully valid [[Blob]] objects\n * may be specified (i.e. correctly padded, with correct\n * committments and proofs) or a raw [[BytesLike]] may\n * be provided.\n *\n * If raw [[BytesLike]] are provided, the [[kzg]] property **must**\n * be already set. The blob will be correctly padded and the\n * [[KzgLibrary]] will be used to compute the committment and\n * proof for the blob.\n *\n * A BLOb is a sequence of field elements, each of which must\n * be within the BLS field modulo, so some additional processing\n * may be required to encode arbitrary data to ensure each 32 byte\n * field is within the valid range.\n *\n * Setting this automatically populates [[blobVersionedHashes]],\n * overwriting any existing values. Setting this to ``null``\n * does **not** remove the [[blobVersionedHashes]], leaving them\n * present.\n */\n get blobs() {\n if (this.#blobs == null) {\n return null;\n }\n return this.#blobs.map((b) => Object.assign({}, b));\n }\n set blobs(_blobs) {\n if (_blobs == null) {\n this.#blobs = null;\n return;\n }\n const blobs = [];\n const versionedHashes = [];\n for (let i = 0; i < _blobs.length; i++) {\n const blob = _blobs[i];\n if (isBytesLike(blob)) {\n assert(this.#kzg, \"adding a raw blob requires a KZG library\", \"UNSUPPORTED_OPERATION\", {\n operation: \"set blobs()\"\n });\n let data = getBytes(blob);\n assertArgument(data.length <= BLOB_SIZE, \"blob is too large\", `blobs[${i}]`, blob);\n // Pad blob if necessary\n if (data.length !== BLOB_SIZE) {\n const padded = new Uint8Array(BLOB_SIZE);\n padded.set(data);\n data = padded;\n }\n const commit = this.#kzg.blobToKzgCommitment(data);\n const proof = hexlify(this.#kzg.computeBlobKzgProof(data, commit));\n blobs.push({\n data: hexlify(data),\n commitment: hexlify(commit),\n proof\n });\n versionedHashes.push(getVersionedHash(1, commit));\n }\n else {\n const commit = hexlify(blob.commitment);\n blobs.push({\n data: hexlify(blob.data),\n commitment: commit,\n proof: hexlify(blob.proof)\n });\n versionedHashes.push(getVersionedHash(1, commit));\n }\n }\n this.#blobs = blobs;\n this.#blobVersionedHashes = versionedHashes;\n }\n get kzg() { return this.#kzg; }\n set kzg(kzg) {\n this.#kzg = kzg;\n }\n /**\n * Creates a new Transaction with default values.\n */\n constructor() {\n this.#type = null;\n this.#to = null;\n this.#nonce = 0;\n this.#gasLimit = BN_0;\n this.#gasPrice = null;\n this.#maxPriorityFeePerGas = null;\n this.#maxFeePerGas = null;\n this.#data = \"0x\";\n this.#value = BN_0;\n this.#chainId = BN_0;\n this.#sig = null;\n this.#accessList = null;\n this.#maxFeePerBlobGas = null;\n this.#blobVersionedHashes = null;\n this.#blobs = null;\n this.#kzg = null;\n }\n /**\n * The transaction hash, if signed. Otherwise, ``null``.\n */\n get hash() {\n if (this.signature == null) {\n return null;\n }\n return keccak256(this.#getSerialized(true, false));\n }\n /**\n * The pre-image hash of this transaction.\n *\n * This is the digest that a [[Signer]] must sign to authorize\n * this transaction.\n */\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n /**\n * The sending address, if signed. Otherwise, ``null``.\n */\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedHash, this.signature);\n }\n /**\n * The public key of the sender, if signed. Otherwise, ``null``.\n */\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n return SigningKey.recoverPublicKey(this.unsignedHash, this.signature);\n }\n /**\n * Returns true if signed.\n *\n * This provides a Type Guard that properties requiring a signed\n * transaction are non-null.\n */\n isSigned() {\n return this.signature != null;\n }\n #getSerialized(signed, sidecar) {\n assert(!signed || this.signature != null, \"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\", \"UNSUPPORTED_OPERATION\", { operation: \".serialized\" });\n const sig = signed ? this.signature : null;\n switch (this.inferType()) {\n case 0:\n return _serializeLegacy(this, sig);\n case 1:\n return _serializeEip2930(this, sig);\n case 2:\n return _serializeEip1559(this, sig);\n case 3:\n return _serializeEip4844(this, sig, sidecar ? this.blobs : null);\n }\n assert(false, \"unsupported transaction type\", \"UNSUPPORTED_OPERATION\", { operation: \".serialized\" });\n }\n /**\n * The serialized transaction.\n *\n * This throws if the transaction is unsigned. For the pre-image,\n * use [[unsignedSerialized]].\n */\n get serialized() {\n return this.#getSerialized(true, true);\n }\n /**\n * The transaction pre-image.\n *\n * The hash of this is the digest which needs to be signed to\n * authorize this transaction.\n */\n get unsignedSerialized() {\n return this.#getSerialized(false, false);\n }\n /**\n * Return the most \"likely\" type; currently the highest\n * supported transaction type.\n */\n inferType() {\n const types = this.inferTypes();\n // Prefer London (EIP-1559) over Cancun (BLOb)\n if (types.indexOf(2) >= 0) {\n return 2;\n }\n // Return the highest inferred type\n return (types.pop());\n }\n /**\n * Validates the explicit properties and returns a list of compatible\n * transaction types.\n */\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n const hasBlob = (this.#maxFeePerBlobGas != null || this.#blobVersionedHashes);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n assert(this.maxFeePerGas >= this.maxPriorityFeePerGas, \"priorityFee cannot be more than maxFee\", \"BAD_DATA\", { value: this });\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n assert(!hasFee || (this.type !== 0 && this.type !== 1), \"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\", \"BAD_DATA\", { value: this });\n assert(this.type !== 0 || !hasAccessList, \"legacy transaction cannot have accessList\", \"BAD_DATA\", { value: this });\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else if (hasBlob && this.to) {\n types.push(3);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n types.push(3);\n }\n }\n types.sort();\n return types;\n }\n /**\n * Returns true if this transaction is a legacy transaction (i.e.\n * ``type === 0``).\n *\n * This provides a Type Guard that the related properties are\n * non-null.\n */\n isLegacy() {\n return (this.type === 0);\n }\n /**\n * Returns true if this transaction is berlin hardform transaction (i.e.\n * ``type === 1``).\n *\n * This provides a Type Guard that the related properties are\n * non-null.\n */\n isBerlin() {\n return (this.type === 1);\n }\n /**\n * Returns true if this transaction is london hardform transaction (i.e.\n * ``type === 2``).\n *\n * This provides a Type Guard that the related properties are\n * non-null.\n */\n isLondon() {\n return (this.type === 2);\n }\n /**\n * Returns true if this transaction is an [[link-eip-4844]] BLOB\n * transaction.\n *\n * This provides a Type Guard that the related properties are\n * non-null.\n */\n isCancun() {\n return (this.type === 3);\n }\n /**\n * Create a copy of this transaciton.\n */\n clone() {\n return Transaction.from(this);\n }\n /**\n * Return a JSON-friendly object.\n */\n toJSON() {\n const s = (v) => {\n if (v == null) {\n return null;\n }\n return v.toString();\n };\n return {\n type: this.type,\n to: this.to,\n // from: this.from,\n data: this.data,\n nonce: this.nonce,\n gasLimit: s(this.gasLimit),\n gasPrice: s(this.gasPrice),\n maxPriorityFeePerGas: s(this.maxPriorityFeePerGas),\n maxFeePerGas: s(this.maxFeePerGas),\n value: s(this.value),\n chainId: s(this.chainId),\n sig: this.signature ? this.signature.toJSON() : null,\n accessList: this.accessList\n };\n }\n /**\n * Create a **Transaction** from a serialized transaction or a\n * Transaction-like object.\n */\n static from(tx) {\n if (tx == null) {\n return new Transaction();\n }\n if (typeof (tx) === \"string\") {\n const payload = getBytes(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n case 3: return Transaction.from(_parseEip4844(payload));\n }\n assert(false, \"unsupported transaction type\", \"UNSUPPORTED_OPERATION\", { operation: \"from\" });\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.maxFeePerBlobGas != null) {\n result.maxFeePerBlobGas = tx.maxFeePerBlobGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n // This will get overwritten by blobs, if present\n if (tx.blobVersionedHashes != null) {\n result.blobVersionedHashes = tx.blobVersionedHashes;\n }\n // Make sure we assign the kzg before assigning blobs, which\n // require the library in the event raw blob data is provided.\n if (tx.kzg != null) {\n result.kzg = tx.kzg;\n }\n if (tx.blobs != null) {\n result.blobs = tx.blobs;\n }\n if (tx.hash != null) {\n assertArgument(result.isSigned(), \"unsigned transaction cannot define '.hash'\", \"tx\", tx);\n assertArgument(result.hash === tx.hash, \"hash mismatch\", \"tx\", tx);\n }\n if (tx.from != null) {\n assertArgument(result.isSigned(), \"unsigned transaction cannot define '.from'\", \"tx\", tx);\n assertArgument(result.from.toLowerCase() === (tx.from || \"\").toLowerCase(), \"from mismatch\", \"tx\", tx);\n }\n return result;\n }\n}\n//# sourceMappingURL=transaction.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { MessagePrefix } from \"../constants/index.js\";\nimport { recoverAddress } from \"../transaction/index.js\";\nimport { concat, toUtf8Bytes } from \"../utils/index.js\";\n/**\n * Computes the [[link-eip-191]] personal-sign message digest to sign.\n *\n * This prefixes the message with [[MessagePrefix]] and the decimal length\n * of %%message%% and computes the [[keccak256]] digest.\n *\n * If %%message%% is a string, it is converted to its UTF-8 bytes\n * first. To compute the digest of a [[DataHexString]], it must be converted\n * to [bytes](getBytes).\n *\n * @example:\n * hashMessage(\"Hello World\")\n * //_result:\n *\n * // Hashes the SIX (6) string characters, i.e.\n * // [ \"0\", \"x\", \"4\", \"2\", \"4\", \"3\" ]\n * hashMessage(\"0x4243\")\n * //_result:\n *\n * // Hashes the TWO (2) bytes [ 0x42, 0x43 ]...\n * hashMessage(getBytes(\"0x4243\"))\n * //_result:\n *\n * // ...which is equal to using data\n * hashMessage(new Uint8Array([ 0x42, 0x43 ]))\n * //_result:\n *\n */\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(MessagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n/**\n * Return the address of the private key that produced\n * the signature %%sig%% during signing for %%message%%.\n */\nexport function verifyMessage(message, sig) {\n const digest = hashMessage(message);\n return recoverAddress(digest, sig);\n}\n//# sourceMappingURL=message.js.map","import { getAddress } from \"../address/index.js\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"../crypto/index.js\";\nimport { concat, dataLength, getBytes, hexlify, toBeArray, toTwos, toUtf8Bytes, zeroPadBytes, zeroPadValue, assertArgument } from \"../utils/index.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return getBytes(zeroPadValue(value, 32));\n }\n return getBytes(getAddress(value));\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return getBytes(zeroPadValue(value, 32));\n }\n return getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let signed = (match[1] === \"int\");\n let size = parseInt(match[2] || \"256\");\n assertArgument((!match[2] || match[2] === String(size)) && (size % 8 === 0) && size !== 0 && size <= 256, \"invalid number type\", \"type\", type);\n if (isArray) {\n size = 256;\n }\n if (signed) {\n value = toTwos(value, size);\n }\n return getBytes(zeroPadValue(toBeArray(value), size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n assertArgument(String(size) === match[1] && size !== 0 && size <= 32, \"invalid bytes type\", \"type\", type);\n assertArgument(dataLength(value) === size, `invalid value for ${type}`, \"value\", value);\n if (isArray) {\n return getBytes(zeroPadBytes(value, 32));\n }\n return value;\n }\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n assertArgument(count === value.length, `invalid array length for ${type}`, \"value\", value);\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return getBytes(concat(result));\n }\n assertArgument(false, \"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\n/**\n * Computes the [[link-solc-packed]] representation of %%values%%\n * respectively to their %%types%%.\n *\n * @example:\n * addr = \"0x8ba1f109551bd432803012645ac136ddd64dba72\"\n * solidityPacked([ \"address\", \"uint\" ], [ addr, 45 ]);\n * //_result:\n */\nexport function solidityPacked(types, values) {\n assertArgument(types.length === values.length, \"wrong number of values; expected ${ types.length }\", \"values\", values);\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n/**\n * Computes the [[link-solc-packed]] [[keccak256]] hash of %%values%%\n * respectively to their %%types%%.\n *\n * @example:\n * addr = \"0x8ba1f109551bd432803012645ac136ddd64dba72\"\n * solidityPackedKeccak256([ \"address\", \"uint\" ], [ addr, 45 ]);\n * //_result:\n */\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\n/**\n * Computes the [[link-solc-packed]] [[sha256]] hash of %%values%%\n * respectively to their %%types%%.\n *\n * @example:\n * addr = \"0x8ba1f109551bd432803012645ac136ddd64dba72\"\n * solidityPackedSha256([ \"address\", \"uint\" ], [ addr, 45 ]);\n * //_result:\n */\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"../address/index.js\";\nimport { keccak256 } from \"../crypto/index.js\";\nimport { recoverAddress } from \"../transaction/index.js\";\nimport { concat, defineProperties, getBigInt, getBytes, hexlify, isHexString, mask, toBeHex, toQuantity, toTwos, zeroPadValue, assertArgument } from \"../utils/index.js\";\nimport { id } from \"./id.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = getBytes(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toBeHex(BN_1, 32);\nconst hexFalse = toBeHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n assertArgument(typeof (value) === \"string\", `invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (_value) {\n const value = getBigInt(_value, \"domain.chainId\");\n assertArgument(value >= 0, \"invalid chain ID\", \"domain.chainId\", _value);\n if (Number.isSafeInteger(value)) {\n return Number(value);\n }\n return toQuantity(value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n assertArgument(false, `invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = getBytes(value, \"domain.salt\");\n assertArgument(bytes.length === 32, `invalid domain value \"salt\"`, \"domain.salt\", value);\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d+)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2]);\n assertArgument(width % 8 === 0 && width !== 0 && width <= 256 && match[2] === String(width), \"invalid numeric width\", \"type\", type);\n const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = getBigInt(_value, \"value\");\n assertArgument(value >= boundsLower && value <= boundsUpper, `value out-of-bounds for ${type}`, \"value\", value);\n return toBeHex(signed ? toTwos(value, 256) : value, 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n assertArgument(width !== 0 && width <= 32 && match[1] === String(width), \"invalid bytes width\", \"type\", type);\n return function (value) {\n const bytes = getBytes(value);\n assertArgument(bytes.length === width, `invalid length for ${type}`, \"value\", value);\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\n// foo[][3] => { base: \"foo\", index: \"[][3]\", array: {\n// base: \"foo\", prefix: \"foo[]\", count: 3 } }\nfunction splitArray(type) {\n const match = type.match(/^([^\\x5b]*)((\\x5b\\d*\\x5d)*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n return {\n base: match[1],\n index: (match[2] + match[4]),\n array: {\n base: match[1],\n prefix: (match[1] + match[2]),\n count: (match[5] ? parseInt(match[5]) : -1),\n }\n };\n }\n return { base: type };\n}\n/**\n * A **TypedDataEncode** prepares and encodes [[link-eip-712]] payloads\n * for signed typed data.\n *\n * This is useful for those that wish to compute various components of a\n * typed data hash, primary types, or sub-components, but generally the\n * higher level [[Signer-signTypedData]] is more useful.\n */\nexport class TypedDataEncoder {\n /**\n * The primary type for the structured [[types]].\n *\n * This is derived automatically from the [[types]], since no\n * recursion is possible, once the DAG for the types is consturcted\n * internally, the primary type must be the only remaining type with\n * no parent nodes.\n */\n primaryType;\n #types;\n /**\n * The types.\n */\n get types() {\n return JSON.parse(this.#types);\n }\n #fullTypes;\n #encoderCache;\n /**\n * Create a new **TypedDataEncoder** for %%types%%.\n *\n * This performs all necessary checking that types are valid and\n * do not violate the [[link-eip-712]] structural constraints as\n * well as computes the [[primaryType]].\n */\n constructor(_types) {\n this.#fullTypes = new Map();\n this.#encoderCache = new Map();\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n const types = {};\n Object.keys(_types).forEach((type) => {\n types[type] = _types[type].map(({ name, type }) => {\n // Normalize the base type (unless name conflict)\n let { base, index } = splitArray(type);\n if (base === \"int\" && !_types[\"int\"]) {\n base = \"int256\";\n }\n if (base === \"uint\" && !_types[\"uint\"]) {\n base = \"uint256\";\n }\n return { name, type: (base + (index || \"\")) };\n });\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n this.#types = JSON.stringify(types);\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n assertArgument(!uniqueNames.has(field.name), `duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", _types);\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = splitArray(field.type).base;\n assertArgument(baseType !== name, `circular type reference to ${JSON.stringify(baseType)}`, \"types\", _types);\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n assertArgument(parents.has(baseType), `unknown type ${JSON.stringify(baseType)}`, \"types\", _types);\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n assertArgument(primaryTypes.length !== 0, \"missing primary type\", \"types\", _types);\n assertArgument(primaryTypes.length === 1, `ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", _types);\n defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n assertArgument(!found.has(type), `circular type reference to ${JSON.stringify(type)}`, \"types\", _types);\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n this.#fullTypes.set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n /**\n * Returnthe encoder for the specific %%type%%.\n */\n getEncoder(type) {\n let encoder = this.#encoderCache.get(type);\n if (!encoder) {\n encoder = this.#getEncoder(type);\n this.#encoderCache.set(type, encoder);\n }\n return encoder;\n }\n #getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const array = splitArray(type).array;\n if (array) {\n const subtype = array.prefix;\n const subEncoder = this.getEncoder(subtype);\n return (value) => {\n assertArgument(array.count === -1 || array.count === value.length, `array length mismatch; expected length ${array.count}`, \"value\", value);\n let result = value.map(subEncoder);\n if (this.#fullTypes.has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this.#fullTypes.get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this.#fullTypes.has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n assertArgument(false, `unknown type: ${type}`, \"type\", type);\n }\n /**\n * Return the full type for %%name%%.\n */\n encodeType(name) {\n const result = this.#fullTypes.get(name);\n assertArgument(result, `unknown type: ${JSON.stringify(name)}`, \"name\", name);\n return result;\n }\n /**\n * Return the encoded %%value%% for the %%type%%.\n */\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n /**\n * Returns the hash of %%value%% for the type of %%name%%.\n */\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n /**\n * Return the fulled encoded %%value%% for the [[types]].\n */\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n /**\n * Return the hash of the fully encoded %%value%% for the [[types]].\n */\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n /**\n * @_ignore:\n */\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const array = splitArray(type).array;\n if (array) {\n assertArgument(array.count === -1 || array.count === value.length, `array length mismatch; expected length ${array.count}`, \"value\", value);\n return value.map((v) => this._visit(array.prefix, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n assertArgument(false, `unknown type: ${type}`, \"type\", type);\n }\n /**\n * Call %%calback%% for each value in %%value%%, passing the type and\n * component within %%value%%.\n *\n * This is useful for replacing addresses or other transformation that\n * may be desired on each component, based on its type.\n */\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n /**\n * Create a new **TypedDataEncoder** for %%types%%.\n */\n static from(types) {\n return new TypedDataEncoder(types);\n }\n /**\n * Return the primary type for %%types%%.\n */\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n /**\n * Return the hashed struct for %%value%% using %%types%% and %%name%%.\n */\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n /**\n * Return the domain hash for %%domain%%.\n */\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n if (domain[name] == null) {\n continue;\n }\n const type = domainFieldTypes[name];\n assertArgument(type, `invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n /**\n * Return the fully encoded [[link-eip-712]] %%value%% for %%types%% with %%domain%%.\n */\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n /**\n * Return the hash of the fully encoded [[link-eip-712]] %%value%% for %%types%% with %%domain%%.\n */\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n /**\n * Resolves to the value from resolving all addresses in %%value%% for\n * %%types%% and the %%domain%%.\n */\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Allow passing null to ignore value\n for (const key in domain) {\n if (domain[key] == null) {\n delete domain[key];\n }\n }\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n /**\n * Returns the JSON-encoded payload expected by nodes which implement\n * the JSON-RPC [[link-eip-712]] method.\n */\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n // Get the normalized types\n types = encoder.types;\n const typesWithDomain = Object.assign({}, types);\n assertArgument(typesWithDomain.EIP712Domain == null, \"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n typesWithDomain.EIP712Domain = domainTypes;\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return getBigInt(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n assertArgument(typeof (value) === \"string\", \"invalid string\", \"value\", value);\n return value;\n }\n assertArgument(false, \"unsupported type\", \"type\", type);\n })\n };\n }\n}\n/**\n * Compute the address used to sign the typed data for the %%signature%%.\n */\nexport function verifyTypedData(domain, types, value, signature) {\n return recoverAddress(TypedDataEncoder.hash(domain, types, value), signature);\n}\n//# sourceMappingURL=typed-data.js.map","/**\n * A fragment is a single item from an ABI, which may represent any of:\n *\n * - [Functions](FunctionFragment)\n * - [Events](EventFragment)\n * - [Constructors](ConstructorFragment)\n * - Custom [Errors](ErrorFragment)\n * - [Fallback or Receive](FallbackFragment) functions\n *\n * @_subsection api/abi/abi-coder:Fragments [about-fragments]\n */\nimport { defineProperties, getBigInt, getNumber, assert, assertPrivate, assertArgument } from \"../utils/index.js\";\nimport { id } from \"../hash/index.js\";\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\nconst _kwVisibDeploy = \"external public payable override\";\nconst KwVisibDeploy = setify(_kwVisibDeploy.split(\" \"));\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view override\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event fallback function receive struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespacePrefix = new RegExp(\"^(\\\\s*)\");\nconst regexNumberPrefix = new RegExp(\"^([0-9]+)\");\nconst regexIdPrefix = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\n// Parser regexs to check validity\nconst regexId = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)$\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$\");\nclass TokenString {\n #offset;\n #tokens;\n get offset() { return this.#offset; }\n get length() { return this.#tokens.length - this.#offset; }\n constructor(tokens) {\n this.#offset = 0;\n this.#tokens = tokens.slice();\n }\n clone() { return new TokenString(this.#tokens); }\n reset() { this.#offset = 0; }\n #subTokenString(from = 0, to = 0) {\n return new TokenString(this.#tokens.slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n }));\n }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n const top = this.peek();\n throw new Error(`expected ${type}; got ${top.type} ${JSON.stringify(top.text)}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = this.#subTokenString(this.#offset + 1, top.match + 1);\n this.#offset = top.match + 1;\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (this.#offset < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(this.#subTokenString(this.#offset + 1, link));\n this.#offset = link;\n }\n this.#offset = top.match + 1;\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (this.#offset >= this.#tokens.length) {\n throw new Error(\"out-of-bounds\");\n }\n return this.#tokens[this.#offset];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n const result = this.peek();\n this.#offset++;\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = this.#offset; i < this.#tokens.length; i++) {\n const token = this.#tokens[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return ``;\n }\n}\nfunction lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespacePrefix);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdPrefix);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumberPrefix);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.from(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens at offset ${tokens.offset}: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n assertArgument(match, \"invalid type\", \"type\", type);\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n assertArgument(length !== 0 && length <= 32, \"invalid bytes length\", \"type\", type);\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n assertArgument(size !== 0 && size <= 256 && (size % 8) === 0, \"invalid numeric width\", \"type\", type);\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nconst ErrorFragmentInternal = \"_ErrorInternal\";\nconst EventFragmentInternal = \"_EventInternal\";\nconst ConstructorFragmentInternal = \"_ConstructorInternal\";\nconst FallbackFragmentInternal = \"_FallbackInternal\";\nconst FunctionFragmentInternal = \"_FunctionInternal\";\nconst StructFragmentInternal = \"_StructInternal\";\n/**\n * Each input and output of a [[Fragment]] is an Array of **ParamType**.\n */\nexport class ParamType {\n /**\n * The local name of the parameter (or ``\"\"`` if unbound)\n */\n name;\n /**\n * The fully qualified type (e.g. ``\"address\"``, ``\"tuple(address)\"``,\n * ``\"uint256[3][]\"``)\n */\n type;\n /**\n * The base type (e.g. ``\"address\"``, ``\"tuple\"``, ``\"array\"``)\n */\n baseType;\n /**\n * True if the parameters is indexed.\n *\n * For non-indexable types this is ``null``.\n */\n indexed;\n /**\n * The components for the tuple.\n *\n * For non-tuple types this is ``null``.\n */\n components;\n /**\n * The array length, or ``-1`` for dynamic-lengthed arrays.\n *\n * For non-array types this is ``null``.\n */\n arrayLength;\n /**\n * The type of each child in the array.\n *\n * For non-array types this is ``null``.\n */\n arrayChildren;\n /**\n * @private\n */\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\n });\n }\n /**\n * Return a string representation of this type.\n *\n * For example,\n *\n * ``sighash\" => \"(uint256,address)\"``\n *\n * ``\"minimal\" => \"tuple(uint256,address) indexed\"``\n *\n * ``\"full\" => \"tuple(uint256 foo, address bar) indexed baz\"``\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n const name = this.name || \"\";\n if (this.isArray()) {\n const result = JSON.parse(this.arrayChildren.format(\"json\"));\n result.name = name;\n result.type += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n return JSON.stringify(result);\n }\n const result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== \"sighash\") {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === \"full\" && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n /**\n * Returns true if %%this%% is an Array type.\n *\n * This provides a type gaurd ensuring that [[arrayChildren]]\n * and [[arrayLength]] are non-null.\n */\n isArray() {\n return (this.baseType === \"array\");\n }\n /**\n * Returns true if %%this%% is a Tuple type.\n *\n * This provides a type gaurd ensuring that [[components]]\n * is non-null.\n */\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n /**\n * Returns true if %%this%% is an Indexable type.\n *\n * This provides a type gaurd ensuring that [[indexed]]\n * is non-null.\n */\n isIndexable() {\n return (this.indexed != null);\n }\n /**\n * Walks the **ParamType** with %%value%%, calling %%process%%\n * on each type, destructing the %%value%% recursively.\n */\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v) => (_this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v, i) => (_this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n #walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n childType.#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invalid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (result.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n components[index].#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n }\n /**\n * Walks the **ParamType** with %%value%%, asynchronously calling\n * %%process%% on each type, destructing the %%value%% recursively.\n *\n * This can be used to resolve ENS naes by walking and resolving each\n * ``\"address\"`` type.\n */\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n this.#walkAsync(promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n /**\n * Creates a new **ParamType** for %%obj%%.\n *\n * If %%allowIndexed%% then the ``indexed`` keyword is permitted,\n * otherwise the ``indexed`` keyword will throw an error.\n */\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ParamType.from(lex(obj), allowIndexed);\n }\n catch (error) {\n assertArgument(false, \"invalid param type\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(obj, setify([\"tuple\"])).has(\"tuple\") || obj.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = obj.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(obj.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (obj.length && obj.peekType(\"BRACKET\")) {\n const bracket = obj.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(obj, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (obj.peekType(\"ID\") ? obj.pop().text : \"\");\n if (obj.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n const name = obj.name;\n assertArgument(!name || (typeof (name) === \"string\" && name.match(regexId)), \"invalid name\", \"obj.name\", name);\n let indexed = obj.indexed;\n if (indexed != null) {\n assertArgument(allowIndexed, \"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = parseInt(arrayMatch[2] || \"-1\");\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name || \"\", type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type === \"tuple\" || type.startsWith(\"tuple(\" /* fix: ) */) || type.startsWith(\"(\" /* fix: ) */)) {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name || \"\", type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name || \"\", type, type, indexed, null, null, null);\n }\n /**\n * Returns true if %%value%% is a **ParamType**.\n */\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n/**\n * An abstract class to represent An individual fragment from a parse ABI.\n */\nexport class Fragment {\n /**\n * The type of the fragment.\n */\n type;\n /**\n * The inputs for the fragment.\n */\n inputs;\n /**\n * @private\n */\n constructor(guard, type, inputs) {\n assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n /**\n * Creates a new **Fragment** for %%obj%%, wich can be any supported\n * ABI frgament type.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n // Try parsing JSON...\n try {\n Fragment.from(JSON.parse(obj));\n }\n catch (e) { }\n // ...otherwise, use the human-readable lexer\n return Fragment.from(lex(obj));\n }\n if (obj instanceof TokenString) {\n // Human-readable ABI (already lexed)\n const type = obj.peekKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n }\n else if (typeof (obj) === \"object\") {\n // JSON ABI\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n assert(false, `unsupported type: ${obj.type}`, \"UNSUPPORTED_OPERATION\", {\n operation: \"Fragment.from\"\n });\n }\n assertArgument(false, \"unsupported frgament object\", \"obj\", obj);\n }\n /**\n * Returns true if %%value%% is a [[ConstructorFragment]].\n */\n static isConstructor(value) {\n return ConstructorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[ErrorFragment]].\n */\n static isError(value) {\n return ErrorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[EventFragment]].\n */\n static isEvent(value) {\n return EventFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[FunctionFragment]].\n */\n static isFunction(value) {\n return FunctionFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[StructFragment]].\n */\n static isStruct(value) {\n return StructFragment.isFragment(value);\n }\n}\n/**\n * An abstract class to represent An individual fragment\n * which has a name from a parse ABI.\n */\nexport class NamedFragment extends Fragment {\n /**\n * The name of the fragment.\n */\n name;\n /**\n * @private\n */\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n assertArgument(typeof (name) === \"string\" && name.match(regexId), \"invalid identifier\", \"name\", name);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n}\n/**\n * A Fragment which represents a //Custom Error//.\n */\nexport class ErrorFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"error\", name, inputs);\n Object.defineProperty(this, internal, { value: ErrorFragmentInternal });\n }\n /**\n * The Custom Error selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this fragment as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n /**\n * Returns a new **ErrorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ErrorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ErrorFragment.from(lex(obj));\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"error\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new ErrorFragment(_guard, name, inputs);\n }\n return new ErrorFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **ErrorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ErrorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents an Event.\n */\nexport class EventFragment extends NamedFragment {\n /**\n * Whether this event is anonymous.\n */\n anonymous;\n /**\n * @private\n */\n constructor(guard, name, inputs, anonymous) {\n super(guard, \"event\", name, inputs);\n Object.defineProperty(this, internal, { value: EventFragmentInternal });\n defineProperties(this, { anonymous });\n }\n /**\n * The Event topic hash.\n */\n get topicHash() {\n return id(this.format(\"sighash\"));\n }\n /**\n * Returns a string representation of this event as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\" && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n /**\n * Return the topic hash for an event with %%name%% and %%params%%.\n */\n static getTopicHash(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new EventFragment(_guard, name, params, false);\n return fragment.topicHash;\n }\n /**\n * Returns a new **EventFragment** for %%obj%%.\n */\n static from(obj) {\n if (EventFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return EventFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid event fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"event\", obj);\n const inputs = consumeParams(obj, true);\n const anonymous = !!consumeKeywords(obj, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(obj);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n return new EventFragment(_guard, obj.name, obj.inputs ? obj.inputs.map((p) => ParamType.from(p, true)) : [], !!obj.anonymous);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **EventFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === EventFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a constructor.\n */\nexport class ConstructorFragment extends Fragment {\n /**\n * Whether the constructor can receive an endowment.\n */\n payable;\n /**\n * The recommended gas limit for deployment or ``null``.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n Object.defineProperty(this, internal, { value: ConstructorFragmentInternal });\n defineProperties(this, { payable, gas });\n }\n /**\n * Returns a string representation of this constructor as %%format%%.\n */\n format(format) {\n assert(format != null && format !== \"sighash\", \"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", { operation: \"format(sighash)\" });\n if (format === \"json\") {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n if (this.payable) {\n result.push(\"payable\");\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n /**\n * Returns a new **ConstructorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ConstructorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ConstructorFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid constuctor fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n consumeKeywords(obj, setify([\"constructor\"]));\n const inputs = consumeParams(obj);\n const payable = !!consumeKeywords(obj, KwVisibDeploy).has(\"payable\");\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new ConstructorFragment(_guard, \"constructor\", inputs, payable, gas);\n }\n return new ConstructorFragment(_guard, \"constructor\", obj.inputs ? obj.inputs.map(ParamType.from) : [], !!obj.payable, (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **ConstructorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ConstructorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FallbackFragment extends Fragment {\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n constructor(guard, inputs, payable) {\n super(guard, \"fallback\", inputs);\n Object.defineProperty(this, internal, { value: FallbackFragmentInternal });\n defineProperties(this, { payable });\n }\n /**\n * Returns a string representation of this fallback as %%format%%.\n */\n format(format) {\n const type = ((this.inputs.length === 0) ? \"receive\" : \"fallback\");\n if (format === \"json\") {\n const stateMutability = (this.payable ? \"payable\" : \"nonpayable\");\n return JSON.stringify({ type, stateMutability });\n }\n return `${type}()${this.payable ? \" payable\" : \"\"}`;\n }\n /**\n * Returns a new **FallbackFragment** for %%obj%%.\n */\n static from(obj) {\n if (FallbackFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FallbackFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid fallback fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const errorObj = obj.toString();\n const topIsValid = obj.peekKeyword(setify([\"fallback\", \"receive\"]));\n assertArgument(topIsValid, \"type must be fallback or receive\", \"obj\", errorObj);\n const type = obj.popKeyword(setify([\"fallback\", \"receive\"]));\n // receive()\n if (type === \"receive\") {\n const inputs = consumeParams(obj);\n assertArgument(inputs.length === 0, `receive cannot have arguments`, \"obj.inputs\", inputs);\n consumeKeywords(obj, setify([\"payable\"]));\n consumeEoi(obj);\n return new FallbackFragment(_guard, [], true);\n }\n // fallback() [payable]\n // fallback(bytes) [payable] returns (bytes)\n let inputs = consumeParams(obj);\n if (inputs.length) {\n assertArgument(inputs.length === 1 && inputs[0].type === \"bytes\", \"invalid fallback inputs\", \"obj.inputs\", inputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n else {\n inputs = [ParamType.from(\"bytes\")];\n }\n const mutability = consumeMutability(obj);\n assertArgument(mutability === \"nonpayable\" || mutability === \"payable\", \"fallback cannot be constants\", \"obj.stateMutability\", mutability);\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n const outputs = consumeParams(obj);\n assertArgument(outputs.length === 1 && outputs[0].type === \"bytes\", \"invalid fallback outputs\", \"obj.outputs\", outputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n consumeEoi(obj);\n return new FallbackFragment(_guard, inputs, mutability === \"payable\");\n }\n if (obj.type === \"receive\") {\n return new FallbackFragment(_guard, [], true);\n }\n if (obj.type === \"fallback\") {\n const inputs = [ParamType.from(\"bytes\")];\n const payable = (obj.stateMutability === \"payable\");\n return new FallbackFragment(_guard, inputs, payable);\n }\n assertArgument(false, \"invalid fallback description\", \"obj\", obj);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FallbackFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FallbackFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FunctionFragment extends NamedFragment {\n /**\n * If the function is constant (e.g. ``pure`` or ``view`` functions).\n */\n constant;\n /**\n * The returned types for the result of calling this function.\n */\n outputs;\n /**\n * The state mutability (e.g. ``payable``, ``nonpayable``, ``view``\n * or ``pure``)\n */\n stateMutability;\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n /**\n * The recommended gas limit to send when calling this function.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, \"function\", name, inputs);\n Object.defineProperty(this, internal, { value: FunctionFragmentInternal });\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n /**\n * The Function selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this function as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability : undefined),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\") {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n /**\n * Return the selector for a function with %%name%% and %%params%%.\n */\n static getSelector(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new FunctionFragment(_guard, name, \"view\", params, [], null);\n return fragment.selector;\n }\n /**\n * Returns a new **FunctionFragment** for %%obj%%.\n */\n static from(obj) {\n if (FunctionFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FunctionFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid function fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"function\", obj);\n const inputs = consumeParams(obj);\n const mutability = consumeMutability(obj);\n let outputs = [];\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(obj);\n }\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n let stateMutability = obj.stateMutability;\n // Use legacy Solidity ABI logic if stateMutability is missing\n if (stateMutability == null) {\n stateMutability = \"payable\";\n if (typeof (obj.constant) === \"boolean\") {\n stateMutability = \"view\";\n if (!obj.constant) {\n stateMutability = \"payable\";\n if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n }\n else if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n // @TODO: verifyState for stateMutability (e.g. throw if\n // payable: false but stateMutability is \"nonpayable\")\n return new FunctionFragment(_guard, obj.name, stateMutability, obj.inputs ? obj.inputs.map(ParamType.from) : [], obj.outputs ? obj.outputs.map(ParamType.from) : [], (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FunctionFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FunctionFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a structure.\n */\nexport class StructFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"struct\", name, inputs);\n Object.defineProperty(this, internal, { value: StructFragmentInternal });\n }\n /**\n * Returns a string representation of this struct as %%format%%.\n */\n format() {\n throw new Error(\"@TODO\");\n }\n /**\n * Returns a new **StructFragment** for %%obj%%.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n try {\n return StructFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid struct fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"struct\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new StructFragment(_guard, name, inputs);\n }\n return new StructFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n // @TODO: fix this return type\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **StructFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === StructFragmentInternal);\n }\n}\n//# sourceMappingURL=fragments.js.map","/**\n * When sending values to or receiving values from a [[Contract]], the\n * data is generally encoded using the [ABI standard](link-solc-abi).\n *\n * The AbiCoder provides a utility to encode values to ABI data and\n * decode values from ABI data.\n *\n * Most of the time, developers should favour the [[Contract]] class,\n * which further abstracts a lot of the finer details of ABI data.\n *\n * @_section api/abi/abi-coder:ABI Encoding\n */\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nimport { assertArgumentCount, assertArgument } from \"../utils/index.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nimport { getAddress } from \"../address/index.js\";\nimport { getBytes, hexlify, makeError } from \"../utils/index.js\";\n// https://docs.soliditylang.org/en/v0.8.17/control-structures.html\nconst PanicReasons = new Map();\nPanicReasons.set(0x00, \"GENERIC_PANIC\");\nPanicReasons.set(0x01, \"ASSERT_FALSE\");\nPanicReasons.set(0x11, \"OVERFLOW\");\nPanicReasons.set(0x12, \"DIVIDE_BY_ZERO\");\nPanicReasons.set(0x21, \"ENUM_RANGE_ERROR\");\nPanicReasons.set(0x22, \"BAD_STORAGE_DATA\");\nPanicReasons.set(0x31, \"STACK_UNDERFLOW\");\nPanicReasons.set(0x32, \"ARRAY_RANGE_ERROR\");\nPanicReasons.set(0x41, \"OUT_OF_MEMORY\");\nPanicReasons.set(0x51, \"UNINITIALIZED_FUNCTION_CALL\");\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nlet defaultCoder = null;\nlet defaultMaxInflation = 1024;\nfunction getBuiltinCallException(action, tx, data, abiCoder) {\n let message = \"missing revert data\";\n let reason = null;\n const invocation = null;\n let revert = null;\n if (data) {\n message = \"execution reverted\";\n const bytes = getBytes(data);\n data = hexlify(data);\n if (bytes.length === 0) {\n message += \" (no data present; likely require(false) occurred\";\n reason = \"require(false)\";\n }\n else if (bytes.length % 32 !== 4) {\n message += \" (could not decode reason; invalid data length)\";\n }\n else if (hexlify(bytes.slice(0, 4)) === \"0x08c379a0\") {\n // Error(string)\n try {\n reason = abiCoder.decode([\"string\"], bytes.slice(4))[0];\n revert = {\n signature: \"Error(string)\",\n name: \"Error\",\n args: [reason]\n };\n message += `: ${JSON.stringify(reason)}`;\n }\n catch (error) {\n message += \" (could not decode reason; invalid string data)\";\n }\n }\n else if (hexlify(bytes.slice(0, 4)) === \"0x4e487b71\") {\n // Panic(uint256)\n try {\n const code = Number(abiCoder.decode([\"uint256\"], bytes.slice(4))[0]);\n revert = {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n args: [code]\n };\n reason = `Panic due to ${PanicReasons.get(code) || \"UNKNOWN\"}(${code})`;\n message += `: ${reason}`;\n }\n catch (error) {\n message += \" (could not decode panic code)\";\n }\n }\n else {\n message += \" (unknown custom error)\";\n }\n }\n const transaction = {\n to: (tx.to ? getAddress(tx.to) : null),\n data: (tx.data || \"0x\")\n };\n if (tx.from) {\n transaction.from = getAddress(tx.from);\n }\n return makeError(message, \"CALL_EXCEPTION\", {\n action, data, reason, transaction, invocation, revert\n });\n}\n/**\n * The **AbiCoder** is a low-level class responsible for encoding JavaScript\n * values into binary data and decoding binary data into JavaScript values.\n */\nexport class AbiCoder {\n #getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(this.#getCoder(param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => this.#getCoder(c)), param.name);\n }\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n assertArgument(size !== 0 && size <= 256 && (size % 8) === 0, \"invalid \" + match[1] + \" bit length\", \"param\", param);\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n assertArgument(size !== 0 && size <= 32, \"invalid bytes length\", \"param\", param);\n return new FixedBytesCoder(size, param.name);\n }\n assertArgument(false, \"invalid type\", \"type\", param.type);\n }\n /**\n * Get the default values for the given %%types%%.\n *\n * For example, a ``uint`` is by default ``0`` and ``bool``\n * is by default ``false``.\n */\n getDefaultValue(types) {\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n /**\n * Encode the %%values%% as the %%types%% into ABI data.\n *\n * @returns DataHexstring\n */\n encode(types, values) {\n assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n /**\n * Decode the ABI %%data%% as the %%types%% into values.\n *\n * If %%loose%% decoding is enabled, then strict padding is\n * not enforced. Some older versions of Solidity incorrectly\n * padded event data emitted from ``external`` functions.\n */\n decode(types, data, loose) {\n const coders = types.map((type) => this.#getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose, defaultMaxInflation));\n }\n static _setDefaultMaxInflation(value) {\n assertArgument(typeof (value) === \"number\" && Number.isInteger(value), \"invalid defaultMaxInflation factor\", \"value\", value);\n defaultMaxInflation = value;\n }\n /**\n * Returns the shared singleton instance of a default [[AbiCoder]].\n *\n * On the first call, the instance is created internally.\n */\n static defaultAbiCoder() {\n if (defaultCoder == null) {\n defaultCoder = new AbiCoder();\n }\n return defaultCoder;\n }\n /**\n * Returns an ethers-compatible [[CallExceptionError]] Error for the given\n * result %%data%% for the [[CallExceptionAction]] %%action%% against\n * the Transaction %%tx%%.\n */\n static getBuiltinCallException(action, tx, data) {\n return getBuiltinCallException(action, tx, data, AbiCoder.defaultAbiCoder());\n }\n}\n//# sourceMappingURL=abi-coder.js.map","/**\n * About bytes32 strings...\n *\n * @_docloc: api/utils:Bytes32 Strings\n */\nimport { getBytes, toUtf8Bytes, toUtf8String, zeroPadBytes } from \"../utils/index.js\";\n/**\n * Encodes %%text%% as a Bytes32 string.\n */\nexport function encodeBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\n/**\n * Encodes the Bytes32-encoded %%bytes%% into a string.\n */\nexport function decodeBytes32String(_bytes) {\n const data = getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n throw new Error(\"invalid bytes32 string - no null terminator\");\n }\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","/**\n * The Interface class is a low-level class that accepts an\n * ABI and provides all the necessary functionality to encode\n * and decode paramaters to and results from methods, events\n * and errors.\n *\n * It also provides several convenience methods to automatically\n * search and find matching transactions and events to parse them.\n *\n * @_subsection api/abi:Interfaces [interfaces]\n */\nimport { keccak256 } from \"../crypto/index.js\";\nimport { id } from \"../hash/index.js\";\nimport { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadBytes, zeroPadValue, isHexString, defineProperties, assertArgument, toBeHex, assert } from \"../utils/index.js\";\nimport { AbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\n/**\n * When using the [[Interface-parseLog]] to automatically match a Log to its event\n * for parsing, a **LogDescription** is returned.\n */\nexport class LogDescription {\n /**\n * The matching fragment for the ``topic0``.\n */\n fragment;\n /**\n * The name of the Event.\n */\n name;\n /**\n * The full Event signature.\n */\n signature;\n /**\n * The topic hash for the Event.\n */\n topic;\n /**\n * The arguments passed into the Event with ``emit``.\n */\n args;\n /**\n * @_ignore:\n */\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\n/**\n * When using the [[Interface-parseTransaction]] to automatically match\n * a transaction data to its function for parsing,\n * a **TransactionDescription** is returned.\n */\nexport class TransactionDescription {\n /**\n * The matching fragment from the transaction ``data``.\n */\n fragment;\n /**\n * The name of the Function from the transaction ``data``.\n */\n name;\n /**\n * The arguments passed to the Function from the transaction ``data``.\n */\n args;\n /**\n * The full Function signature from the transaction ``data``.\n */\n signature;\n /**\n * The selector for the Function from the transaction ``data``.\n */\n selector;\n /**\n * The ``value`` (in wei) from the transaction.\n */\n value;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\n/**\n * When using the [[Interface-parseError]] to automatically match an\n * error for a call result for parsing, an **ErrorDescription** is returned.\n */\nexport class ErrorDescription {\n /**\n * The matching fragment.\n */\n fragment;\n /**\n * The name of the Error.\n */\n name;\n /**\n * The arguments passed to the Error with ``revert``.\n */\n args;\n /**\n * The full Error signature.\n */\n signature;\n /**\n * The selector for the Error.\n */\n selector;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\n/**\n * An **Indexed** is used as a value when a value that does not\n * fit within a topic (i.e. not a fixed-length, 32-byte type). It\n * is the ``keccak256`` of the value, and used for types such as\n * arrays, tuples, bytes and strings.\n */\nexport class Indexed {\n /**\n * The ``keccak256`` of the value logged.\n */\n hash;\n /**\n * @_ignore:\n */\n _isIndexed;\n /**\n * Returns ``true`` if %%value%% is an **Indexed**.\n *\n * This provides a Type Guard for property access.\n */\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n /**\n * @_ignore:\n */\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\n/**\n * An Interface abstracts many of the low-level details for\n * encoding and decoding the data on the blockchain.\n *\n * An ABI provides information on how to encode data to send to\n * a Contract, how to decode the results and events and how to\n * interpret revert errors.\n *\n * The ABI can be specified by [any supported format](InterfaceAbi).\n */\nexport class Interface {\n /**\n * All the Contract ABI members (i.e. methods, events, errors, etc).\n */\n fragments;\n /**\n * The Contract constructor.\n */\n deploy;\n /**\n * The Fallback method, if any.\n */\n fallback;\n /**\n * If receiving ether is supported.\n */\n receive;\n #errors;\n #events;\n #functions;\n // #structs: Map;\n #abiCoder;\n /**\n * Create a new Interface for the %%fragments%%.\n */\n constructor(fragments) {\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n this.#functions = new Map();\n this.#errors = new Map();\n this.#events = new Map();\n // this.#structs = new Map();\n const frags = [];\n for (const a of abi) {\n try {\n frags.push(Fragment.from(a));\n }\n catch (error) {\n console.log(`[Warning] Invalid Fragment ${JSON.stringify(a)}:`, error.message);\n }\n }\n defineProperties(this, {\n fragments: Object.freeze(frags)\n });\n let fallback = null;\n let receive = false;\n this.#abiCoder = this.getAbiCoder();\n // Add all fragments by their signature\n this.fragments.forEach((fragment, index) => {\n let bucket;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n console.log(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineProperties(this, { deploy: fragment });\n return;\n case \"fallback\":\n if (fragment.inputs.length === 0) {\n receive = true;\n }\n else {\n assertArgument(!fallback || fragment.payable !== fallback.payable, \"conflicting fallback fragments\", `fragments[${index}]`, fragment);\n fallback = fragment;\n receive = fallback.payable;\n }\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = this.#functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.#events;\n break;\n case \"error\":\n bucket = this.#errors;\n break;\n default:\n return;\n }\n // Two identical entries; ignore it\n const signature = fragment.format();\n if (bucket.has(signature)) {\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.from(\"constructor()\")\n });\n }\n defineProperties(this, { fallback, receive });\n }\n /**\n * Returns the entire Human-Readable ABI, as an array of\n * signatures, optionally as %%minimal%% strings, which\n * removes parameter names and unneceesary spaces.\n */\n format(minimal) {\n const format = (minimal ? \"minimal\" : \"full\");\n const abi = this.fragments.map((f) => f.format(format));\n return abi;\n }\n /**\n * Return the JSON-encoded ABI. This is the format Solidiy\n * returns.\n */\n formatJson() {\n const abi = this.fragments.map((f) => f.format(\"json\"));\n // We need to re-bundle the JSON fragments a bit\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n /**\n * The ABI coder that will be used to encode and decode binary\n * data.\n */\n getAbiCoder() {\n return AbiCoder.defaultAbiCoder();\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n #getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of this.#functions.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#functions) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous function description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#functions.get(FunctionFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the function name for %%key%%, which may be a function selector,\n * function name or function signature that belongs to the ABI.\n */\n getFunctionName(key) {\n const fragment = this.#getFunction(key, null, false);\n assertArgument(fragment, \"no matching function\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (a function selector, function name or\n * function signature) is present in the ABI.\n *\n * In the case of a function name, the name may be ambiguous, so\n * accessing the [[FunctionFragment]] may require refinement.\n */\n hasFunction(key) {\n return !!this.#getFunction(key, null, false);\n }\n /**\n * Get the [[FunctionFragment]] for %%key%%, which may be a function\n * selector, function name or function signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple functions match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single function in\n * the ABI, this will throw.\n */\n getFunction(key, values) {\n return this.#getFunction(key, values || null, true);\n }\n /**\n * Iterate over all functions, calling %%callback%%, sorted by their name.\n */\n forEachFunction(callback) {\n const names = Array.from(this.#functions.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#functions.get(name)), i);\n }\n }\n // Find an event definition by any means necessary (unless it is ambiguous)\n #getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of this.#events.values()) {\n if (eventTopic === fragment.topicHash) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#events) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous event description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#events.get(EventFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the event name for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n */\n getEventName(key) {\n const fragment = this.#getEvent(key, null, false);\n assertArgument(fragment, \"no matching event\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (an event topic hash, event name or\n * event signature) is present in the ABI.\n *\n * In the case of an event name, the name may be ambiguous, so\n * accessing the [[EventFragment]] may require refinement.\n */\n hasEvent(key) {\n return !!this.#getEvent(key, null, false);\n }\n /**\n * Get the [[EventFragment]] for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple events match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single event in\n * the ABI, this will throw.\n */\n getEvent(key, values) {\n return this.#getEvent(key, values || null, true);\n }\n /**\n * Iterate over all events, calling %%callback%%, sorted by their name.\n */\n forEachEvent(callback) {\n const names = Array.from(this.#events.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#events.get(name)), i);\n }\n }\n /**\n * Get the [[ErrorFragment]] for %%key%%, which may be an error\n * selector, error name or error signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple errors match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single error in\n * the ABI, this will throw.\n */\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n if (BuiltinErrors[selector]) {\n return ErrorFragment.from(BuiltinErrors[selector].signature);\n }\n for (const fragment of this.#errors.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#errors) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n if (key === \"Error\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n return null;\n }\n else if (matching.length > 1) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous error description (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n key = ErrorFragment.from(key).format();\n if (key === \"Error(string)\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic(uint256)\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n const result = this.#errors.get(key);\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Iterate over all errors, calling %%callback%%, sorted by their name.\n */\n forEachError(callback) {\n const names = Array.from(this.#errors.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#errors.get(name)), i);\n }\n }\n // Get the 4-byte selector used by Solidity to identify a function\n /*\ngetSelector(fragment: ErrorFragment | FunctionFragment): string {\n if (typeof(fragment) === \"string\") {\n const matches: Array = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n\n return dataSlice(id(fragment.format()), 0, 4);\n}\n */\n // Get the 32-byte topic hash used by Solidity to identify an event\n /*\n getEventTopic(fragment: EventFragment): string {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n */\n _decodeParams(params, data) {\n return this.#abiCoder.decode(params, data);\n }\n _encodeParams(params, values) {\n return this.#abiCoder.encode(params, values);\n }\n /**\n * Encodes a ``tx.data`` object for deploying the Contract with\n * the %%values%% as the constructor arguments.\n */\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified error (see [[getError]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match error ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the transaction revert data for a call result that\n * reverted from the the Contract with the sepcified %%error%%\n * (see [[getError]] for valid values for %%fragment%%) with the %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the %%data%% from a transaction ``tx.data`` for\n * the function specified (see [[getFunction]] for valid values\n * for %%fragment%%).\n *\n * Most developers should prefer the [[parseTransaction]] method\n * instead, which will automatically detect the fragment.\n */\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match function ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the ``tx.data`` for a transaction that calls the function\n * specified (see [[getFunction]] for valid values for %%fragment%%) with\n * the %%values%%.\n */\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n let message = \"invalid length for result data\";\n const bytes = getBytesCopy(data);\n if ((bytes.length % 32) === 0) {\n try {\n return this.#abiCoder.decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n assert(false, message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(_data, tx) {\n const data = getBytes(_data, \"data\");\n const error = AbiCoder.getBuiltinCallException(\"call\", tx, data);\n // Not a built-in error; try finding a custom error\n const customPrefix = \"execution reverted (unknown custom error)\";\n if (error.message.startsWith(customPrefix)) {\n const selector = hexlify(data.slice(0, 4));\n const ef = this.getError(selector);\n if (ef) {\n try {\n const args = this.#abiCoder.decode(ef.inputs, data.slice(4));\n error.revert = {\n name: ef.name, signature: ef.format(), args\n };\n error.reason = error.revert.signature;\n error.message = `execution reverted: ${error.reason}`;\n }\n catch (e) {\n error.message = `execution reverted (coult not decode custom error)`;\n }\n }\n }\n // Add the invocation, if available\n const parsed = this.parseTransaction(tx);\n if (parsed) {\n error.invocation = {\n method: parsed.name,\n signature: parsed.signature,\n args: parsed.args\n };\n }\n return error;\n }\n /**\n * Encodes the result data (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values\n * for %%fragment%%) with %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeFunctionResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return hexlify(this.#abiCoder.encode(fragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array, values: ReadonlyArray, processfunc: (type: string, value: any) => Promise): Promise> {\n const promises: Array> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array, values: ReadonlyArray) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array = [ ];\n values.forEach((value, index) => {\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n }\n */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n assert(values.length <= fragment.inputs.length, `too many arguments for ${fragment.format()}`, \"UNEXPECTED_ARGUMENT\", { count: values.length, expectedCount: fragment.inputs.length });\n const topics = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n // @TODO: Use the coders for this; to properly support tuples, etc.\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n if (param.type === \"bool\" && typeof (value) === \"boolean\") {\n value = (value ? \"0x01\" : \"0x00\");\n }\n else if (param.type.match(/^u?int/)) {\n value = toBeHex(value); // @TODO: Should this toTwos??\n }\n else if (param.type.match(/^bytes/)) {\n value = zeroPadBytes(value, 32);\n }\n else if (param.type === \"address\") {\n // Check addresses are valid\n this.#abiCoder.encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n };\n values.forEach((value, index) => {\n const param = fragment.inputs[index];\n if (!param.indexed) {\n assertArgument(value == null, \"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n return;\n }\n if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n assertArgument(false, \"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n assertArgument(values.length === fragment.inputs.length, \"event arguments/values mismatch\", \"values\", values);\n fragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value));\n }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(this.#abiCoder.encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: this.#abiCoder.encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(fragment, data, topics) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n if (topics != null && !fragment.anonymous) {\n const eventTopic = fragment.topicHash;\n assertArgument(isHexString(topics[0], 32) && topics[0].toLowerCase() === eventTopic, \"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\n fragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.from({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? this.#abiCoder.decode(indexed, concat(topics)) : null;\n const resultNonIndexed = this.#abiCoder.decode(nonIndexed, data, true);\n //const result: (Array & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n fragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n /**\n * Parses a transaction, finding the matching function and extracts\n * the parameter values along with other useful function details.\n *\n * If the matching function cannot be found, return null.\n */\n parseTransaction(tx) {\n const data = getBytes(tx.data, \"tx.data\");\n const value = getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, fragment.selector, args, value);\n }\n parseCallResult(data) {\n throw new Error(\"@TODO\");\n }\n /**\n * Parses a receipt log, finding the matching event and extracts\n * the parameter values along with other useful event details.\n *\n * If the matching event cannot be found, returns null.\n */\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n return null;\n }\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n return new LogDescription(fragment, fragment.topicHash, this.decodeEventLog(fragment, log.data, log.topics));\n }\n /**\n * Parses a revert data, finding the matching error and extracts\n * the parameter values along with other useful error details.\n *\n * If the matching error cannot be found, returns null.\n */\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, fragment.selector, args);\n }\n /**\n * Creates a new [[Interface]] from the ABI %%value%%.\n *\n * The %%value%% may be provided as an existing [[Interface]] object,\n * a JSON-encoded ABI or any Human-Readable ABI format.\n */\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // An Interface; possibly from another v6 instance\n if (typeof (value.formatJson) === \"function\") {\n return new Interface(value.formatJson());\n }\n // A legacy Interface; from an older version\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(\"json\"));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n//# sourceMappingURL=interface.js.map","//import { resolveAddress } from \"@ethersproject/address\";\nimport { defineProperties, getBigInt, getNumber, hexlify, isBytesLike, resolveProperties, assert, assertArgument, isError, makeError } from \"../utils/index.js\";\nimport { accessListify } from \"../transaction/index.js\";\nconst BN_0 = BigInt(0);\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? implements Required\n/**\n * A **FeeData** wraps all the fee-related values associated with\n * the network.\n */\nexport class FeeData {\n /**\n * The gas price for legacy networks.\n */\n gasPrice;\n /**\n * The maximum fee to pay per gas.\n *\n * The base fee per gas is defined by the network and based on\n * congestion, increasing the cost during times of heavy load\n * and lowering when less busy.\n *\n * The actual fee per gas will be the base fee for the block\n * and the priority fee, up to the max fee per gas.\n *\n * This will be ``null`` on legacy networks (i.e. [pre-EIP-1559](link-eip-1559))\n */\n maxFeePerGas;\n /**\n * The additional amout to pay per gas to encourage a validator\n * to include the transaction.\n *\n * The purpose of this is to compensate the validator for the\n * adjusted risk for including a given transaction.\n *\n * This will be ``null`` on legacy networks (i.e. [pre-EIP-1559](link-eip-1559))\n */\n maxPriorityFeePerGas;\n /**\n * Creates a new FeeData for %%gasPrice%%, %%maxFeePerGas%% and\n * %%maxPriorityFeePerGas%%.\n */\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n /**\n * Returns a JSON-friendly value.\n */\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\n/**\n * Returns a copy of %%req%% with all properties coerced to their strict\n * types.\n */\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value\".split(/,/);\n for (const key of bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key of numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipRead = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n if (\"blobVersionedHashes\" in req && req.blobVersionedHashes) {\n result.blobVersionedHashes = req.blobVersionedHashes.slice();\n }\n if (\"kzg\" in req) {\n result.kzg = req.kzg;\n }\n if (\"blobs\" in req && req.blobs) {\n result.blobs = req.blobs.map((b) => {\n if (isBytesLike(b)) {\n return hexlify(b);\n }\n return Object.assign({}, b);\n });\n }\n return result;\n}\n/**\n * A **Block** represents the data associated with a full block on\n * Ethereum.\n */\nexport class Block {\n /**\n * The provider connected to the block used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The block number, sometimes called the block height. This is a\n * sequential number that is one higher than the parent block.\n */\n number;\n /**\n * The block hash.\n *\n * This hash includes all properties, so can be safely used to identify\n * an exact set of block properties.\n */\n hash;\n /**\n * The timestamp for this block, which is the number of seconds since\n * epoch that this block was included.\n */\n timestamp;\n /**\n * The block hash of the parent block.\n */\n parentHash;\n /**\n * The hash tree root of the parent beacon block for the given\n * execution block. See [[link-eip-4788]].\n */\n parentBeaconBlockRoot;\n /**\n * The nonce.\n *\n * On legacy networks, this is the random number inserted which\n * permitted the difficulty target to be reached.\n */\n nonce;\n /**\n * The difficulty target.\n *\n * On legacy networks, this is the proof-of-work target required\n * for a block to meet the protocol rules to be included.\n *\n * On modern networks, this is a random number arrived at using\n * randao. @TODO: Find links?\n */\n difficulty;\n /**\n * The total gas limit for this block.\n */\n gasLimit;\n /**\n * The total gas used in this block.\n */\n gasUsed;\n /**\n * The root hash for the global state after applying changes\n * in this block.\n */\n stateRoot;\n /**\n * The hash of the transaction receipts trie.\n */\n receiptsRoot;\n /**\n * The total amount of blob gas consumed by the transactions\n * within the block. See [[link-eip-4844]].\n */\n blobGasUsed;\n /**\n * The running total of blob gas consumed in excess of the\n * target, prior to the block. See [[link-eip-4844]].\n */\n excessBlobGas;\n /**\n * The miner coinbase address, wihch receives any subsidies for\n * including this block.\n */\n miner;\n /**\n * The latest RANDAO mix of the post beacon state of\n * the previous block.\n */\n prevRandao;\n /**\n * Any extra data the validator wished to include.\n */\n extraData;\n /**\n * The base fee per gas that all transactions in this block were\n * charged.\n *\n * This adjusts after each block, depending on how congested the network\n * is.\n */\n baseFeePerGas;\n #transactions;\n /**\n * Create a new **Block** object.\n *\n * This should generally not be necessary as the unless implementing a\n * low-level library.\n */\n constructor(block, provider) {\n this.#transactions = block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\") {\n return new TransactionResponse(tx, provider);\n }\n return tx;\n });\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n parentBeaconBlockRoot: block.parentBeaconBlockRoot,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n blobGasUsed: block.blobGasUsed,\n excessBlobGas: block.excessBlobGas,\n miner: block.miner,\n prevRandao: getValue(block.prevRandao),\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas),\n stateRoot: block.stateRoot,\n receiptsRoot: block.receiptsRoot,\n });\n }\n /**\n * Returns the list of transaction hashes, in the order\n * they were executed within the block.\n */\n get transactions() {\n return this.#transactions.map((tx) => {\n if (typeof (tx) === \"string\") {\n return tx;\n }\n return tx.hash;\n });\n }\n /**\n * Returns the complete transactions, in the order they\n * were executed within the block.\n *\n * This is only available for blocks which prefetched\n * transactions, by passing ``true`` to %%prefetchTxs%%\n * into [[Provider-getBlock]].\n */\n get prefetchedTransactions() {\n const txs = this.#transactions.slice();\n // Doesn't matter...\n if (txs.length === 0) {\n return [];\n }\n // Make sure we prefetched the transactions\n assert(typeof (txs[0]) === \"object\", \"transactions were not prefetched with block request\", \"UNSUPPORTED_OPERATION\", {\n operation: \"transactionResponses()\"\n });\n return txs;\n }\n /**\n * Returns a JSON-friendly value.\n */\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, prevRandao, nonce, number, parentHash, parentBeaconBlockRoot, stateRoot, receiptsRoot, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n blobGasUsed: toJson(this.blobGasUsed),\n excessBlobGas: toJson(this.excessBlobGas),\n hash, miner, prevRandao, nonce, number, parentHash, timestamp,\n parentBeaconBlockRoot, stateRoot, receiptsRoot,\n transactions,\n };\n }\n [Symbol.iterator]() {\n let index = 0;\n const txs = this.transactions;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: txs[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n /**\n * The number of transactions in this block.\n */\n get length() { return this.#transactions.length; }\n /**\n * The [[link-js-date]] this block was included at.\n */\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n /**\n * Get the transaction at %%indexe%% within this block.\n */\n async getTransaction(indexOrHash) {\n // Find the internal value by its index or hash\n let tx = undefined;\n if (typeof (indexOrHash) === \"number\") {\n tx = this.#transactions[indexOrHash];\n }\n else {\n const hash = indexOrHash.toLowerCase();\n for (const v of this.#transactions) {\n if (typeof (v) === \"string\") {\n if (v !== hash) {\n continue;\n }\n tx = v;\n break;\n }\n else {\n if (v.hash === hash) {\n continue;\n }\n tx = v;\n break;\n }\n }\n }\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n /**\n * If a **Block** was fetched with a request to include the transactions\n * this will allow synchronous access to those transactions.\n *\n * If the transactions were not prefetched, this will throw.\n */\n getPrefetchedTransaction(indexOrHash) {\n const txs = this.prefetchedTransactions;\n if (typeof (indexOrHash) === \"number\") {\n return txs[indexOrHash];\n }\n indexOrHash = indexOrHash.toLowerCase();\n for (const tx of txs) {\n if (tx.hash === indexOrHash) {\n return tx;\n }\n }\n assertArgument(false, \"no matching transaction\", \"indexOrHash\", indexOrHash);\n }\n /**\n * Returns true if this block been mined. This provides a type guard\n * for all properties on a [[MinedBlock]].\n */\n isMined() { return !!this.hash; }\n /**\n * Returns true if this block is an [[link-eip-2930]] block.\n */\n isLondon() {\n return !!this.baseFeePerGas;\n }\n /**\n * @_ignore:\n */\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\n//////////////////////\n// Log\n/**\n * A **Log** in Ethereum represents an event that has been included in a\n * transaction using the ``LOG*`` opcodes, which are most commonly used by\n * Solidity's emit for announcing events.\n */\nexport class Log {\n /**\n * The provider connected to the log used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The transaction hash of the transaction this log occurred in. Use the\n * [[Log-getTransaction]] to get the [[TransactionResponse]].\n */\n transactionHash;\n /**\n * The block hash of the block this log occurred in. Use the\n * [[Log-getBlock]] to get the [[Block]].\n */\n blockHash;\n /**\n * The block number of the block this log occurred in. It is preferred\n * to use the [[Block-hash]] when fetching the related [[Block]],\n * since in the case of an orphaned block, the block at that height may\n * have changed.\n */\n blockNumber;\n /**\n * If the **Log** represents a block that was removed due to an orphaned\n * block, this will be true.\n *\n * This can only happen within an orphan event listener.\n */\n removed;\n /**\n * The address of the contract that emitted this log.\n */\n address;\n /**\n * The data included in this log when it was emitted.\n */\n data;\n /**\n * The indexed topics included in this log when it was emitted.\n *\n * All topics are included in the bloom filters, so they can be\n * efficiently filtered using the [[Provider-getLogs]] method.\n */\n topics;\n /**\n * The index within the block this log occurred at. This is generally\n * not useful to developers, but can be used with the various roots\n * to proof inclusion within a block.\n */\n index;\n /**\n * The index within the transaction of this log.\n */\n transactionIndex;\n /**\n * @_ignore:\n */\n constructor(log, provider) {\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n /**\n * Returns a JSON-compatible object.\n */\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n /**\n * Returns the block that this log occurred in.\n */\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n assert(!!block, \"failed to find transaction\", \"UNKNOWN_ERROR\", {});\n return block;\n }\n /**\n * Returns the transaction that this log occurred in.\n */\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.transactionHash);\n assert(!!tx, \"failed to find transaction\", \"UNKNOWN_ERROR\", {});\n return tx;\n }\n /**\n * Returns the transaction receipt fot the transaction that this\n * log occurred in.\n */\n async getTransactionReceipt() {\n const receipt = await this.provider.getTransactionReceipt(this.transactionHash);\n assert(!!receipt, \"failed to find transaction receipt\", \"UNKNOWN_ERROR\", {});\n return receipt;\n }\n /**\n * @_ignore:\n */\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\n//////////////////////\n// Transaction Receipt\n/*\nexport interface LegacyTransactionReceipt {\n byzantium: false;\n status: null;\n root: string;\n}\n\nexport interface ByzantiumTransactionReceipt {\n byzantium: true;\n status: number;\n root: null;\n}\n*/\n/**\n * A **TransactionReceipt** includes additional information about a\n * transaction that is only available after it has been mined.\n */\nexport class TransactionReceipt {\n /**\n * The provider connected to the log used to fetch additional details\n * if necessary.\n */\n provider;\n /**\n * The address the transaction was sent to.\n */\n to;\n /**\n * The sender of the transaction.\n */\n from;\n /**\n * The address of the contract if the transaction was directly\n * responsible for deploying one.\n *\n * This is non-null **only** if the ``to`` is empty and the ``data``\n * was successfully executed as initcode.\n */\n contractAddress;\n /**\n * The transaction hash.\n */\n hash;\n /**\n * The index of this transaction within the block transactions.\n */\n index;\n /**\n * The block hash of the [[Block]] this transaction was included in.\n */\n blockHash;\n /**\n * The block number of the [[Block]] this transaction was included in.\n */\n blockNumber;\n /**\n * The bloom filter bytes that represent all logs that occurred within\n * this transaction. This is generally not useful for most developers,\n * but can be used to validate the included logs.\n */\n logsBloom;\n /**\n * The actual amount of gas used by this transaction.\n *\n * When creating a transaction, the amount of gas that will be used can\n * only be approximated, but the sender must pay the gas fee for the\n * entire gas limit. After the transaction, the difference is refunded.\n */\n gasUsed;\n /**\n * The gas used for BLObs. See [[link-eip-4844]].\n */\n blobGasUsed;\n /**\n * The amount of gas used by all transactions within the block for this\n * and all transactions with a lower ``index``.\n *\n * This is generally not useful for developers but can be used to\n * validate certain aspects of execution.\n */\n cumulativeGasUsed;\n /**\n * The actual gas price used during execution.\n *\n * Due to the complexity of [[link-eip-1559]] this value can only\n * be caluclated after the transaction has been mined, snce the base\n * fee is protocol-enforced.\n */\n gasPrice;\n /**\n * The price paid per BLOB in gas. See [[link-eip-4844]].\n */\n blobGasPrice;\n /**\n * The [[link-eip-2718]] transaction type.\n */\n type;\n //readonly byzantium!: boolean;\n /**\n * The status of this transaction, indicating success (i.e. ``1``) or\n * a revert (i.e. ``0``).\n *\n * This is available in post-byzantium blocks, but some backends may\n * backfill this value.\n */\n status;\n /**\n * The root hash of this transaction.\n *\n * This is no present and was only included in pre-byzantium blocks, but\n * could be used to validate certain parts of the receipt.\n */\n root;\n #logs;\n /**\n * @_ignore:\n */\n constructor(tx, provider) {\n this.#logs = Object.freeze(tx.logs.map((log) => {\n return new Log(log, provider);\n }));\n let gasPrice = BN_0;\n if (tx.effectiveGasPrice != null) {\n gasPrice = tx.effectiveGasPrice;\n }\n else if (tx.gasPrice != null) {\n gasPrice = tx.gasPrice;\n }\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n blobGasUsed: tx.blobGasUsed,\n gasPrice,\n blobGasPrice: tx.blobGasPrice,\n type: tx.type,\n //byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n /**\n * The logs for this transaction.\n */\n get logs() { return this.#logs; }\n /**\n * Returns a JSON-compatible representation.\n */\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, //byzantium, \n status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber,\n //byzantium, \n contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n blobGasUsed: toJson(this.blobGasUsed),\n blobGasPrice: toJson(this.blobGasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n /**\n * @_ignore:\n */\n get length() { return this.logs.length; }\n [Symbol.iterator]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n /**\n * The total fee for this transaction, in wei.\n */\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n /**\n * Resolves to the block this transaction occurred in.\n */\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n /**\n * Resolves to the transaction this transaction occurred in.\n */\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n /**\n * Resolves to the return value of the execution of this transaction.\n *\n * Support for this feature is limited, as it requires an archive node\n * with the ``debug_`` or ``trace_`` API enabled.\n */\n async getResult() {\n return (await this.provider.getTransactionResult(this.hash));\n }\n /**\n * Resolves to the number of confirmations this transaction has.\n */\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n /**\n * @_ignore:\n */\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n /**\n * @_ignore:\n */\n reorderedEvent(other) {\n assert(!other || other.isMined(), \"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"reorderedEvent(other)\" });\n return createReorderedTransactionFilter(this, other);\n }\n}\n/**\n * A **TransactionResponse** includes all properties about a transaction\n * that was sent to the network, which may or may not be included in a\n * block.\n *\n * The [[TransactionResponse-isMined]] can be used to check if the\n * transaction has been mined as well as type guard that the otherwise\n * possibly ``null`` properties are defined.\n */\nexport class TransactionResponse {\n /**\n * The provider this is connected to, which will influence how its\n * methods will resolve its async inspection methods.\n */\n provider;\n /**\n * The block number of the block that this transaction was included in.\n *\n * This is ``null`` for pending transactions.\n */\n blockNumber;\n /**\n * The blockHash of the block that this transaction was included in.\n *\n * This is ``null`` for pending transactions.\n */\n blockHash;\n /**\n * The index within the block that this transaction resides at.\n */\n index;\n /**\n * The transaction hash.\n */\n hash;\n /**\n * The [[link-eip-2718]] transaction envelope type. This is\n * ``0`` for legacy transactions types.\n */\n type;\n /**\n * The receiver of this transaction.\n *\n * If ``null``, then the transaction is an initcode transaction.\n * This means the result of executing the [[data]] will be deployed\n * as a new contract on chain (assuming it does not revert) and the\n * address may be computed using [[getCreateAddress]].\n */\n to;\n /**\n * The sender of this transaction. It is implicitly computed\n * from the transaction pre-image hash (as the digest) and the\n * [[signature]] using ecrecover.\n */\n from;\n /**\n * The nonce, which is used to prevent replay attacks and offer\n * a method to ensure transactions from a given sender are explicitly\n * ordered.\n *\n * When sending a transaction, this must be equal to the number of\n * transactions ever sent by [[from]].\n */\n nonce;\n /**\n * The maximum units of gas this transaction can consume. If execution\n * exceeds this, the entries transaction is reverted and the sender\n * is charged for the full amount, despite not state changes being made.\n */\n gasLimit;\n /**\n * The gas price can have various values, depending on the network.\n *\n * In modern networks, for transactions that are included this is\n * the //effective gas price// (the fee per gas that was actually\n * charged), while for transactions that have not been included yet\n * is the [[maxFeePerGas]].\n *\n * For legacy transactions, or transactions on legacy networks, this\n * is the fee that will be charged per unit of gas the transaction\n * consumes.\n */\n gasPrice;\n /**\n * The maximum priority fee (per unit of gas) to allow a\n * validator to charge the sender. This is inclusive of the\n * [[maxFeeFeePerGas]].\n */\n maxPriorityFeePerGas;\n /**\n * The maximum fee (per unit of gas) to allow this transaction\n * to charge the sender.\n */\n maxFeePerGas;\n /**\n * The [[link-eip-4844]] max fee per BLOb gas.\n */\n maxFeePerBlobGas;\n /**\n * The data.\n */\n data;\n /**\n * The value, in wei. Use [[formatEther]] to format this value\n * as ether.\n */\n value;\n /**\n * The chain ID.\n */\n chainId;\n /**\n * The signature.\n */\n signature;\n /**\n * The [[link-eip-2930]] access list for transaction types that\n * support it, otherwise ``null``.\n */\n accessList;\n /**\n * The [[link-eip-4844]] BLOb versioned hashes.\n */\n blobVersionedHashes;\n #startBlock;\n /**\n * @_ignore:\n */\n constructor(tx, provider) {\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.maxFeePerBlobGas = (tx.maxFeePerBlobGas != null) ? tx.maxFeePerBlobGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n this.blobVersionedHashes = (tx.blobVersionedHashes != null) ? tx.blobVersionedHashes : null;\n this.#startBlock = -1;\n }\n /**\n * Returns a JSON-compatible representation of this transaction.\n */\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList, blobVersionedHashes } = this;\n return {\n _type: \"TransactionResponse\",\n accessList, blockNumber, blockHash,\n blobVersionedHashes,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n maxFeePerBlobGas: toJson(this.maxFeePerBlobGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n /**\n * Resolves to the Block that this transaction was included in.\n *\n * This will return null if the transaction has not been included yet.\n */\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n /**\n * Resolves to this transaction being re-requested from the\n * provider. This can be used if you have an unmined transaction\n * and wish to get an up-to-date populated instance.\n */\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n /**\n * Resolve to the number of confirmations this transaction has.\n */\n async confirmations() {\n if (this.blockNumber == null) {\n const { tx, blockNumber } = await resolveProperties({\n tx: this.getTransaction(),\n blockNumber: this.provider.getBlockNumber()\n });\n // Not mined yet...\n if (tx == null || tx.blockNumber == null) {\n return 0;\n }\n return blockNumber - tx.blockNumber + 1;\n }\n const blockNumber = await this.provider.getBlockNumber();\n return blockNumber - this.blockNumber + 1;\n }\n /**\n * Resolves once this transaction has been mined and has\n * %%confirms%% blocks including it (default: ``1``) with an\n * optional %%timeout%%.\n *\n * This can resolve to ``null`` only if %%confirms%% is ``0``\n * and the transaction has not been mined, otherwise this will\n * wait until enough confirmations have completed.\n */\n async wait(_confirms, _timeout) {\n const confirms = (_confirms == null) ? 1 : _confirms;\n const timeout = (_timeout == null) ? 0 : _timeout;\n let startBlock = this.#startBlock;\n let nextScan = -1;\n let stopScanning = (startBlock === -1) ? true : false;\n const checkReplacement = async () => {\n // Get the current transaction count for this sender\n if (stopScanning) {\n return null;\n }\n const { blockNumber, nonce } = await resolveProperties({\n blockNumber: this.provider.getBlockNumber(),\n nonce: this.provider.getTransactionCount(this.from)\n });\n // No transaction or our nonce has not been mined yet; but we\n // can start scanning later when we do start\n if (nonce < this.nonce) {\n startBlock = blockNumber;\n return;\n }\n // We were mined; no replacement\n if (stopScanning) {\n return null;\n }\n const mined = await this.getTransaction();\n if (mined && mined.blockNumber != null) {\n return;\n }\n // We were replaced; start scanning for that transaction\n // Starting to scan; look back a few extra blocks for safety\n if (nextScan === -1) {\n nextScan = startBlock - 3;\n if (nextScan < this.#startBlock) {\n nextScan = this.#startBlock;\n }\n }\n while (nextScan <= blockNumber) {\n // Get the next block to scan\n if (stopScanning) {\n return null;\n }\n const block = await this.provider.getBlock(nextScan, true);\n // This should not happen; but we'll try again shortly\n if (block == null) {\n return;\n }\n // We were mined; no replacement\n for (const hash of block) {\n if (hash === this.hash) {\n return;\n }\n }\n // Search for the transaction that replaced us\n for (let i = 0; i < block.length; i++) {\n const tx = await block.getTransaction(i);\n if (tx.from === this.from && tx.nonce === this.nonce) {\n // Get the receipt\n if (stopScanning) {\n return null;\n }\n const receipt = await this.provider.getTransactionReceipt(tx.hash);\n // This should not happen; but we'll try again shortly\n if (receipt == null) {\n return;\n }\n // We will retry this on the next block (this case could be optimized)\n if ((blockNumber - receipt.blockNumber + 1) < confirms) {\n return;\n }\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === this.data && tx.to === this.to && tx.value === this.value) {\n reason = \"repriced\";\n }\n else if (tx.data === \"0x\" && tx.from === tx.to && tx.value === BN_0) {\n reason = \"cancelled\";\n }\n assert(false, \"transaction was replaced\", \"TRANSACTION_REPLACED\", {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: tx.replaceableTransaction(startBlock),\n hash: tx.hash,\n receipt\n });\n }\n }\n nextScan++;\n }\n return;\n };\n const checkReceipt = (receipt) => {\n if (receipt == null || receipt.status !== 0) {\n return receipt;\n }\n assert(false, \"transaction execution reverted\", \"CALL_EXCEPTION\", {\n action: \"sendTransaction\",\n data: null, reason: null, invocation: null, revert: null,\n transaction: {\n to: receipt.to,\n from: receipt.from,\n data: \"\" // @TODO: in v7, split out sendTransaction properties\n }, receipt\n });\n };\n const receipt = await this.provider.getTransactionReceipt(this.hash);\n if (confirms === 0) {\n return checkReceipt(receipt);\n }\n if (receipt) {\n if ((await receipt.confirmations()) >= confirms) {\n return checkReceipt(receipt);\n }\n }\n else {\n // Check for a replacement; throws if a replacement was found\n await checkReplacement();\n // Allow null only when the confirms is 0\n if (confirms === 0) {\n return null;\n }\n }\n const waiter = new Promise((resolve, reject) => {\n // List of things to cancel when we have a result (one way or the other)\n const cancellers = [];\n const cancel = () => { cancellers.forEach((c) => c()); };\n // On cancel, stop scanning for replacements\n cancellers.push(() => { stopScanning = true; });\n // Set up any timeout requested\n if (timeout > 0) {\n const timer = setTimeout(() => {\n cancel();\n reject(makeError(\"wait for transaction timeout\", \"TIMEOUT\"));\n }, timeout);\n cancellers.push(() => { clearTimeout(timer); });\n }\n const txListener = async (receipt) => {\n // Done; return it!\n if ((await receipt.confirmations()) >= confirms) {\n cancel();\n try {\n resolve(checkReceipt(receipt));\n }\n catch (error) {\n reject(error);\n }\n }\n };\n cancellers.push(() => { this.provider.off(this.hash, txListener); });\n this.provider.on(this.hash, txListener);\n // We support replacement detection; start checking\n if (startBlock >= 0) {\n const replaceListener = async () => {\n try {\n // Check for a replacement; this throws only if one is found\n await checkReplacement();\n }\n catch (error) {\n // We were replaced (with enough confirms); re-throw the error\n if (isError(error, \"TRANSACTION_REPLACED\")) {\n cancel();\n reject(error);\n return;\n }\n }\n // Rescheudle a check on the next block\n if (!stopScanning) {\n this.provider.once(\"block\", replaceListener);\n }\n };\n cancellers.push(() => { this.provider.off(\"block\", replaceListener); });\n this.provider.once(\"block\", replaceListener);\n }\n });\n return await waiter;\n }\n /**\n * Returns ``true`` if this transaction has been included.\n *\n * This is effective only as of the time the TransactionResponse\n * was instantiated. To get up-to-date information, use\n * [[getTransaction]].\n *\n * This provides a Type Guard that this transaction will have\n * non-null property values for properties that are null for\n * unmined transactions.\n */\n isMined() {\n return (this.blockHash != null);\n }\n /**\n * Returns true if the transaction is a legacy (i.e. ``type == 0``)\n * transaction.\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isLegacy() {\n return (this.type === 0);\n }\n /**\n * Returns true if the transaction is a Berlin (i.e. ``type == 1``)\n * transaction. See [[link-eip-2070]].\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isBerlin() {\n return (this.type === 1);\n }\n /**\n * Returns true if the transaction is a London (i.e. ``type == 2``)\n * transaction. See [[link-eip-1559]].\n *\n * This provides a Type Guard that this transaction will have\n * the ``null``-ness for hardfork-specific properties set correctly.\n */\n isLondon() {\n return (this.type === 2);\n }\n /**\n * Returns true if hte transaction is a Cancun (i.e. ``type == 3``)\n * transaction. See [[link-eip-4844]].\n */\n isCancun() {\n return (this.type === 3);\n }\n /**\n * Returns a filter which can be used to listen for orphan events\n * that evict this transaction.\n */\n removedEvent() {\n assert(this.isMined(), \"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n return createRemovedTransactionFilter(this);\n }\n /**\n * Returns a filter which can be used to listen for orphan events\n * that re-order this event against %%other%%.\n */\n reorderedEvent(other) {\n assert(this.isMined(), \"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n assert(!other || other.isMined(), \"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", { operation: \"removeEvent()\" });\n return createReorderedTransactionFilter(this, other);\n }\n /**\n * Returns a new TransactionResponse instance which has the ability to\n * detect (and throw an error) if the transaction is replaced, which\n * will begin scanning at %%startBlock%%.\n *\n * This should generally not be used by developers and is intended\n * primarily for internal use. Setting an incorrect %%startBlock%% can\n * have devastating performance consequences if used incorrectly.\n */\n replaceableTransaction(startBlock) {\n assertArgument(Number.isInteger(startBlock) && startBlock >= 0, \"invalid startBlock\", \"startBlock\", startBlock);\n const tx = new TransactionResponse(this, this.provider);\n tx.#startBlock = startBlock;\n return tx;\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\n//# sourceMappingURL=provider.js.map","// import from provider.ts instead of index.ts to prevent circular dep\n// from EtherscanProvider\nimport { Log, TransactionReceipt, TransactionResponse } from \"../providers/provider.js\";\nimport { defineProperties, EventPayload } from \"../utils/index.js\";\n/**\n * An **EventLog** contains additional properties parsed from the [[Log]].\n */\nexport class EventLog extends Log {\n /**\n * The Contract Interface.\n */\n interface;\n /**\n * The matching event.\n */\n fragment;\n /**\n * The parsed arguments passed to the event by ``emit``.\n */\n args;\n /**\n * @_ignore:\n */\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n /**\n * The name of the event.\n */\n get eventName() { return this.fragment.name; }\n /**\n * The signature of the event.\n */\n get eventSignature() { return this.fragment.format(); }\n}\n/**\n * An **EventLog** contains additional properties parsed from the [[Log]].\n */\nexport class UndecodedEventLog extends Log {\n /**\n * The error encounted when trying to decode the log.\n */\n error;\n /**\n * @_ignore:\n */\n constructor(log, error) {\n super(log, log.provider);\n defineProperties(this, { error });\n }\n}\n/**\n * A **ContractTransactionReceipt** includes the parsed logs from a\n * [[TransactionReceipt]].\n */\nexport class ContractTransactionReceipt extends TransactionReceipt {\n #iface;\n /**\n * @_ignore:\n */\n constructor(iface, provider, tx) {\n super(tx, provider);\n this.#iface = iface;\n }\n /**\n * The parsed logs for any [[Log]] which has a matching event in the\n * Contract ABI.\n */\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? this.#iface.getEvent(log.topics[0]) : null;\n if (fragment) {\n try {\n return new EventLog(log, this.#iface, fragment);\n }\n catch (error) {\n return new UndecodedEventLog(log, error);\n }\n }\n return log;\n });\n }\n}\n/**\n * A **ContractTransactionResponse** will return a\n * [[ContractTransactionReceipt]] when waited on.\n */\nexport class ContractTransactionResponse extends TransactionResponse {\n #iface;\n /**\n * @_ignore:\n */\n constructor(iface, provider, tx) {\n super(tx, provider);\n this.#iface = iface;\n }\n /**\n * Resolves once this transaction has been mined and has\n * %%confirms%% blocks including it (default: ``1``) with an\n * optional %%timeout%%.\n *\n * This can resolve to ``null`` only if %%confirms%% is ``0``\n * and the transaction has not been mined, otherwise this will\n * wait until enough confirmations have completed.\n */\n async wait(confirms, timeout) {\n const receipt = await super.wait(confirms, timeout);\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(this.#iface, this.provider, receipt);\n }\n}\n/**\n * A **ContractUnknownEventPayload** is included as the last parameter to\n * Contract Events when the event does not match any events in the ABI.\n */\nexport class ContractUnknownEventPayload extends EventPayload {\n /**\n * The log with no matching events.\n */\n log;\n /**\n * @_event:\n */\n constructor(contract, listener, filter, log) {\n super(contract, listener, filter);\n defineProperties(this, { log });\n }\n /**\n * Resolves to the block the event occured in.\n */\n async getBlock() {\n return await this.log.getBlock();\n }\n /**\n * Resolves to the transaction the event occured in.\n */\n async getTransaction() {\n return await this.log.getTransaction();\n }\n /**\n * Resolves to the transaction receipt the event occured in.\n */\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n/**\n * A **ContractEventPayload** is included as the last parameter to\n * Contract Events when the event is known.\n */\nexport class ContractEventPayload extends ContractUnknownEventPayload {\n /**\n * @_ignore:\n */\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter, new EventLog(_log, contract.interface, fragment));\n const args = contract.interface.decodeEventLog(fragment, this.log.data, this.log.topics);\n defineProperties(this, { args, fragment });\n }\n /**\n * The event name.\n */\n get eventName() {\n return this.fragment.name;\n }\n /**\n * The event signature.\n */\n get eventSignature() {\n return this.fragment.format();\n }\n}\n//# sourceMappingURL=wrappers.js.map","import { Interface, Typed } from \"../abi/index.js\";\nimport { isAddressable, resolveAddress } from \"../address/index.js\";\n// import from provider.ts instead of index.ts to prevent circular dep\n// from EtherscanProvider\nimport { copyRequest, Log } from \"../providers/provider.js\";\nimport { defineProperties, getBigInt, isCallException, isHexString, resolveProperties, isError, makeError, assert, assertArgument } from \"../utils/index.js\";\nimport { ContractEventPayload, ContractUnknownEventPayload, ContractTransactionResponse, EventLog, UndecodedEventLog } from \"./wrappers.js\";\nconst BN_0 = BigInt(0);\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction getResolver(value) {\n if (value != null) {\n if (canResolve(value)) {\n return value;\n }\n if (value.provider) {\n return value.provider;\n }\n }\n return undefined;\n}\nclass PreparedTopicFilter {\n #filter;\n fragment;\n constructor(contract, fragment, args) {\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n this.#filter = (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n const arg = args[index];\n if (arg == null) {\n return null;\n }\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n if (Array.isArray(value)) {\n return Promise.all(value.map((v) => resolveAddress(v, resolver)));\n }\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })();\n }\n getTopicFilter() {\n return this.#filter;\n }\n}\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\n/**\n * @_ignore:\n */\nexport async function copyOverrides(arg, allowed) {\n // Make sure the overrides passed in are a valid overrides object\n const _overrides = Typed.dereference(arg, \"overrides\");\n assertArgument(typeof (_overrides) === \"object\", \"invalid overrides parameter\", \"overrides\", arg);\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(_overrides);\n assertArgument(overrides.to == null || (allowed || []).indexOf(\"to\") >= 0, \"cannot override to\", \"overrides.to\", overrides.to);\n assertArgument(overrides.data == null || (allowed || []).indexOf(\"data\") >= 0, \"cannot override data\", \"overrides.data\", overrides.data);\n // Resolve any from\n if (overrides.from) {\n overrides.from = overrides.from;\n }\n return overrides;\n}\n/**\n * @_ignore:\n */\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n value = Typed.dereference(value, type);\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nfunction buildWrappedFallback(contract) {\n const populateTransaction = async function (overrides) {\n // If an overrides was passed in, copy it and normalize the values\n const tx = (await copyOverrides(overrides, [\"data\"]));\n tx.to = await contract.getAddress();\n if (tx.from) {\n tx.from = await resolveAddress(tx.from, getResolver(contract.runner));\n }\n const iface = contract.interface;\n const noValue = (getBigInt((tx.value || BN_0), \"overrides.value\") === BN_0);\n const noData = ((tx.data || \"0x\") === \"0x\");\n if (iface.fallback && !iface.fallback.payable && iface.receive && !noData && !noValue) {\n assertArgument(false, \"cannot send data to receive or send value to non-payable fallback\", \"overrides\", overrides);\n }\n assertArgument(iface.fallback || noData, \"cannot send data to receive-only contract\", \"overrides.data\", tx.data);\n // Only allow payable contracts to set non-zero value\n const payable = iface.receive || (iface.fallback && iface.fallback.payable);\n assertArgument(payable || noValue, \"cannot send value to non-payable fallback\", \"overrides.value\", tx.value);\n // Only allow fallback contracts to set non-empty data\n assertArgument(iface.fallback || noData, \"cannot send data to receive-only contract\", \"overrides.data\", tx.data);\n return tx;\n };\n const staticCall = async function (overrides) {\n const runner = getRunner(contract.runner, \"call\");\n assert(canCall(runner), \"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", { operation: \"call\" });\n const tx = await populateTransaction(overrides);\n try {\n return await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error) && error.data) {\n throw contract.interface.makeError(error.data, tx);\n }\n throw error;\n }\n };\n const send = async function (overrides) {\n const runner = contract.runner;\n assert(canSend(runner), \"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", { operation: \"sendTransaction\" });\n const tx = await runner.sendTransaction(await populateTransaction(overrides));\n const provider = getProvider(contract.runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n return new ContractTransactionResponse(contract.interface, provider, tx);\n };\n const estimateGas = async function (overrides) {\n const runner = getRunner(contract.runner, \"estimateGas\");\n assert(canEstimate(runner), \"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", { operation: \"estimateGas\" });\n return await runner.estimateGas(await populateTransaction(overrides));\n };\n const method = async (overrides) => {\n return await send(overrides);\n };\n defineProperties(method, {\n _contract: contract,\n estimateGas,\n populateTransaction,\n send, staticCall\n });\n return method;\n}\nfunction buildWrappedMethod(contract, key) {\n const getFragment = function (...args) {\n const fragment = contract.interface.getFunction(key, args);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key, args }\n });\n return fragment;\n };\n const populateTransaction = async function (...args) {\n const fragment = getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from, getResolver(contract.runner));\n }\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: contract.getAddress(),\n data: contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n };\n const staticCall = async function (...args) {\n const result = await staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n };\n const send = async function (...args) {\n const runner = contract.runner;\n assert(canSend(runner), \"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", { operation: \"sendTransaction\" });\n const tx = await runner.sendTransaction(await populateTransaction(...args));\n const provider = getProvider(contract.runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n return new ContractTransactionResponse(contract.interface, provider, tx);\n };\n const estimateGas = async function (...args) {\n const runner = getRunner(contract.runner, \"estimateGas\");\n assert(canEstimate(runner), \"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", { operation: \"estimateGas\" });\n return await runner.estimateGas(await populateTransaction(...args));\n };\n const staticCallResult = async function (...args) {\n const runner = getRunner(contract.runner, \"call\");\n assert(canCall(runner), \"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", { operation: \"call\" });\n const tx = await populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error) && error.data) {\n throw contract.interface.makeError(error.data, tx);\n }\n throw error;\n }\n const fragment = getFragment(...args);\n return contract.interface.decodeFunctionResult(fragment, result);\n };\n const method = async (...args) => {\n const fragment = getFragment(...args);\n if (fragment.constant) {\n return await staticCall(...args);\n }\n return await send(...args);\n };\n defineProperties(method, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key,\n getFragment,\n estimateGas,\n populateTransaction,\n send, staticCall, staticCallResult,\n });\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n Object.defineProperty(method, \"fragment\", {\n configurable: false,\n enumerable: true,\n get: () => {\n const fragment = contract.interface.getFunction(key);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key }\n });\n return fragment;\n }\n });\n return method;\n}\nfunction buildWrappedEvent(contract, key) {\n const getFragment = function (...args) {\n const fragment = contract.interface.getEvent(key, args);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key, args }\n });\n return fragment;\n };\n const method = function (...args) {\n return new PreparedTopicFilter(contract, getFragment(...args), args);\n };\n defineProperties(method, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key,\n getFragment\n });\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n Object.defineProperty(method, \"fragment\", {\n configurable: false,\n enumerable: true,\n get: () => {\n const fragment = contract.interface.getEvent(key);\n assert(fragment, \"no matching fragment\", \"UNSUPPORTED_OPERATION\", {\n operation: \"fragment\",\n info: { key }\n });\n return fragment;\n }\n });\n return method;\n}\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubInfo(contract, event) {\n let topics;\n let fragment = null;\n // Convert named events to topicHash and get the fragment for\n // events which need deconstructing.\n if (Array.isArray(event)) {\n const topicHashify = function (name) {\n if (isHexString(name, 32)) {\n return name;\n }\n const fragment = contract.interface.getEvent(name);\n assertArgument(fragment, \"unknown fragment\", \"name\", name);\n return fragment.topicHash;\n };\n // Array of Topics and Names; e.g. `[ \"0x1234...89ab\", \"Transfer(address)\" ]`\n topics = event.map((e) => {\n if (e == null) {\n return null;\n }\n if (Array.isArray(e)) {\n return e.map(topicHashify);\n }\n return topicHashify(e);\n });\n }\n else if (event === \"*\") {\n topics = [null];\n }\n else if (typeof (event) === \"string\") {\n if (isHexString(event, 32)) {\n // Topic Hash\n topics = [event];\n }\n else {\n // Name or Signature; e.g. `\"Transfer\", `\"Transfer(address)\"`\n fragment = contract.interface.getEvent(event);\n assertArgument(fragment, \"unknown fragment\", \"event\", event);\n topics = [fragment.topicHash];\n }\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [fragment.topicHash];\n }\n else {\n assertArgument(false, \"unknown event name\", \"event\", event);\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n const items = Array.from(new Set(t.map((t) => t.toLowerCase())).values());\n if (items.length === 1) {\n return items[0];\n }\n items.sort();\n return items;\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubInfo(contract, event)).tag) || null;\n}\nasync function getSub(contract, operation, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n assert(provider, \"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", { operation });\n const { fragment, tag, topics } = await getSubInfo(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n let foundFragment = fragment;\n if (foundFragment == null) {\n try {\n foundFragment = contract.interface.getEvent(log.topics[0]);\n }\n catch (error) { }\n }\n // If fragment is null, we do not deconstruct the args to emit\n if (foundFragment) {\n const _foundFragment = foundFragment;\n const args = fragment ? contract.interface.decodeEventLog(fragment, log.data, log.topics) : [];\n emit(contract, event, args, (listener) => {\n return new ContractEventPayload(contract, listener, event, _foundFragment, log);\n });\n }\n else {\n emit(contract, event, [], (listener) => {\n return new ContractUnknownEventPayload(contract, listener, event, log);\n });\n }\n };\n let starting = [];\n const start = () => {\n if (starting.length) {\n return;\n }\n starting.push(provider.on(filter, listener));\n };\n const stop = async () => {\n if (starting.length == 0) {\n return;\n }\n let started = starting;\n starting = [];\n await Promise.all(started);\n provider.off(filter, listener);\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function _emit(contract, event, args, payloadFunc) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = Array.from(args);\n if (payloadFunc) {\n passArgs.push(payloadFunc(once ? null : listener));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n if (sub.listeners.length === 0) {\n sub.stop();\n getInternal(contract).subs.delete(sub.tag);\n }\n return (count > 0);\n}\nasync function emit(contract, event, args, payloadFunc) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payloadFunc);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n /**\n * The target to connect to.\n *\n * This can be an address, ENS name or any [[Addressable]], such as\n * another contract. To get the resovled address, use the ``getAddress``\n * method.\n */\n target;\n /**\n * The contract Interface.\n */\n interface;\n /**\n * The connected runner. This is generally a [[Provider]] or a\n * [[Signer]], which dictates what operations are supported.\n *\n * For example, a **Contract** connected to a [[Provider]] may\n * only execute read-only operations.\n */\n runner;\n /**\n * All the Events available on this contract.\n */\n filters;\n /**\n * @_ignore:\n */\n [internal];\n /**\n * The fallback or receive function if any.\n */\n fallback;\n /**\n * Creates a new contract connected to %%target%% with the %%abi%% and\n * optionally connected to a %%runner%% to perform operations on behalf\n * of.\n */\n constructor(target, abi, runner, _deployTx) {\n assertArgument(typeof (target) === \"string\" || isAddressable(target), \"invalid value for Contract target\", \"target\", target);\n if (runner == null) {\n runner = null;\n }\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n // @TODO: the provider can be null; make a custom dummy provider that will throw a\n // meaningful error\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw makeError(\"an ENS name used for a contract target must be correctly configured\", \"UNCONFIGURED_NAME\", {\n value: target\n });\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (typeof (prop) === \"symbol\" || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n try {\n return this.getEvent(prop);\n }\n catch (error) {\n if (!isError(error, \"INVALID_ARGUMENT\") || error.argument !== \"key\") {\n throw error;\n }\n }\n return undefined;\n },\n has: (target, prop) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(prop) >= 0) {\n return Reflect.has(target, prop);\n }\n return Reflect.has(target, prop) || this.interface.hasEvent(String(prop));\n }\n });\n defineProperties(this, { filters });\n defineProperties(this, {\n fallback: ((iface.receive || iface.fallback) ? (buildWrappedFallback(this)) : null)\n });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"symbol\" || prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Undefined properties should return undefined\n try {\n return target.getFunction(prop);\n }\n catch (error) {\n if (!isError(error, \"INVALID_ARGUMENT\") || error.argument !== \"key\") {\n throw error;\n }\n }\n return undefined;\n },\n has: (target, prop) => {\n if (typeof (prop) === \"symbol\" || prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.has(target, prop);\n }\n return target.interface.hasFunction(prop);\n }\n });\n }\n /**\n * Return a new Contract instance with the same target and ABI, but\n * a different %%runner%%.\n */\n connect(runner) {\n return new BaseContract(this.target, this.interface, runner);\n }\n /**\n * Return a new Contract instance with the same ABI and runner, but\n * a different %%target%%.\n */\n attach(target) {\n return new BaseContract(target, this.interface, this.runner);\n }\n /**\n * Return the resolved address of this Contract.\n */\n async getAddress() { return await getInternal(this).addrPromise; }\n /**\n * Return the deployed bytecode or null if no bytecode is found.\n */\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n assert(provider, \"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", { operation: \"getDeployedCode\" });\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n /**\n * Resolve to this Contract once the bytecode has been deployed, or\n * resolve immediately if already deployed.\n */\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n assert(provider != null, \"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", { operation: \"waitForDeployment\" });\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n /**\n * Return the transaction used to deploy this contract.\n *\n * This is only available if this instance was returned from a\n * [[ContractFactory]].\n */\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n /**\n * Return the function for a given name. This is useful when a contract\n * method name conflicts with a JavaScript name such as ``prototype`` or\n * when using a Contract programatically.\n */\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n const func = buildWrappedMethod(this, key);\n return func;\n }\n /**\n * Return the event for a given name. This is useful when a contract\n * event name conflicts with a JavaScript name such as ``prototype`` or\n * when using a Contract programatically.\n */\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return buildWrappedEvent(this, key);\n }\n /**\n * @_ignore:\n */\n async queryTransaction(hash) {\n throw new Error(\"@TODO\");\n }\n /*\n // @TODO: this is a non-backwards compatible change, but will be added\n // in v7 and in a potential SmartContract class in an upcoming\n // v6 release\n async getTransactionReceipt(hash: string): Promise {\n const provider = getProvider(this.runner);\n assert(provider, \"contract runner does not have a provider\",\n \"UNSUPPORTED_OPERATION\", { operation: \"queryTransaction\" });\n\n const receipt = await provider.getTransactionReceipt(hash);\n if (receipt == null) { return null; }\n\n return new ContractTransactionReceipt(this.interface, provider, receipt);\n }\n */\n /**\n * Provide historic access to event data for %%event%% in the range\n * %%fromBlock%% (default: ``0``) to %%toBlock%% (default: ``\"latest\"``)\n * inclusive.\n */\n async queryFilter(event, fromBlock, toBlock) {\n if (fromBlock == null) {\n fromBlock = 0;\n }\n if (toBlock == null) {\n toBlock = \"latest\";\n }\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubInfo(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n assert(provider, \"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"queryFilter\" });\n return (await provider.getLogs(filter)).map((log) => {\n let foundFragment = fragment;\n if (foundFragment == null) {\n try {\n foundFragment = this.interface.getEvent(log.topics[0]);\n }\n catch (error) { }\n }\n if (foundFragment) {\n try {\n return new EventLog(log, this.interface, foundFragment);\n }\n catch (error) {\n return new UndecodedEventLog(log, error);\n }\n }\n return new Log(log, provider);\n });\n }\n /**\n * Add an event %%listener%% for the %%event%%.\n */\n async on(event, listener) {\n const sub = await getSub(this, \"on\", event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n /**\n * Add an event %%listener%% for the %%event%%, but remove the listener\n * after it is fired once.\n */\n async once(event, listener) {\n const sub = await getSub(this, \"once\", event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n /**\n * Emit an %%event%% calling all listeners with %%args%%.\n *\n * Resolves to ``true`` if any listeners were called.\n */\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n /**\n * Resolves to the number of listeners of %%event%% or the total number\n * of listeners if unspecified.\n */\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n /**\n * Resolves to the listeners subscribed to %%event%% or all listeners\n * if unspecified.\n */\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n /**\n * Remove the %%listener%% from the listeners for %%event%% or remove\n * all listeners if unspecified.\n */\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n /**\n * Remove all the listeners for %%event%% or remove all listeners if\n * unspecified.\n */\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n /**\n * Alias for [on].\n */\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n /**\n * Alias for [off].\n */\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n /**\n * Create a new Class for the %%abi%%.\n */\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n /**\n * Create a new BaseContract with a specified Interface.\n */\n static from(target, abi, runner) {\n if (runner == null) {\n runner = null;\n }\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\n/**\n * A [[BaseContract]] with no type guards on its methods or events.\n */\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","import { Interface } from \"../abi/index.js\";\nimport { getCreateAddress } from \"../address/index.js\";\nimport { concat, defineProperties, getBytes, hexlify, assert, assertArgument } from \"../utils/index.js\";\nimport { BaseContract, copyOverrides, resolveArgs } from \"./contract.js\";\n// A = Arguments to the constructor\n// I = Interface of deployed contracts\n/**\n * A **ContractFactory** is used to deploy a Contract to the blockchain.\n */\nexport class ContractFactory {\n /**\n * The Contract Interface.\n */\n interface;\n /**\n * The Contract deployment bytecode. Often called the initcode.\n */\n bytecode;\n /**\n * The ContractRunner to deploy the Contract as.\n */\n runner;\n /**\n * Create a new **ContractFactory** with %%abi%% and %%bytecode%%,\n * optionally connected to %%runner%%.\n *\n * The %%bytecode%% may be the ``bytecode`` property within the\n * standard Solidity JSON output.\n */\n constructor(abi, bytecode, runner) {\n const iface = Interface.from(abi);\n // Dereference Solidity bytecode objects and allow a missing `0x`-prefix\n if (bytecode instanceof Uint8Array) {\n bytecode = hexlify(getBytes(bytecode));\n }\n else {\n if (typeof (bytecode) === \"object\") {\n bytecode = bytecode.object;\n }\n if (!bytecode.startsWith(\"0x\")) {\n bytecode = \"0x\" + bytecode;\n }\n bytecode = hexlify(getBytes(bytecode));\n }\n defineProperties(this, {\n bytecode, interface: iface, runner: (runner || null)\n });\n }\n attach(target) {\n return new BaseContract(target, this.interface, this.runner);\n }\n /**\n * Resolves to the transaction to deploy the contract, passing %%args%%\n * into the constructor.\n */\n async getDeployTransaction(...args) {\n let overrides = {};\n const fragment = this.interface.deploy;\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"incorrect number of arguments to constructor\");\n }\n const resolvedArgs = await resolveArgs(this.runner, fragment.inputs, args);\n const data = concat([this.bytecode, this.interface.encodeDeploy(resolvedArgs)]);\n return Object.assign({}, overrides, { data });\n }\n /**\n * Resolves to the Contract deployed by passing %%args%% into the\n * constructor.\n *\n * This will resolve to the Contract before it has been deployed to the\n * network, so the [[BaseContract-waitForDeployment]] should be used before\n * sending any transactions to it.\n */\n async deploy(...args) {\n const tx = await this.getDeployTransaction(...args);\n assert(this.runner && typeof (this.runner.sendTransaction) === \"function\", \"factory runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n const sentTx = await this.runner.sendTransaction(tx);\n const address = getCreateAddress(sentTx);\n return new BaseContract(address, this.interface, this.runner, sentTx);\n }\n /**\n * Return a new **ContractFactory** with the same ABI and bytecode,\n * but connected to %%runner%%.\n */\n connect(runner) {\n return new ContractFactory(this.interface, this.bytecode, runner);\n }\n /**\n * Create a new **ContractFactory** from the standard Solidity JSON output.\n */\n static fromSolidity(output, runner) {\n assertArgument(output != null, \"bad compiler output\", \"output\", output);\n if (typeof (output) === \"string\") {\n output = JSON.parse(output);\n }\n const abi = output.abi;\n let bytecode = \"\";\n if (output.bytecode) {\n bytecode = output.bytecode;\n }\n else if (output.evm && output.evm.bytecode) {\n bytecode = output.evm.bytecode;\n }\n return new this(abi, bytecode, runner);\n }\n}\n//# sourceMappingURL=factory.js.map","/**\n * ENS is a service which allows easy-to-remember names to map to\n * network addresses.\n *\n * @_section: api/providers/ens-resolver:ENS Resolver [about-ens-rsolver]\n */\nimport { getAddress } from \"../address/index.js\";\nimport { ZeroAddress } from \"../constants/index.js\";\nimport { Contract } from \"../contract/index.js\";\nimport { dnsEncode, namehash } from \"../hash/index.js\";\nimport { hexlify, isHexString, toBeHex, defineProperties, encodeBase58, assert, assertArgument, isError, FetchRequest } from \"../utils/index.js\";\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n assertArgument(false, \"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\n/**\n * A provider plugin super-class for processing multicoin address types.\n */\nexport class MulticoinProviderPlugin {\n /**\n * The name.\n */\n name;\n /**\n * Creates a new **MulticoinProviderPluing** for %%name%%.\n */\n constructor(name) {\n defineProperties(this, { name });\n }\n connect(proivder) {\n return this;\n }\n /**\n * Returns ``true`` if %%coinType%% is supported by this plugin.\n */\n supportsCoinType(coinType) {\n return false;\n }\n /**\n * Resolves to the encoded %%address%% for %%coinType%%.\n */\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n /**\n * Resolves to the decoded %%data%% for %%coinType%%.\n */\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.plugins.provider.BasicMulticoin\";\n/**\n * A **BasicMulticoinProviderPlugin** provides service for common\n * coin types, which do not require additional libraries to encode or\n * decode.\n */\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n /**\n * Creates a new **BasicMulticoinProviderPlugin**.\n */\n constructor() {\n super(BasicMulticoinPluginId);\n }\n}\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n/**\n * A connected object to a resolved ENS name resolver, which can be\n * used to query additional details.\n */\nexport class EnsResolver {\n /**\n * The connected provider.\n */\n provider;\n /**\n * The address of the resolver.\n */\n address;\n /**\n * The name this resolver was resolved against.\n */\n name;\n // For EIP-2544 names, the ancestor that provided the resolver\n #supports2544;\n #resolver;\n constructor(provider, address, name) {\n defineProperties(this, { provider, address, name });\n this.#supports2544 = null;\n this.#resolver = new Contract(address, [\n \"function supportsInterface(bytes4) view returns (bool)\",\n \"function resolve(bytes, bytes) view returns (bytes)\",\n \"function addr(bytes32) view returns (address)\",\n \"function addr(bytes32, uint) view returns (bytes)\",\n \"function text(bytes32, string) view returns (string)\",\n \"function contenthash(bytes32) view returns (bytes)\",\n ], provider);\n }\n /**\n * Resolves to true if the resolver supports wildcard resolution.\n */\n async supportsWildcard() {\n if (this.#supports2544 == null) {\n this.#supports2544 = (async () => {\n try {\n return await this.#resolver.supportsInterface(\"0x9061b923\");\n }\n catch (error) {\n // Wildcard resolvers must understand supportsInterface\n // and return true.\n if (isError(error, \"CALL_EXCEPTION\")) {\n return false;\n }\n // Let future attempts try again...\n this.#supports2544 = null;\n throw error;\n }\n })();\n }\n return await this.#supports2544;\n }\n async #fetch(funcName, params) {\n params = (params || []).slice();\n const iface = this.#resolver.interface;\n // The first parameters is always the nodehash\n params.unshift(namehash(this.name));\n let fragment = null;\n if (await this.supportsWildcard()) {\n fragment = iface.getFunction(funcName);\n assert(fragment, \"missing fragment\", \"UNKNOWN_ERROR\", {\n info: { funcName }\n });\n params = [\n dnsEncode(this.name, 255),\n iface.encodeFunctionData(fragment, params)\n ];\n funcName = \"resolve(bytes,bytes)\";\n }\n params.push({\n enableCcipRead: true\n });\n try {\n const result = await this.#resolver[funcName](...params);\n if (fragment) {\n return iface.decodeFunctionResult(fragment, result)[0];\n }\n return result;\n }\n catch (error) {\n if (!isError(error, \"CALL_EXCEPTION\")) {\n throw error;\n }\n }\n return null;\n }\n /**\n * Resolves to the address for %%coinType%% or null if the\n * provided %%coinType%% has not been configured.\n */\n async getAddress(coinType) {\n if (coinType == null) {\n coinType = 60;\n }\n if (coinType === 60) {\n try {\n const result = await this.#fetch(\"addr(bytes32)\");\n // No address\n if (result == null || result === ZeroAddress) {\n return null;\n }\n return result;\n }\n catch (error) {\n if (isError(error, \"CALL_EXCEPTION\")) {\n return null;\n }\n throw error;\n }\n }\n // Try decoding its EVM canonical chain as an EVM chain address first\n if (coinType >= 0 && coinType < 0x80000000) {\n let ethCoinType = coinType + 0x80000000;\n const data = await this.#fetch(\"addr(bytes32,uint)\", [ethCoinType]);\n if (isHexString(data, 20)) {\n return getAddress(data);\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = await this.#fetch(\"addr(bytes32,uint)\", [coinType]);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.decodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n assert(false, `invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n /**\n * Resolves to the EIP-634 text record for %%key%%, or ``null``\n * if unconfigured.\n */\n async getText(key) {\n const data = await this.#fetch(\"text(bytes32,string)\", [key]);\n if (data == null || data === \"0x\") {\n return null;\n }\n return data;\n }\n /**\n * Rsolves to the content-hash or ``null`` if unconfigured.\n */\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const data = await this.#fetch(\"contenthash(bytes32)\");\n // No contenthash\n if (data == null || data === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = data.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\n }\n }\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = data.match(/^0xe40101fa011b20([0-9a-f]*)$/);\n if (swarm && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n assert(false, `invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data }\n });\n }\n /**\n * Resolves to the avatar url or ``null`` if the avatar is either\n * unconfigured or incorrectly configured (e.g. references an NFT\n * not owned by the address).\n *\n * If diagnosing issues with configurations, the [[_getAvatar]]\n * method may be useful.\n */\n async getAvatar() {\n const avatar = await this._getAvatar();\n return avatar.url;\n }\n /**\n * When resolving an avatar, there are many steps involved, such\n * fetching metadata and possibly validating ownership of an\n * NFT.\n *\n * This method can be used to examine each step and the value it\n * was working from.\n */\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: this.name }];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n return { url: null, linkage };\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\n }\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"tokenURI(uint256)\" : \"uri(uint256)\";\n linkage.push({ type: scheme, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n return { url: null, linkage };\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n return { url: null, linkage };\n }\n const tokenId = comps[1];\n const contract = new Contract(comps[0], [\n // ERC-721\n \"function tokenURI(uint) view returns (string)\",\n \"function ownerOf(uint) view returns (address)\",\n // ERC-1155\n \"function uri(uint) view returns (string)\",\n \"function balanceOf(address, uint256) view returns (uint)\"\n ], this.provider);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n const tokenOwner = await contract.ownerOf(tokenId);\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n return { url: null, linkage };\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n const balance = await contract.balanceOf(owner, tokenId);\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n return { url: null, linkage };\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n let metadataUrl = await contract[selector](tokenId);\n if (metadataUrl == null || metadataUrl === \"0x\") {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n return { url: null, linkage };\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", toBeHex(tokenId, 32).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await (new FetchRequest(metadataUrl)).send();\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n return { url: null, linkage };\n }\n return { url: null, linkage };\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n return { url: null, linkage };\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n return { url: null, linkage };\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n return { url: null, linkage };\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) { }\n return { linkage, url: null };\n }\n static async getEnsAddress(provider) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.network.Ens\");\n // No ENS...\n assert(ensPlugin, \"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getEnsAddress\", info: { network }\n });\n return ensPlugin.address;\n }\n static async #getResolver(provider, name) {\n const ensAddr = await EnsResolver.getEnsAddress(provider);\n try {\n const contract = new Contract(ensAddr, [\n \"function resolver(bytes32) view returns (address)\"\n ], provider);\n const addr = await contract.resolver(namehash(name), {\n enableCcipRead: true\n });\n if (addr === ZeroAddress) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n }\n /**\n * Resolve to the ENS resolver for %%name%% using %%provider%% or\n * ``null`` if unconfigured.\n */\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await EnsResolver.#getResolver(provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n//# sourceMappingURL=ens-resolver.js.map","/**\n * @_ignore\n */\nimport { getAddress, getCreateAddress } from \"../address/index.js\";\nimport { Signature } from \"../crypto/index.js\";\nimport { accessListify } from \"../transaction/index.js\";\nimport { getBigInt, getNumber, hexlify, isHexString, zeroPadValue, assert, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nexport function allowNull(format, nullValue) {\n return (function (value) {\n if (value == null) {\n return nullValue;\n }\n return format(value);\n });\n}\nexport function arrayOf(format, allowNull) {\n return ((array) => {\n if (allowNull && array == null) {\n return null;\n }\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format(i));\n });\n}\n// Requires an object which matches a fleet of other formatters\n// Any FormatFunc may return `undefined` to have the value omitted\n// from the result object. Calls preserve `this`.\nexport function object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key](value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n assert(false, `invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n}\nexport function formatBoolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n assertArgument(false, `invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n}\nexport function formatData(value) {\n assertArgument(isHexString(value, true), \"invalid data\", \"value\", value);\n return value;\n}\nexport function formatHash(value) {\n assertArgument(isHexString(value, 32), \"invalid hash\", \"value\", value);\n return value;\n}\nexport function formatUint256(value) {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return zeroPadValue(value, 32);\n}\nconst _formatLog = object({\n address: getAddress,\n blockHash: formatHash,\n blockNumber: getNumber,\n data: formatData,\n index: getNumber,\n removed: allowNull(formatBoolean, false),\n topics: arrayOf(formatHash),\n transactionHash: formatHash,\n transactionIndex: getNumber,\n}, {\n index: [\"logIndex\"]\n});\nexport function formatLog(value) {\n return _formatLog(value);\n}\nconst _formatBlock = object({\n hash: allowNull(formatHash),\n parentHash: formatHash,\n parentBeaconBlockRoot: allowNull(formatHash, null),\n number: getNumber,\n timestamp: getNumber,\n nonce: allowNull(formatData),\n difficulty: getBigInt,\n gasLimit: getBigInt,\n gasUsed: getBigInt,\n stateRoot: allowNull(formatHash, null),\n receiptsRoot: allowNull(formatHash, null),\n blobGasUsed: allowNull(getBigInt, null),\n excessBlobGas: allowNull(getBigInt, null),\n miner: allowNull(getAddress),\n prevRandao: allowNull(formatHash, null),\n extraData: formatData,\n baseFeePerGas: allowNull(getBigInt)\n}, {\n prevRandao: [\"mixHash\"]\n});\nexport function formatBlock(value) {\n const result = _formatBlock(value);\n result.transactions = value.transactions.map((tx) => {\n if (typeof (tx) === \"string\") {\n return tx;\n }\n return formatTransactionResponse(tx);\n });\n return result;\n}\nconst _formatReceiptLog = object({\n transactionIndex: getNumber,\n blockNumber: getNumber,\n transactionHash: formatHash,\n address: getAddress,\n topics: arrayOf(formatHash),\n data: formatData,\n index: getNumber,\n blockHash: formatHash,\n}, {\n index: [\"logIndex\"]\n});\nexport function formatReceiptLog(value) {\n return _formatReceiptLog(value);\n}\nconst _formatTransactionReceipt = object({\n to: allowNull(getAddress, null),\n from: allowNull(getAddress, null),\n contractAddress: allowNull(getAddress, null),\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n index: getNumber,\n root: allowNull(hexlify),\n gasUsed: getBigInt,\n blobGasUsed: allowNull(getBigInt, null),\n logsBloom: allowNull(formatData),\n blockHash: formatHash,\n hash: formatHash,\n logs: arrayOf(formatReceiptLog),\n blockNumber: getNumber,\n //confirmations: allowNull(getNumber, null),\n cumulativeGasUsed: getBigInt,\n effectiveGasPrice: allowNull(getBigInt),\n blobGasPrice: allowNull(getBigInt, null),\n status: allowNull(getNumber),\n type: allowNull(getNumber, 0)\n}, {\n effectiveGasPrice: [\"gasPrice\"],\n hash: [\"transactionHash\"],\n index: [\"transactionIndex\"],\n});\nexport function formatTransactionReceipt(value) {\n return _formatTransactionReceipt(value);\n}\nexport function formatTransactionResponse(value) {\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (value.to && getBigInt(value.to) === BN_0) {\n value.to = \"0x0000000000000000000000000000000000000000\";\n }\n const result = object({\n hash: formatHash,\n // Some nodes do not return this, usually test nodes (like Ganache)\n index: allowNull(getNumber, undefined),\n type: (value) => {\n if (value === \"0x\" || value == null) {\n return 0;\n }\n return getNumber(value);\n },\n accessList: allowNull(accessListify, null),\n blobVersionedHashes: allowNull(arrayOf(formatHash, true), null),\n blockHash: allowNull(formatHash, null),\n blockNumber: allowNull(getNumber, null),\n transactionIndex: allowNull(getNumber, null),\n from: getAddress,\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas) must be set\n gasPrice: allowNull(getBigInt),\n maxPriorityFeePerGas: allowNull(getBigInt),\n maxFeePerGas: allowNull(getBigInt),\n maxFeePerBlobGas: allowNull(getBigInt, null),\n gasLimit: getBigInt,\n to: allowNull(getAddress, null),\n value: getBigInt,\n nonce: getNumber,\n data: formatData,\n creates: allowNull(getAddress, null),\n chainId: allowNull(getBigInt, null)\n }, {\n data: [\"input\"],\n gasLimit: [\"gas\"],\n index: [\"transactionIndex\"]\n })(value);\n // If to and creates are empty, populate the creates from the value\n if (result.to == null && result.creates == null) {\n result.creates = getCreateAddress(result);\n }\n // @TODO: Check fee data\n // Add an access list to supported transaction types\n if ((value.type === 1 || value.type === 2) && value.accessList == null) {\n result.accessList = [];\n }\n // Compute the signature\n if (value.signature) {\n result.signature = Signature.from(value.signature);\n }\n else {\n result.signature = Signature.from(value);\n }\n // Some backends omit ChainId on legacy transactions, but we can compute it\n if (result.chainId == null) {\n const chainId = result.signature.legacyChainId;\n if (chainId != null) {\n result.chainId = chainId;\n }\n }\n // @TODO: check chainID\n /*\n if (value.chainId != null) {\n let chainId = value.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = value.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = value.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n */\n // 0x0000... should actually be null\n if (result.blockHash && getBigInt(result.blockHash) === BN_0) {\n result.blockHash = null;\n }\n return result;\n}\n//# sourceMappingURL=format.js.map","import { defineProperties } from \"../utils/properties.js\";\nimport { assertArgument } from \"../utils/index.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\n/**\n * A **NetworkPlugin** provides additional functionality on a [[Network]].\n */\nexport class NetworkPlugin {\n /**\n * The name of the plugin.\n *\n * It is recommended to use reverse-domain-notation, which permits\n * unique names with a known authority as well as hierarchal entries.\n */\n name;\n /**\n * Creates a new **NetworkPlugin**.\n */\n constructor(name) {\n defineProperties(this, { name });\n }\n /**\n * Creates a copy of this plugin.\n */\n clone() {\n return new NetworkPlugin(this.name);\n }\n}\n/**\n * A **GasCostPlugin** allows a network to provide alternative values when\n * computing the intrinsic gas required for a transaction.\n */\nexport class GasCostPlugin extends NetworkPlugin {\n /**\n * The block number to treat these values as valid from.\n *\n * This allows a hardfork to have updated values included as well as\n * mulutiple hardforks to be supported.\n */\n effectiveBlock;\n /**\n * The transactions base fee.\n */\n txBase;\n /**\n * The fee for creating a new account.\n */\n txCreate;\n /**\n * The fee per zero-byte in the data.\n */\n txDataZero;\n /**\n * The fee per non-zero-byte in the data.\n */\n txDataNonzero;\n /**\n * The fee per storage key in the [[link-eip-2930]] access list.\n */\n txAccessListStorageKey;\n /**\n * The fee per address in the [[link-eip-2930]] access list.\n */\n txAccessListAddress;\n /**\n * Creates a new GasCostPlugin from %%effectiveBlock%% until the\n * latest block or another GasCostPlugin supercedes that block number,\n * with the associated %%costs%%.\n */\n constructor(effectiveBlock, costs) {\n if (effectiveBlock == null) {\n effectiveBlock = 0;\n }\n super(`org.ethers.network.plugins.GasCost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n assertArgument(typeof (value) === \"number\", `invalud value for ${name}`, \"costs\", costs);\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n/**\n * An **EnsPlugin** allows a [[Network]] to specify the ENS Registry\n * Contract address and the target network to use when using that\n * contract.\n *\n * Various testnets have their own instance of the contract to use, but\n * in general, the mainnet instance supports multi-chain addresses and\n * should be used.\n */\nexport class EnsPlugin extends NetworkPlugin {\n /**\n * The ENS Registrty Contract address.\n */\n address;\n /**\n * The chain ID that the ENS contract lives on.\n */\n targetNetwork;\n /**\n * Creates a new **EnsPlugin** connected to %%address%% on the\n * %%targetNetwork%%. The default ENS address and mainnet is used\n * if unspecified.\n */\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.network.Ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n}\n/**\n * A **FeeDataNetworkPlugin** allows a network to provide and alternate\n * means to specify its fee data.\n *\n * For example, a network which does not support [[link-eip-1559]] may\n * choose to use a Gas Station site to approximate the gas price.\n */\nexport class FeeDataNetworkPlugin extends NetworkPlugin {\n #feeDataFunc;\n /**\n * The fee data function provided to the constructor.\n */\n get feeDataFunc() {\n return this.#feeDataFunc;\n }\n /**\n * Creates a new **FeeDataNetworkPlugin**.\n */\n constructor(feeDataFunc) {\n super(\"org.ethers.plugins.network.FeeData\");\n this.#feeDataFunc = feeDataFunc;\n }\n /**\n * Resolves to the fee data.\n */\n async getFeeData(provider) {\n return await this.#feeDataFunc(provider);\n }\n clone() {\n return new FeeDataNetworkPlugin(this.#feeDataFunc);\n }\n}\nexport class FetchUrlFeeDataNetworkPlugin extends NetworkPlugin {\n #url;\n #processFunc;\n /**\n * The URL to initialize the FetchRequest with in %%processFunc%%.\n */\n get url() { return this.#url; }\n /**\n * The callback to use when computing the FeeData.\n */\n get processFunc() { return this.#processFunc; }\n /**\n * Creates a new **FetchUrlFeeDataNetworkPlugin** which will\n * be used when computing the fee data for the network.\n */\n constructor(url, processFunc) {\n super(\"org.ethers.plugins.network.FetchUrlFeeDataPlugin\");\n this.#url = url;\n this.#processFunc = processFunc;\n }\n // We are immutable, so we can serve as our own clone\n clone() { return this; }\n}\n/*\nexport class CustomBlockNetworkPlugin extends NetworkPlugin {\n readonly #blockFunc: (provider: Provider, block: BlockParams) => Block;\n readonly #blockWithTxsFunc: (provider: Provider, block: BlockParams) => Block;\n\n constructor(blockFunc: (provider: Provider, block: BlockParams) => Block, blockWithTxsFunc: (provider: Provider, block: BlockParams) => Block) {\n super(\"org.ethers.network-plugins.custom-block\");\n this.#blockFunc = blockFunc;\n this.#blockWithTxsFunc = blockWithTxsFunc;\n }\n\n async getBlock(provider: Provider, block: BlockParams): Promise> {\n return await this.#blockFunc(provider, block);\n }\n\n async getBlockions(provider: Provider, block: BlockParams): Promise> {\n return await this.#blockWithTxsFunc(provider, block);\n }\n\n clone(): CustomBlockNetworkPlugin {\n return new CustomBlockNetworkPlugin(this.#blockFunc, this.#blockWithTxsFunc);\n }\n}\n*/\n//# sourceMappingURL=plugins-network.js.map","/**\n * A **Network** encapsulates the various properties required to\n * interact with a specific chain.\n *\n * @_subsection: api/providers:Networks [networks]\n */\nimport { accessListify } from \"../transaction/index.js\";\nimport { getBigInt, assert, assertArgument } from \"../utils/index.js\";\nimport { EnsPlugin, FetchUrlFeeDataNetworkPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\nconst Networks = new Map();\n/**\n * A **Network** provides access to a chain's properties and allows\n * for plug-ins to extend functionality.\n */\nexport class Network {\n #name;\n #chainId;\n #plugins;\n /**\n * Creates a new **Network** for %%name%% and %%chainId%%.\n */\n constructor(name, chainId) {\n this.#name = name;\n this.#chainId = getBigInt(chainId);\n this.#plugins = new Map();\n }\n /**\n * Returns a JSON-compatible representation of a Network.\n */\n toJSON() {\n return { name: this.name, chainId: String(this.chainId) };\n }\n /**\n * The network common name.\n *\n * This is the canonical name, as networks migh have multiple\n * names.\n */\n get name() { return this.#name; }\n set name(value) { this.#name = value; }\n /**\n * The network chain ID.\n */\n get chainId() { return this.#chainId; }\n set chainId(value) { this.#chainId = getBigInt(value, \"chainId\"); }\n /**\n * Returns true if %%other%% matches this network. Any chain ID\n * must match, and if no chain ID is present, the name must match.\n *\n * This method does not currently check for additional properties,\n * such as ENS address or plug-in compatibility.\n */\n matches(other) {\n if (other == null) {\n return false;\n }\n if (typeof (other) === \"string\") {\n try {\n return (this.chainId === getBigInt(other));\n }\n catch (error) { }\n return (this.name === other);\n }\n if (typeof (other) === \"number\" || typeof (other) === \"bigint\") {\n try {\n return (this.chainId === getBigInt(other));\n }\n catch (error) { }\n return false;\n }\n if (typeof (other) === \"object\") {\n if (other.chainId != null) {\n try {\n return (this.chainId === getBigInt(other.chainId));\n }\n catch (error) { }\n return false;\n }\n if (other.name != null) {\n return (this.name === other.name);\n }\n return false;\n }\n return false;\n }\n /**\n * Returns the list of plugins currently attached to this Network.\n */\n get plugins() {\n return Array.from(this.#plugins.values());\n }\n /**\n * Attach a new %%plugin%% to this Network. The network name\n * must be unique, excluding any fragment.\n */\n attachPlugin(plugin) {\n if (this.#plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n this.#plugins.set(plugin.name, plugin.clone());\n return this;\n }\n /**\n * Return the plugin, if any, matching %%name%% exactly. Plugins\n * with fragments will not be returned unless %%name%% includes\n * a fragment.\n */\n getPlugin(name) {\n return (this.#plugins.get(name)) || null;\n }\n /**\n * Gets a list of all plugins that match %%name%%, with otr without\n * a fragment.\n */\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n /**\n * Create a copy of this Network.\n */\n clone() {\n const clone = new Network(this.name, this.chainId);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n /**\n * Compute the intrinsic gas required for a transaction.\n *\n * A GasCostPlugin can be attached to override the default\n * values.\n */\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.plugins.network.GasCost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = accessListify(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n /**\n * Returns a new Network for the %%network%% name or chainId.\n */\n static from(network) {\n injectCommonNetworks();\n // Default network\n if (network == null) {\n return Network.from(\"mainnet\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n assertArgument(false, \"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n assertArgument(typeof (network.name) === \"string\" && typeof (network.chainId) === \"number\", \"invalid network object name or chainId\", \"network\", network);\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((network).layerOneConnection));\n //}\n return custom;\n }\n assertArgument(false, \"invalid network\", \"network\", network);\n }\n /**\n * Register %%nameOrChainId%% with a function which returns\n * an instance of a Network representing that chain.\n */\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n assertArgument(false, `conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n// We don't want to bring in formatUnits because it is backed by\n// FixedNumber and we want to keep Networks tiny. The values\n// included by the Gas Stations are also IEEE 754 with lots of\n// rounding issues and exceed the strict checks formatUnits has.\nfunction parseUnits(_value, decimals) {\n const value = String(_value);\n if (!value.match(/^[0-9.]+$/)) {\n throw new Error(`invalid gwei value: ${_value}`);\n }\n // Break into [ whole, fraction ]\n const comps = value.split(\".\");\n if (comps.length === 1) {\n comps.push(\"\");\n }\n // More than 1 decimal point or too many fractional positions\n if (comps.length !== 2) {\n throw new Error(`invalid gwei value: ${_value}`);\n }\n // Pad the fraction to 9 decimalplaces\n while (comps[1].length < decimals) {\n comps[1] += \"0\";\n }\n // Too many decimals and some non-zero ending, take the ceiling\n if (comps[1].length > 9) {\n let frac = BigInt(comps[1].substring(0, 9));\n if (!comps[1].substring(9).match(/^0+$/)) {\n frac++;\n }\n comps[1] = frac.toString();\n }\n return BigInt(comps[0] + comps[1]);\n}\n// Used by Polygon to use a gas station for fee data\nfunction getGasStationPlugin(url) {\n return new FetchUrlFeeDataNetworkPlugin(url, async (fetchFeeData, provider, request) => {\n // Prevent Cloudflare from blocking our request in node.js\n request.setHeader(\"User-Agent\", \"ethers\");\n let response;\n try {\n const [_response, _feeData] = await Promise.all([\n request.send(), fetchFeeData()\n ]);\n response = _response;\n const payload = response.bodyJson.standard;\n const feeData = {\n gasPrice: _feeData.gasPrice,\n maxFeePerGas: parseUnits(payload.maxFee, 9),\n maxPriorityFeePerGas: parseUnits(payload.maxPriorityFee, 9),\n };\n return feeData;\n }\n catch (error) {\n assert(false, `error encountered with polygon gas station (${JSON.stringify(request.url)})`, \"SERVER_ERROR\", { request, response, error });\n }\n });\n}\n// See: https://chainlist.org\nlet injected = false;\nfunction injectCommonNetworks() {\n if (injected) {\n return;\n }\n injected = true;\n /// Register popular Ethereum networks\n function registerEth(name, chainId, options) {\n const func = function () {\n const network = new Network(name, chainId);\n // We use 0 to disable ENS\n if (options.ensNetwork != null) {\n network.attachPlugin(new EnsPlugin(null, options.ensNetwork));\n }\n network.attachPlugin(new GasCostPlugin());\n (options.plugins || []).forEach((plugin) => {\n network.attachPlugin(plugin);\n });\n return network;\n };\n // Register the network by name and chain ID\n Network.register(name, func);\n Network.register(chainId, func);\n if (options.altNames) {\n options.altNames.forEach((name) => {\n Network.register(name, func);\n });\n }\n }\n registerEth(\"mainnet\", 1, { ensNetwork: 1, altNames: [\"homestead\"] });\n registerEth(\"ropsten\", 3, { ensNetwork: 3 });\n registerEth(\"rinkeby\", 4, { ensNetwork: 4 });\n registerEth(\"goerli\", 5, { ensNetwork: 5 });\n registerEth(\"kovan\", 42, { ensNetwork: 42 });\n registerEth(\"sepolia\", 11155111, { ensNetwork: 11155111 });\n registerEth(\"holesky\", 17000, { ensNetwork: 17000 });\n registerEth(\"classic\", 61, {});\n registerEth(\"classicKotti\", 6, {});\n registerEth(\"arbitrum\", 42161, {\n ensNetwork: 1,\n });\n registerEth(\"arbitrum-goerli\", 421613, {});\n registerEth(\"arbitrum-sepolia\", 421614, {});\n registerEth(\"base\", 8453, { ensNetwork: 1 });\n registerEth(\"base-goerli\", 84531, {});\n registerEth(\"base-sepolia\", 84532, {});\n registerEth(\"bnb\", 56, { ensNetwork: 1 });\n registerEth(\"bnbt\", 97, {});\n registerEth(\"linea\", 59144, { ensNetwork: 1 });\n registerEth(\"linea-goerli\", 59140, {});\n registerEth(\"linea-sepolia\", 59141, {});\n registerEth(\"matic\", 137, {\n ensNetwork: 1,\n plugins: [\n getGasStationPlugin(\"https:/\\/gasstation.polygon.technology/v2\")\n ]\n });\n registerEth(\"matic-amoy\", 80002, {});\n registerEth(\"matic-mumbai\", 80001, {\n altNames: [\"maticMumbai\", \"maticmum\"],\n plugins: [\n getGasStationPlugin(\"https:/\\/gasstation-testnet.polygon.technology/v2\")\n ]\n });\n registerEth(\"optimism\", 10, {\n ensNetwork: 1,\n plugins: []\n });\n registerEth(\"optimism-goerli\", 420, {});\n registerEth(\"optimism-sepolia\", 11155420, {});\n registerEth(\"xdai\", 100, { ensNetwork: 1 });\n}\n//# sourceMappingURL=network.js.map","import { assert, isHexString } from \"../utils/index.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n/**\n * Return the polling subscriber for common events.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n assert(false, \"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\n/**\n * A **PollingBlockSubscriber** polls at a regular interval for a change\n * in the block number.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class PollingBlockSubscriber {\n #provider;\n #poller;\n #interval;\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n #blockNumber;\n /**\n * Create a new **PollingBlockSubscriber** attached to %%provider%%.\n */\n constructor(provider) {\n this.#provider = provider;\n this.#poller = null;\n this.#interval = 4000;\n this.#blockNumber = -2;\n }\n /**\n * The polling interval.\n */\n get pollingInterval() { return this.#interval; }\n set pollingInterval(value) { this.#interval = value; }\n async #poll() {\n try {\n const blockNumber = await this.#provider.getBlockNumber();\n // Bootstrap poll to setup our initial block number\n if (this.#blockNumber === -2) {\n this.#blockNumber = blockNumber;\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== this.#blockNumber) {\n for (let b = this.#blockNumber + 1; b <= blockNumber; b++) {\n // We have been stopped\n if (this.#poller == null) {\n return;\n }\n await this.#provider.emit(\"block\", b);\n }\n this.#blockNumber = blockNumber;\n }\n }\n catch (error) {\n // @TODO: Minor bump, add an \"error\" event to let subscribers\n // know things went awry.\n //console.log(error);\n }\n // We have been stopped\n if (this.#poller == null) {\n return;\n }\n this.#poller = this.#provider._setTimeout(this.#poll.bind(this), this.#interval);\n }\n start() {\n if (this.#poller) {\n return;\n }\n this.#poller = this.#provider._setTimeout(this.#poll.bind(this), this.#interval);\n this.#poll();\n }\n stop() {\n if (!this.#poller) {\n return;\n }\n this.#provider._clearTimeout(this.#poller);\n this.#poller = null;\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n this.#blockNumber = -2;\n }\n }\n resume() {\n this.start();\n }\n}\n/**\n * An **OnBlockSubscriber** can be sub-classed, with a [[_poll]]\n * implmentation which will be called on every new block.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class OnBlockSubscriber {\n #provider;\n #poll;\n #running;\n /**\n * Create a new **OnBlockSubscriber** attached to %%provider%%.\n */\n constructor(provider) {\n this.#provider = provider;\n this.#running = false;\n this.#poll = (blockNumber) => {\n this._poll(blockNumber, this.#provider);\n };\n }\n /**\n * Called on every new block.\n */\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n if (this.#running) {\n return;\n }\n this.#running = true;\n this.#poll(-2);\n this.#provider.on(\"block\", this.#poll);\n }\n stop() {\n if (!this.#running) {\n return;\n }\n this.#running = false;\n this.#provider.off(\"block\", this.#poll);\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\nexport class PollingBlockTagSubscriber extends OnBlockSubscriber {\n #tag;\n #lastBlock;\n constructor(provider, tag) {\n super(provider);\n this.#tag = tag;\n this.#lastBlock = -2;\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n this.#lastBlock = -2;\n }\n super.pause(dropWhilePaused);\n }\n async _poll(blockNumber, provider) {\n const block = await provider.getBlock(this.#tag);\n if (block == null) {\n return;\n }\n if (this.#lastBlock === -2) {\n this.#lastBlock = block.number;\n }\n else if (block.number > this.#lastBlock) {\n provider.emit(this.#tag, block.number);\n this.#lastBlock = block.number;\n }\n }\n}\n/**\n * @_ignore:\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n #filter;\n constructor(provider, filter) {\n super(provider);\n this.#filter = copy(filter);\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(this.#filter);\n }\n}\n/**\n * A **PollingTransactionSubscriber** will poll for a given transaction\n * hash for its receipt.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n #hash;\n /**\n * Create a new **PollingTransactionSubscriber** attached to\n * %%provider%%, listening for %%hash%%.\n */\n constructor(provider, hash) {\n super(provider);\n this.#hash = hash;\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(this.#hash);\n if (tx) {\n provider.emit(this.#hash, tx);\n }\n }\n}\n/**\n * A **PollingEventSubscriber** will poll for a given filter for its logs.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class PollingEventSubscriber {\n #provider;\n #filter;\n #poller;\n #running;\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n #blockNumber;\n /**\n * Create a new **PollingTransactionSubscriber** attached to\n * %%provider%%, listening for %%filter%%.\n */\n constructor(provider, filter) {\n this.#provider = provider;\n this.#filter = copy(filter);\n this.#poller = this.#poll.bind(this);\n this.#running = false;\n this.#blockNumber = -2;\n }\n async #poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (this.#blockNumber === -2) {\n return;\n }\n const filter = copy(this.#filter);\n filter.fromBlock = this.#blockNumber + 1;\n filter.toBlock = blockNumber;\n const logs = await this.#provider.getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (this.#blockNumber < blockNumber - 60) {\n this.#blockNumber = blockNumber - 60;\n }\n return;\n }\n for (const log of logs) {\n this.#provider.emit(this.#filter, log);\n // Only advance the block number when logs were found to\n // account for networks (like BNB and Polygon) which may\n // sacrifice event consistency for block event speed\n this.#blockNumber = log.blockNumber;\n }\n }\n start() {\n if (this.#running) {\n return;\n }\n this.#running = true;\n if (this.#blockNumber === -2) {\n this.#provider.getBlockNumber().then((blockNumber) => {\n this.#blockNumber = blockNumber;\n });\n }\n this.#provider.on(\"block\", this.#poller);\n }\n stop() {\n if (!this.#running) {\n return;\n }\n this.#running = false;\n this.#provider.off(\"block\", this.#poller);\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n this.#blockNumber = -2;\n }\n }\n resume() {\n this.start();\n }\n}\n//# sourceMappingURL=subscriber-polling.js.map","/**\n * The available providers should suffice for most developers purposes,\n * but the [[AbstractProvider]] class has many features which enable\n * sub-classing it for specific purposes.\n *\n * @_section: api/providers/abstract-provider: Subclassing Provider [abstract-provider]\n */\n// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nimport { getAddress, resolveAddress } from \"../address/index.js\";\nimport { ZeroAddress } from \"../constants/index.js\";\nimport { Contract } from \"../contract/index.js\";\nimport { namehash } from \"../hash/index.js\";\nimport { Transaction } from \"../transaction/index.js\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString, getBigInt, getBytes, getNumber, isCallException, isError, makeError, assert, assertArgument, FetchRequest, toBeArray, toQuantity, defineProperties, EventPayload, resolveProperties, toUtf8String } from \"../utils/index.js\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { formatBlock, formatLog, formatTransactionReceipt, formatTransactionResponse } from \"./format.js\";\nimport { Network } from \"./network.js\";\nimport { copyRequest, Block, FeeData, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingBlockTagSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction isPromise(value) {\n return (value && typeof (value.then) === \"function\");\n}\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (v == null) {\n return \"null\";\n }\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\n/**\n * An **UnmanagedSubscriber** is useful for events which do not require\n * any additional management, such as ``\"debug\"`` which only requires\n * emit in synchronous event loop triggered calls.\n */\nexport class UnmanagedSubscriber {\n /**\n * The name fof the event.\n */\n name;\n /**\n * Create a new UnmanagedSubscriber with %%name%%.\n */\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"debug\":\n case \"error\":\n case \"finalized\":\n case \"network\":\n case \"pending\":\n case \"safe\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n assertArgument(false, \"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nconst defaultOptions = {\n cacheTimeout: 250,\n pollingInterval: 4000\n};\n/**\n * An **AbstractProvider** provides a base class for other sub-classes to\n * implement the [[Provider]] API by normalizing input arguments and\n * formatting output results as well as tracking events for consistent\n * behaviour on an eventually-consistent network.\n */\nexport class AbstractProvider {\n #subs;\n #plugins;\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n #pausedState;\n #destroyed;\n #networkPromise;\n #anyNetwork;\n #performCache;\n // The most recent block number if running an event or -1 if no \"block\" event\n #lastBlockNumber;\n #nextTimer;\n #timers;\n #disableCcipRead;\n #options;\n /**\n * Create a new **AbstractProvider** connected to %%network%%, or\n * use the various network detection capabilities to discover the\n * [[Network]] if necessary.\n */\n constructor(_network, options) {\n this.#options = Object.assign({}, defaultOptions, options || {});\n if (_network === \"any\") {\n this.#anyNetwork = true;\n this.#networkPromise = null;\n }\n else if (_network) {\n const network = Network.from(_network);\n this.#anyNetwork = false;\n this.#networkPromise = Promise.resolve(network);\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n this.#anyNetwork = false;\n this.#networkPromise = null;\n }\n this.#lastBlockNumber = -1;\n this.#performCache = new Map();\n this.#subs = new Map();\n this.#plugins = new Map();\n this.#pausedState = null;\n this.#destroyed = false;\n this.#nextTimer = 1;\n this.#timers = new Map();\n this.#disableCcipRead = false;\n }\n get pollingInterval() { return this.#options.pollingInterval; }\n /**\n * Returns ``this``, to allow an **AbstractProvider** to implement\n * the [[ContractRunner]] interface.\n */\n get provider() { return this; }\n /**\n * Returns all the registered plug-ins.\n */\n get plugins() {\n return Array.from(this.#plugins.values());\n }\n /**\n * Attach a new plug-in.\n */\n attachPlugin(plugin) {\n if (this.#plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n this.#plugins.set(plugin.name, plugin.connect(this));\n return this;\n }\n /**\n * Get a plugin by name.\n */\n getPlugin(name) {\n return (this.#plugins.get(name)) || null;\n }\n /**\n * Prevent any CCIP-read operation, regardless of whether requested\n * in a [[call]] using ``enableCcipRead``.\n */\n get disableCcipRead() { return this.#disableCcipRead; }\n set disableCcipRead(value) { this.#disableCcipRead = !!value; }\n // Shares multiple identical requests made during the same 250ms\n async #perform(req) {\n const timeout = this.#options.cacheTimeout;\n // Caching disabled\n if (timeout < 0) {\n return await this._perform(req);\n }\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = this.#performCache.get(tag);\n if (!perform) {\n perform = this._perform(req);\n this.#performCache.set(tag, perform);\n setTimeout(() => {\n if (this.#performCache.get(tag) === perform) {\n this.#performCache.delete(tag);\n }\n }, timeout);\n }\n return await perform;\n }\n /**\n * Resolves to the data for executing the CCIP-read operations.\n */\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n // If no {data} is present, use POST; otherwise GET\n //const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n this.emit(\"debug\", { action: \"sendCcipReadFetchRequest\", request, index: i, urls });\n let errorMessage = \"unknown error\";\n const resp = await request.send();\n try {\n const result = resp.bodyJson;\n if (result.data) {\n this.emit(\"debug\", { action: \"receiveCcipReadFetchResult\", request, result });\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n this.emit(\"debug\", { action: \"receiveCcipReadFetchError\", request, result });\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n assert(resp.statusCode < 400 || resp.statusCode >= 500, `response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", { reason: \"404_MISSING_RESOURCE\", transaction: tx, info: { url, errorMessage } });\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n assert(false, `error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n /**\n * Provides the opportunity for a sub-class to wrap a block before\n * returning it, to add additional properties or an alternate\n * sub-class of [[Block]].\n */\n _wrapBlock(value, network) {\n return new Block(formatBlock(value), this);\n }\n /**\n * Provides the opportunity for a sub-class to wrap a log before\n * returning it, to add additional properties or an alternate\n * sub-class of [[Log]].\n */\n _wrapLog(value, network) {\n return new Log(formatLog(value), this);\n }\n /**\n * Provides the opportunity for a sub-class to wrap a transaction\n * receipt before returning it, to add additional properties or an\n * alternate sub-class of [[TransactionReceipt]].\n */\n _wrapTransactionReceipt(value, network) {\n return new TransactionReceipt(formatTransactionReceipt(value), this);\n }\n /**\n * Provides the opportunity for a sub-class to wrap a transaction\n * response before returning it, to add additional properties or an\n * alternate sub-class of [[TransactionResponse]].\n */\n _wrapTransactionResponse(tx, network) {\n return new TransactionResponse(formatTransactionResponse(tx), this);\n }\n /**\n * Resolves to the Network, forcing a network detection using whatever\n * technique the sub-class requires.\n *\n * Sub-classes **must** override this.\n */\n _detectNetwork() {\n assert(false, \"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n /**\n * Sub-classes should use this to perform all built-in operations. All\n * methods sanitizes and normalizes the values passed into this.\n *\n * Sub-classes **must** override this.\n */\n async _perform(req) {\n assert(false, `unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n const blockNumber = getNumber(await this.#perform({ method: \"getBlockNumber\" }), \"%response\");\n if (this.#lastBlockNumber >= 0) {\n this.#lastBlockNumber = blockNumber;\n }\n return blockNumber;\n }\n /**\n * Returns or resolves to the address for %%address%%, resolving ENS\n * names and [[Addressable]] objects and returning if already an\n * address.\n */\n _getAddress(address) {\n return resolveAddress(address, this);\n }\n /**\n * Returns or resolves to a valid block tag for %%blockTag%%, resolving\n * negative values and returning if already a valid block tag.\n */\n _getBlockTag(blockTag) {\n if (blockTag == null) {\n return \"latest\";\n }\n switch (blockTag) {\n case \"earliest\":\n return \"0x0\";\n case \"finalized\":\n case \"latest\":\n case \"pending\":\n case \"safe\":\n return blockTag;\n }\n if (isHexString(blockTag)) {\n if (isHexString(blockTag, 32)) {\n return blockTag;\n }\n return toQuantity(blockTag);\n }\n if (typeof (blockTag) === \"bigint\") {\n blockTag = getNumber(blockTag, \"blockTag\");\n }\n if (typeof (blockTag) === \"number\") {\n if (blockTag >= 0) {\n return toQuantity(blockTag);\n }\n if (this.#lastBlockNumber >= 0) {\n return toQuantity(this.#lastBlockNumber + blockTag);\n }\n return this.getBlockNumber().then((b) => toQuantity(b + blockTag));\n }\n assertArgument(false, \"invalid blockTag\", \"blockTag\", blockTag);\n }\n /**\n * Returns or resolves to a filter for %%filter%%, resolving any ENS\n * names or [[Addressable]] object and returning if already a valid\n * filter.\n */\n _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const resolve = (_address, fromBlock, toBlock) => {\n let address = undefined;\n switch (_address.length) {\n case 0: break;\n case 1:\n address = _address[0];\n break;\n default:\n _address.sort();\n address = _address;\n }\n if (blockHash) {\n if (fromBlock != null || toBlock != null) {\n throw new Error(\"invalid filter\");\n }\n }\n const filter = {};\n if (address) {\n filter.address = address;\n }\n if (topics.length) {\n filter.topics = topics;\n }\n if (fromBlock) {\n filter.fromBlock = fromBlock;\n }\n if (toBlock) {\n filter.toBlock = toBlock;\n }\n if (blockHash) {\n filter.blockHash = blockHash;\n }\n return filter;\n };\n // Addresses could be async (ENS names or Addressables)\n let address = [];\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n for (const addr of filter.address) {\n address.push(this._getAddress(addr));\n }\n }\n else {\n address.push(this._getAddress(filter.address));\n }\n }\n let fromBlock = undefined;\n if (\"fromBlock\" in filter) {\n fromBlock = this._getBlockTag(filter.fromBlock);\n }\n let toBlock = undefined;\n if (\"toBlock\" in filter) {\n toBlock = this._getBlockTag(filter.toBlock);\n }\n if (address.filter((a) => (typeof (a) !== \"string\")).length ||\n (fromBlock != null && typeof (fromBlock) !== \"string\") ||\n (toBlock != null && typeof (toBlock) !== \"string\")) {\n return Promise.all([Promise.all(address), fromBlock, toBlock]).then((result) => {\n return resolve(result[0], result[1], result[2]);\n });\n }\n return resolve(address, fromBlock, toBlock);\n }\n /**\n * Returns or resolves to a transaction for %%request%%, resolving\n * any ENS names or [[Addressable]] and returning if already a valid\n * transaction.\n */\n _getTransactionRequest(_request) {\n const request = copyRequest(_request);\n const promises = [];\n [\"to\", \"from\"].forEach((key) => {\n if (request[key] == null) {\n return;\n }\n const addr = resolveAddress(request[key], this);\n if (isPromise(addr)) {\n promises.push((async function () { request[key] = await addr; })());\n }\n else {\n request[key] = addr;\n }\n });\n if (request.blockTag != null) {\n const blockTag = this._getBlockTag(request.blockTag);\n if (isPromise(blockTag)) {\n promises.push((async function () { request.blockTag = await blockTag; })());\n }\n else {\n request.blockTag = blockTag;\n }\n }\n if (promises.length) {\n return (async function () {\n await Promise.all(promises);\n return request;\n })();\n }\n return request;\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (this.#networkPromise == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = (async () => {\n try {\n const network = await this._detectNetwork();\n this.emit(\"network\", network, null);\n return network;\n }\n catch (error) {\n if (this.#networkPromise === detectNetwork) {\n this.#networkPromise = null;\n }\n throw error;\n }\n })();\n this.#networkPromise = detectNetwork;\n return (await detectNetwork).clone();\n }\n const networkPromise = this.#networkPromise;\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (this.#anyNetwork) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (this.#networkPromise === networkPromise) {\n this.#networkPromise = Promise.resolve(actual);\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n assert(false, `network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone();\n }\n async getFeeData() {\n const network = await this.getNetwork();\n const getFeeDataFunc = async () => {\n const { _block, gasPrice, priorityFee } = await resolveProperties({\n _block: this.#getBlock(\"latest\", false),\n gasPrice: ((async () => {\n try {\n const value = await this.#perform({ method: \"getGasPrice\" });\n return getBigInt(value, \"%response\");\n }\n catch (error) { }\n return null;\n })()),\n priorityFee: ((async () => {\n try {\n const value = await this.#perform({ method: \"getPriorityFee\" });\n return getBigInt(value, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null;\n let maxPriorityFeePerGas = null;\n // These are the recommended EIP-1559 heuristics for fee data\n const block = this._wrapBlock(_block, network);\n if (block && block.baseFeePerGas) {\n maxPriorityFeePerGas = (priorityFee != null) ? priorityFee : BigInt(\"1000000000\");\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n };\n // Check for a FeeDataNetWorkPlugin\n const plugin = network.getPlugin(\"org.ethers.plugins.network.FetchUrlFeeDataPlugin\");\n if (plugin) {\n const req = new FetchRequest(plugin.url);\n const feeData = await plugin.processFunc(getFeeDataFunc, this, req);\n return new FeeData(feeData.gasPrice, feeData.maxFeePerGas, feeData.maxPriorityFeePerGas);\n }\n return await getFeeDataFunc();\n }\n async estimateGas(_tx) {\n let tx = this._getTransactionRequest(_tx);\n if (isPromise(tx)) {\n tx = await tx;\n }\n return getBigInt(await this.#perform({\n method: \"estimateGas\", transaction: tx\n }), \"%response\");\n }\n async #call(tx, blockTag, attempt) {\n assert(attempt < MAX_CCIP_REDIRECTS, \"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n // This came in as a PerformActionTransaction, so to/from are safe; we can cast\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && error.data && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n assert(false, error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\", transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n assert(ccipArgs.sender.toLowerCase() === txSender.toLowerCase(), \"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n action: \"call\",\n data,\n reason: \"OffchainLookup\",\n transaction: transaction,\n invocation: null,\n revert: {\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n name: \"OffchainLookup\",\n args: ccipArgs.errorArgs\n }\n });\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n assert(ccipResult != null, \"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\", transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n const tx = {\n to: txSender,\n data: concat([ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])])\n };\n this.emit(\"debug\", { action: \"sendCcipReadCall\", transaction: tx });\n try {\n const result = await this.#call(tx, blockTag, attempt + 1);\n this.emit(\"debug\", { action: \"receiveCcipReadCallResult\", transaction: Object.assign({}, tx), result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { action: \"receiveCcipReadCallError\", transaction: Object.assign({}, tx), error });\n throw error;\n }\n }\n throw error;\n }\n }\n async #checkNetwork(promise) {\n const { value } = await resolveProperties({\n network: this.getNetwork(),\n value: promise\n });\n return value;\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransactionRequest(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return await this.#checkNetwork(this.#call(tx, blockTag, _tx.enableCcipRead ? 0 : -1));\n }\n // Account\n async #getAccountValue(request, _address, _blockTag) {\n let address = this._getAddress(_address);\n let blockTag = this._getBlockTag(_blockTag);\n if (typeof (address) !== \"string\" || typeof (blockTag) !== \"string\") {\n [address, blockTag] = await Promise.all([address, blockTag]);\n }\n return await this.#checkNetwork(this.#perform(Object.assign(request, { address, blockTag })));\n }\n async getBalance(address, blockTag) {\n return getBigInt(await this.#getAccountValue({ method: \"getBalance\" }, address, blockTag), \"%response\");\n }\n async getTransactionCount(address, blockTag) {\n return getNumber(await this.#getAccountValue({ method: \"getTransactionCount\" }, address, blockTag), \"%response\");\n }\n async getCode(address, blockTag) {\n return hexlify(await this.#getAccountValue({ method: \"getCode\" }, address, blockTag));\n }\n async getStorage(address, _position, blockTag) {\n const position = getBigInt(_position, \"position\");\n return hexlify(await this.#getAccountValue({ method: \"getStorage\", position }, address, blockTag));\n }\n // Write\n async broadcastTransaction(signedTx) {\n const { blockNumber, hash, network } = await resolveProperties({\n blockNumber: this.getBlockNumber(),\n hash: this._perform({\n method: \"broadcastTransaction\",\n signedTransaction: signedTx\n }),\n network: this.getNetwork()\n });\n const tx = Transaction.from(signedTx);\n if (tx.hash !== hash) {\n throw new Error(\"@TODO: the returned hash did not match\");\n }\n return this._wrapTransactionResponse(tx, network).replaceableTransaction(blockNumber);\n }\n async #getBlock(block, includeTransactions) {\n // @TODO: Add CustomBlockPlugin check\n if (isHexString(block, 32)) {\n return await this.#perform({\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n let blockTag = this._getBlockTag(block);\n if (typeof (blockTag) !== \"string\") {\n blockTag = await blockTag;\n }\n return await this.#perform({\n method: \"getBlock\", blockTag, includeTransactions\n });\n }\n // Queries\n async getBlock(block, prefetchTxs) {\n const { network, params } = await resolveProperties({\n network: this.getNetwork(),\n params: this.#getBlock(block, !!prefetchTxs)\n });\n if (params == null) {\n return null;\n }\n return this._wrapBlock(params, network);\n }\n async getTransaction(hash) {\n const { network, params } = await resolveProperties({\n network: this.getNetwork(),\n params: this.#perform({ method: \"getTransaction\", hash })\n });\n if (params == null) {\n return null;\n }\n return this._wrapTransactionResponse(params, network);\n }\n async getTransactionReceipt(hash) {\n const { network, params } = await resolveProperties({\n network: this.getNetwork(),\n params: this.#perform({ method: \"getTransactionReceipt\", hash })\n });\n if (params == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (params.gasPrice == null && params.effectiveGasPrice == null) {\n const tx = await this.#perform({ method: \"getTransaction\", hash });\n if (tx == null) {\n throw new Error(\"report this; could not find tx or effectiveGasPrice\");\n }\n params.effectiveGasPrice = tx.gasPrice;\n }\n return this._wrapTransactionReceipt(params, network);\n }\n async getTransactionResult(hash) {\n const { result } = await resolveProperties({\n network: this.getNetwork(),\n result: this.#perform({ method: \"getTransactionResult\", hash })\n });\n if (result == null) {\n return null;\n }\n return hexlify(result);\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n let filter = this._getFilter(_filter);\n if (isPromise(filter)) {\n filter = await filter;\n }\n const { network, params } = await resolveProperties({\n network: this.getNetwork(),\n params: this.#perform({ method: \"getLogs\", filter })\n });\n return params.map((p) => this._wrapLog(p, network));\n }\n // ENS\n _getProvider(chainId) {\n assert(false, \"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n return null;\n }\n async lookupAddress(address) {\n address = getAddress(address);\n const node = namehash(address.substring(2).toLowerCase() + \".addr.reverse\");\n try {\n const ensAddr = await EnsResolver.getEnsAddress(this);\n const ensContract = new Contract(ensAddr, [\n \"function resolver(bytes32) view returns (address)\"\n ], this);\n const resolver = await ensContract.resolver(node);\n if (resolver == null || resolver === ZeroAddress) {\n return null;\n }\n const resolverContract = new Contract(resolver, [\n \"function name(bytes32) view returns (string)\"\n ], this);\n const name = await resolverContract.name(node);\n // Failed forward resolution\n const check = await this.resolveName(name);\n if (check !== address) {\n return null;\n }\n return name;\n }\n catch (error) {\n // No data was returned from the resolver\n if (isError(error, \"BAD_DATA\") && error.value === \"0x\") {\n return null;\n }\n // Something reerted\n if (isError(error, \"CALL_EXCEPTION\")) {\n return null;\n }\n throw error;\n }\n return null;\n }\n async waitForTransaction(hash, _confirms, timeout) {\n const confirms = (_confirms != null) ? _confirms : 1;\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n //this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n assert(false, \"not implemented yet\", \"NOT_IMPLEMENTED\", {\n operation: \"waitForBlock\"\n });\n }\n /**\n * Clear a timer created using the [[_setTimeout]] method.\n */\n _clearTimeout(timerId) {\n const timer = this.#timers.get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n this.#timers.delete(timerId);\n }\n /**\n * Create a timer that will execute %%func%% after at least %%timeout%%\n * (in ms). If %%timeout%% is unspecified, then %%func%% will execute\n * in the next event loop.\n *\n * [Pausing](AbstractProvider-paused) the provider will pause any\n * associated timers.\n */\n _setTimeout(_func, timeout) {\n if (timeout == null) {\n timeout = 0;\n }\n const timerId = this.#nextTimer++;\n const func = () => {\n this.#timers.delete(timerId);\n _func();\n };\n if (this.paused) {\n this.#timers.set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n this.#timers.set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n /**\n * Perform %%func%% on each subscriber.\n */\n _forEachSubscriber(func) {\n for (const sub of this.#subs.values()) {\n func(sub.subscriber);\n }\n }\n /**\n * Sub-classes may override this to customize subscription\n * implementations.\n */\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"error\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\": {\n const subscriber = new PollingBlockSubscriber(this);\n subscriber.pollingInterval = this.pollingInterval;\n return subscriber;\n }\n case \"safe\":\n case \"finalized\":\n return new PollingBlockTagSubscriber(this, sub.type);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n /**\n * If a [[Subscriber]] fails and needs to replace itself, this\n * method may be used.\n *\n * For example, this is used for providers when using the\n * ``eth_getFilterChanges`` method, which can return null if state\n * filters are not supported by the backend, allowing the Subscriber\n * to swap in a [[PollingEventSubscriber]].\n */\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of this.#subs.values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (this.#pausedState != null) {\n newSub.pause(this.#pausedState);\n }\n break;\n }\n }\n }\n async #hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return this.#subs.get(sub.tag) || null;\n }\n async #getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = this.#subs.get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n this.#subs.set(tag, sub);\n }\n return sub;\n }\n async on(event, listener) {\n const sub = await this.#getSub(event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (this.#pausedState != null) {\n sub.subscriber.pause(this.#pausedState);\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await this.#getSub(event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (this.#pausedState != null) {\n sub.subscriber.pause(this.#pausedState);\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await this.#hasSub(event, args);\n // If there is not subscription or if a recent emit removed\n // the last of them (which also deleted the sub) do nothing\n if (!sub || sub.listeners.length === 0) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n if (sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n this.#subs.delete(sub.tag);\n }\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await this.#hasSub(event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of this.#subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await this.#hasSub(event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of this.#subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await this.#hasSub(event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n this.#subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await this.#getSub(event);\n if (started) {\n subscriber.stop();\n }\n this.#subs.delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of this.#subs) {\n if (started) {\n subscriber.stop();\n }\n this.#subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n /**\n * If this provider has been destroyed using the [[destroy]] method.\n *\n * Once destroyed, all resources are reclaimed, internal event loops\n * and timers are cleaned up and no further requests may be sent to\n * the provider.\n */\n get destroyed() {\n return this.#destroyed;\n }\n /**\n * Sub-classes may use this to shutdown any sockets or release their\n * resources and reject any pending requests.\n *\n * Sub-classes **must** call ``super.destroy()``.\n */\n destroy() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of this.#timers.keys()) {\n this._clearTimeout(timerId);\n }\n this.#destroyed = true;\n }\n /**\n * Whether the provider is currently paused.\n *\n * A paused provider will not emit any events, and generally should\n * not make any requests to the network, but that is up to sub-classes\n * to manage.\n *\n * Setting ``paused = true`` is identical to calling ``.pause(false)``,\n * which will buffer any events that occur while paused until the\n * provider is unpaused.\n */\n get paused() { return (this.#pausedState != null); }\n set paused(pause) {\n if (!!pause === this.paused) {\n return;\n }\n if (this.paused) {\n this.resume();\n }\n else {\n this.pause(false);\n }\n }\n /**\n * Pause the provider. If %%dropWhilePaused%%, any events that occur\n * while paused are dropped, otherwise all events will be emitted once\n * the provider is unpaused.\n */\n pause(dropWhilePaused) {\n this.#lastBlockNumber = -1;\n if (this.#pausedState != null) {\n if (this.#pausedState == !!dropWhilePaused) {\n return;\n }\n assert(false, \"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n this.#pausedState = !!dropWhilePaused;\n for (const timer of this.#timers.values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n /**\n * Resume the provider.\n */\n resume() {\n if (this.#pausedState == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n this.#pausedState = null;\n for (const timer of this.#timers.values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = getNumber(dataSlice(result, start, start + 32));\n const length = getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toBeArray(value);\n if (result.length > 32) {\n throw new Error(\"internal; should not happen\");\n }\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n assert(dataLength(data) >= 5 * 32, \"insufficient OffchainLookup data\", \"OFFCHAIN_FAULT\", {\n reason: \"insufficient OffchainLookup data\"\n });\n const sender = dataSlice(data, 0, 32);\n assert(dataSlice(sender, 0, 12) === dataSlice(zeros, 0, 12), \"corrupt OffchainLookup sender\", \"OFFCHAIN_FAULT\", {\n reason: \"corrupt OffchainLookup sender\"\n });\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = getNumber(dataSlice(data, 32, 64));\n const urlsLength = getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n assert(false, \"corrupt OffchainLookup urls\", \"OFFCHAIN_FAULT\", {\n reason: \"corrupt OffchainLookup urls\"\n });\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n assert(false, \"corrupt OffchainLookup calldata\", \"OFFCHAIN_FAULT\", {\n reason: \"corrupt OffchainLookup calldata\"\n });\n }\n // Get the callbackSelector (bytes4)\n assert(dataSlice(data, 100, 128) === dataSlice(zeros, 0, 28), \"corrupt OffchainLookup callbaackSelector\", \"OFFCHAIN_FAULT\", {\n reason: \"corrupt OffchainLookup callbaackSelector\"\n });\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n assert(false, \"corrupt OffchainLookup extraData\", \"OFFCHAIN_FAULT\", {\n reason: \"corrupt OffchainLookup extraData\"\n });\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","/**\n * Generally the [[Wallet]] and [[JsonRpcSigner]] and their sub-classes\n * are sufficent for most developers, but this is provided to\n * fascilitate more complex Signers.\n *\n * @_section: api/providers/abstract-signer: Subclassing Signer [abstract-signer]\n */\nimport { resolveAddress } from \"../address/index.js\";\nimport { Transaction } from \"../transaction/index.js\";\nimport { defineProperties, getBigInt, resolveProperties, assert, assertArgument } from \"../utils/index.js\";\nimport { copyRequest } from \"./provider.js\";\nfunction checkProvider(signer, operation) {\n if (signer.provider) {\n return signer.provider;\n }\n assert(false, \"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}\nasync function populate(signer, tx) {\n let pop = copyRequest(tx);\n if (pop.to != null) {\n pop.to = resolveAddress(pop.to, signer);\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n signer.getAddress(),\n resolveAddress(from, signer)\n ]).then(([address, from]) => {\n assertArgument(address.toLowerCase() === from.toLowerCase(), \"transaction from mismatch\", \"tx.from\", from);\n return address;\n });\n }\n else {\n pop.from = signer.getAddress();\n }\n return await resolveProperties(pop);\n}\n/**\n * An **AbstractSigner** includes most of teh functionality required\n * to get a [[Signer]] working as expected, but requires a few\n * Signer-specific methods be overridden.\n *\n */\nexport class AbstractSigner {\n /**\n * The provider this signer is connected to.\n */\n provider;\n /**\n * Creates a new Signer connected to %%provider%%.\n */\n constructor(provider) {\n defineProperties(this, { provider: (provider || null) });\n }\n async getNonce(blockTag) {\n return checkProvider(this, \"getTransactionCount\").getTransactionCount(await this.getAddress(), blockTag);\n }\n async populateCall(tx) {\n const pop = await populate(this, tx);\n return pop;\n }\n async populateTransaction(tx) {\n const provider = checkProvider(this, \"populateTransaction\");\n const pop = await populate(this, tx);\n if (pop.nonce == null) {\n pop.nonce = await this.getNonce(\"pending\");\n }\n if (pop.gasLimit == null) {\n pop.gasLimit = await this.estimateGas(pop);\n }\n // Populate the chain ID\n const network = await (this.provider).getNetwork();\n if (pop.chainId != null) {\n const chainId = getBigInt(pop.chainId);\n assertArgument(chainId === network.chainId, \"transaction chainId mismatch\", \"tx.chainId\", tx.chainId);\n }\n else {\n pop.chainId = network.chainId;\n }\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (pop.maxFeePerGas != null || pop.maxPriorityFeePerGas != null);\n if (pop.gasPrice != null && (pop.type === 2 || hasEip1559)) {\n assertArgument(false, \"eip-1559 transaction do not support gasPrice\", \"tx\", tx);\n }\n else if ((pop.type === 0 || pop.type === 1) && hasEip1559) {\n assertArgument(false, \"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"tx\", tx);\n }\n if ((pop.type === 2 || pop.type == null) && (pop.maxFeePerGas != null && pop.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n pop.type = 2;\n }\n else if (pop.type === 0 || pop.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n // We need to get fee data to determine things\n const feeData = await provider.getFeeData();\n assert(feeData.gasPrice != null, \"network does not support gasPrice\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getGasPrice\"\n });\n // Populate missing gasPrice\n if (pop.gasPrice == null) {\n pop.gasPrice = feeData.gasPrice;\n }\n }\n else {\n // We need to get fee data to determine things\n const feeData = await provider.getFeeData();\n if (pop.type == null) {\n // We need to auto-detect the intended type of this transaction...\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n // Upgrade transaction from null to eip-1559\n pop.type = 2;\n if (pop.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = pop.gasPrice;\n delete pop.gasPrice;\n pop.maxFeePerGas = gasPrice;\n pop.maxPriorityFeePerGas = gasPrice;\n }\n else {\n // Populate missing fee data\n if (pop.maxFeePerGas == null) {\n pop.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (pop.maxPriorityFeePerGas == null) {\n pop.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n // ...but they are trying to use EIP-1559 properties\n assert(!hasEip1559, \"network does not support EIP-1559\", \"UNSUPPORTED_OPERATION\", {\n operation: \"populateTransaction\"\n });\n // Populate missing fee data\n if (pop.gasPrice == null) {\n pop.gasPrice = feeData.gasPrice;\n }\n // Explicitly set untyped transaction to legacy\n // @TODO: Maybe this shold allow type 1?\n pop.type = 0;\n }\n else {\n // getFeeData has failed us.\n assert(false, \"failed to get consistent fee data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.getFeeData\"\n });\n }\n }\n else if (pop.type === 2 || pop.type === 3) {\n // Explicitly using EIP-1559 or EIP-4844\n // Populate missing fee data\n if (pop.maxFeePerGas == null) {\n pop.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (pop.maxPriorityFeePerGas == null) {\n pop.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n //@TOOD: Don't await all over the place; save them up for\n // the end for better batching\n return await resolveProperties(pop);\n }\n async estimateGas(tx) {\n return checkProvider(this, \"estimateGas\").estimateGas(await this.populateCall(tx));\n }\n async call(tx) {\n return checkProvider(this, \"call\").call(await this.populateCall(tx));\n }\n async resolveName(name) {\n const provider = checkProvider(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = checkProvider(this, \"sendTransaction\");\n const pop = await this.populateTransaction(tx);\n delete pop.from;\n const txObj = Transaction.from(pop);\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n/**\n * A **VoidSigner** is a class deisgned to allow an address to be used\n * in any API which accepts a Signer, but for which there are no\n * credentials available to perform any actual signing.\n *\n * This for example allow impersonating an account for the purpose of\n * static calls or estimating gas, but does not allow sending transactions.\n */\nexport class VoidSigner extends AbstractSigner {\n /**\n * The signer address.\n */\n address;\n /**\n * Creates a new **VoidSigner** with %%address%% attached to\n * %%provider%%.\n */\n constructor(address, provider) {\n super(provider);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n #throwUnsupported(suffix, operation) {\n assert(false, `VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", { operation });\n }\n async signTransaction(tx) {\n this.#throwUnsupported(\"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n this.#throwUnsupported(\"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n this.#throwUnsupported(\"typed-data\", \"signTypedData\");\n }\n}\n//# sourceMappingURL=abstract-signer.js.map","/**\n * There are many awesome community services that provide Ethereum\n * nodes both for developers just starting out and for large-scale\n * communities.\n *\n * @_section: api/providers/thirdparty: Community Providers [thirdparty]\n */\n// Show the throttle message only once per service\nconst shown = new Set();\n/**\n * Displays a warning in tht console when the community resource is\n * being used too heavily by the app, recommending the developer\n * acquire their own credentials instead of using the community\n * credentials.\n *\n * The notification will only occur once per service.\n */\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (this message will not be repeated)`);\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.org/api-keys/\");\n console.log(\"==========================\");\n}\n//# sourceMappingURL=community.js.map","import { isError } from \"../utils/index.js\";\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n/**\n * Some backends support subscribing to events using a Filter ID.\n *\n * When subscribing with this technique, the node issues a unique\n * //Filter ID//. At this point the node dedicates resources to\n * the filter, so that periodic calls to follow up on the //Filter ID//\n * will receive any events since the last call.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class FilterIdSubscriber {\n #provider;\n #filterIdPromise;\n #poller;\n #running;\n #network;\n #hault;\n /**\n * Creates a new **FilterIdSubscriber** which will used [[_subscribe]]\n * and [[_emitResults]] to setup the subscription and provide the event\n * to the %%provider%%.\n */\n constructor(provider) {\n this.#provider = provider;\n this.#filterIdPromise = null;\n this.#poller = this.#poll.bind(this);\n this.#running = false;\n this.#network = null;\n this.#hault = false;\n }\n /**\n * Sub-classes **must** override this to begin the subscription.\n */\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n /**\n * Sub-classes **must** override this handle the events.\n */\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n /**\n * Sub-classes **must** override this handle recovery on errors.\n */\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n async #poll(blockNumber) {\n try {\n // Subscribe if necessary\n if (this.#filterIdPromise == null) {\n this.#filterIdPromise = this._subscribe(this.#provider);\n }\n // Get the Filter ID\n let filterId = null;\n try {\n filterId = await this.#filterIdPromise;\n }\n catch (error) {\n if (!isError(error, \"UNSUPPORTED_OPERATION\") || error.operation !== \"eth_newFilter\") {\n throw error;\n }\n }\n // The backend does not support Filter ID; downgrade to\n // polling\n if (filterId == null) {\n this.#filterIdPromise = null;\n this.#provider._recoverSubscriber(this, this._recover(this.#provider));\n return;\n }\n const network = await this.#provider.getNetwork();\n if (!this.#network) {\n this.#network = network;\n }\n if (this.#network.chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n if (this.#hault) {\n return;\n }\n const result = await this.#provider.send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(this.#provider, result);\n }\n catch (error) {\n // console.log(\"@TODO\", error);\n }\n this.#provider.once(\"block\", this.#poller);\n }\n #teardown() {\n const filterIdPromise = this.#filterIdPromise;\n if (filterIdPromise) {\n this.#filterIdPromise = null;\n filterIdPromise.then((filterId) => {\n if (this.#provider.destroyed) {\n return;\n }\n this.#provider.send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n }\n start() {\n if (this.#running) {\n return;\n }\n this.#running = true;\n this.#poll(-2);\n }\n stop() {\n if (!this.#running) {\n return;\n }\n this.#running = false;\n this.#hault = true;\n this.#teardown();\n this.#provider.off(\"block\", this.#poller);\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n this.#teardown();\n }\n this.#provider.off(\"block\", this.#poller);\n }\n resume() { this.start(); }\n}\n/**\n * A **FilterIdSubscriber** for receiving contract events.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n #event;\n /**\n * Creates a new **FilterIdEventSubscriber** attached to %%provider%%\n * listening for %%filter%%.\n */\n constructor(provider, filter) {\n super(provider);\n this.#event = copy(filter);\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, this.#event);\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [this.#event]);\n return filterId;\n }\n async _emitResults(provider, results) {\n for (const result of results) {\n provider.emit(this.#event, provider._wrapLog(result, provider._network));\n }\n }\n}\n/**\n * A **FilterIdSubscriber** for receiving pending transactions events.\n *\n * @_docloc: api/providers/abstract-provider\n */\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n for (const result of results) {\n provider.emit(\"pending\", result);\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","/**\n * One of the most common ways to interact with the blockchain is\n * by a node running a JSON-RPC interface which can be connected to,\n * based on the transport, using:\n *\n * - HTTP or HTTPS - [[JsonRpcProvider]]\n * - WebSocket - [[WebSocketProvider]]\n * - IPC - [[IpcSocketProvider]]\n *\n * @_section: api/providers/jsonrpc:JSON-RPC Provider [about-jsonrpcProvider]\n */\n// @TODO:\n// - Add the batching API\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { AbiCoder } from \"../abi/index.js\";\nimport { getAddress, resolveAddress } from \"../address/index.js\";\nimport { TypedDataEncoder } from \"../hash/index.js\";\nimport { accessListify } from \"../transaction/index.js\";\nimport { defineProperties, getBigInt, hexlify, isHexString, toQuantity, toUtf8Bytes, isError, makeError, assert, assertArgument, FetchRequest, resolveProperties } from \"../utils/index.js\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { AbstractSigner } from \"./abstract-signer.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n polling: false,\n staticNetwork: null,\n batchStallTime: 10,\n batchMaxSize: (1 << 20),\n batchMaxCount: 100,\n cacheTimeout: 250,\n pollingInterval: 4000\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner extends AbstractSigner {\n address;\n constructor(provider, address) {\n super(provider);\n address = getAddress(address);\n defineProperties(this, { address });\n }\n connect(provider) {\n assert(false, \"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n // JSON-RPC will automatially fill in nonce, etc. so we just check from\n async populateTransaction(tx) {\n return await this.populateCall(tx);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n assertArgument(from != null && from.toLowerCase() === this.address.toLowerCase(), \"from address mismatch\", \"transaction\", _tx);\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\n }\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas({ ...tx, from: this.address });\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n let invalids = 0;\n const checkTx = async () => {\n try {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(tx.replaceableTransaction(blockNumber));\n return;\n }\n }\n catch (error) {\n // If we were cancelled: stop polling.\n // If the data is bad: the node returns bad transactions\n // If the network changed: calling again will also fail\n // If unsupported: likely destroyed\n if (isError(error, \"CANCELLED\") || isError(error, \"BAD_DATA\") ||\n isError(error, \"NETWORK_ERROR\" || isError(error, \"UNSUPPORTED_OPERATION\"))) {\n if (error.info == null) {\n error.info = {};\n }\n error.info.sendTransactionHash = hash;\n reject(error);\n return;\n }\n // Stop-gap for misbehaving backends; see #4513\n if (isError(error, \"INVALID_ARGUMENT\")) {\n invalids++;\n if (error.info == null) {\n error.info = {};\n }\n error.info.sendTransactionHash = hash;\n if (invalids > 10) {\n reject(error);\n return;\n }\n }\n // Notify anyone that cares; but we will try again, since\n // it is likely an intermittent service error\n this.provider.emit(\"error\", makeError(\"failed to fetch transation after sending (will try again)\", \"UNKNOWN_ERROR\", { error }));\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n assertArgument(from != null && from.toLowerCase() === this.address.toLowerCase(), \"from address mismatch\", \"transaction\", _tx);\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_signTransaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n assertArgument(address != null, \"TypedData does not support null address\", \"value\", value);\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\n/**\n * The JsonRpcApiProvider is an abstract class and **MUST** be\n * sub-classed.\n *\n * It provides the base for all JSON-RPC-based Provider interaction.\n *\n * Sub-classing Notes:\n * - a sub-class MUST override _send\n * - a sub-class MUST call the `_start()` method once connected\n */\nexport class JsonRpcApiProvider extends AbstractProvider {\n #options;\n // The next ID to use for the JSON-RPC ID field\n #nextId;\n // Payloads are queued and triggered in batches using the drainTimer\n #payloads;\n #drainTimer;\n #notReady;\n #network;\n #pendingDetectNetwork;\n #scheduleDrain() {\n if (this.#drainTimer) {\n return;\n }\n // If we aren't using batching, no harm in sending it immediately\n const stallTime = (this._getOption(\"batchMaxCount\") === 1) ? 0 : this._getOption(\"batchStallTime\");\n this.#drainTimer = setTimeout(() => {\n this.#drainTimer = null;\n const payloads = this.#payloads;\n this.#payloads = [];\n while (payloads.length) {\n // Create payload batches that satisfy our batch constraints\n const batch = [(payloads.shift())];\n while (payloads.length) {\n if (batch.length === this.#options.batchMaxCount) {\n break;\n }\n batch.push((payloads.shift()));\n const bytes = JSON.stringify(batch.map((p) => p.payload));\n if (bytes.length > this.#options.batchMaxSize) {\n payloads.unshift((batch.pop()));\n break;\n }\n }\n // Process the result to each payload\n (async () => {\n const payload = ((batch.length === 1) ? batch[0].payload : batch.map((p) => p.payload));\n this.emit(\"debug\", { action: \"sendRpcPayload\", payload });\n try {\n const result = await this._send(payload);\n this.emit(\"debug\", { action: \"receiveRpcResult\", result });\n // Process results in batch order\n for (const { resolve, reject, payload } of batch) {\n if (this.destroyed) {\n reject(makeError(\"provider destroyed; cancelled request\", \"UNSUPPORTED_OPERATION\", { operation: payload.method }));\n continue;\n }\n // Find the matching result\n const resp = result.filter((r) => (r.id === payload.id))[0];\n // No result; the node failed us in unexpected ways\n if (resp == null) {\n const error = makeError(\"missing response for request\", \"BAD_DATA\", {\n value: result, info: { payload }\n });\n this.emit(\"error\", error);\n reject(error);\n continue;\n }\n // The response is an error\n if (\"error\" in resp) {\n reject(this.getRpcError(payload, resp));\n continue;\n }\n // All good; send the result\n resolve(resp.result);\n }\n }\n catch (error) {\n this.emit(\"debug\", { action: \"receiveRpcError\", error });\n for (const { reject } of batch) {\n // @TODO: augment the error with the payload\n reject(error);\n }\n }\n })();\n }\n }, stallTime);\n }\n constructor(network, options) {\n super(network, options);\n this.#nextId = 1;\n this.#options = Object.assign({}, defaultOptions, options || {});\n this.#payloads = [];\n this.#drainTimer = null;\n this.#network = null;\n this.#pendingDetectNetwork = null;\n {\n let resolve = null;\n const promise = new Promise((_resolve) => {\n resolve = _resolve;\n });\n this.#notReady = { promise, resolve };\n }\n const staticNetwork = this._getOption(\"staticNetwork\");\n if (typeof (staticNetwork) === \"boolean\") {\n assertArgument(!staticNetwork || network !== \"any\", \"staticNetwork cannot be used on special network 'any'\", \"options\", options);\n if (staticNetwork && network != null) {\n this.#network = Network.from(network);\n }\n }\n else if (staticNetwork) {\n // Make sure any static network is compatbile with the provided netwrok\n assertArgument(network == null || staticNetwork.matches(network), \"staticNetwork MUST match network object\", \"options\", options);\n this.#network = staticNetwork;\n }\n }\n /**\n * Returns the value associated with the option %%key%%.\n *\n * Sub-classes can use this to inquire about configuration options.\n */\n _getOption(key) {\n return this.#options[key];\n }\n /**\n * Gets the [[Network]] this provider has committed to. On each call, the network\n * is detected, and if it has changed, the call will reject.\n */\n get _network() {\n assert(this.#network, \"network is not available yet\", \"NETWORK_ERROR\");\n return this.#network;\n }\n /**\n * Resolves to the non-normalized value by performing %%req%%.\n *\n * Sub-classes may override this to modify behavior of actions,\n * and should generally call ``super._perform`` as a fallback.\n */\n async _perform(req) {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n return await this.send(request.method, request.args);\n }\n return super._perform(req);\n }\n /**\n * Sub-classes may override this; it detects the *actual* network that\n * we are **currently** connected to.\n *\n * Keep in mind that [[send]] may only be used once [[ready]], otherwise the\n * _send primitive must be used instead.\n */\n async _detectNetwork() {\n const network = this._getOption(\"staticNetwork\");\n if (network) {\n if (network === true) {\n if (this.#network) {\n return this.#network;\n }\n }\n else {\n return network;\n }\n }\n if (this.#pendingDetectNetwork) {\n return await this.#pendingDetectNetwork;\n }\n // If we are ready, use ``send``, which enabled requests to be batched\n if (this.ready) {\n this.#pendingDetectNetwork = (async () => {\n try {\n const result = Network.from(getBigInt(await this.send(\"eth_chainId\", [])));\n this.#pendingDetectNetwork = null;\n return result;\n }\n catch (error) {\n this.#pendingDetectNetwork = null;\n throw error;\n }\n })();\n return await this.#pendingDetectNetwork;\n }\n // We are not ready yet; use the primitive _send\n this.#pendingDetectNetwork = (async () => {\n const payload = {\n id: this.#nextId++, method: \"eth_chainId\", params: [], jsonrpc: \"2.0\"\n };\n this.emit(\"debug\", { action: \"sendRpcPayload\", payload });\n let result;\n try {\n result = (await this._send(payload))[0];\n this.#pendingDetectNetwork = null;\n }\n catch (error) {\n this.#pendingDetectNetwork = null;\n this.emit(\"debug\", { action: \"receiveRpcError\", error });\n throw error;\n }\n this.emit(\"debug\", { action: \"receiveRpcResult\", result });\n if (\"result\" in result) {\n return Network.from(getBigInt(result.result));\n }\n throw this.getRpcError(payload, result);\n })();\n return await this.#pendingDetectNetwork;\n }\n /**\n * Sub-classes **MUST** call this. Until [[_start]] has been called, no calls\n * will be passed to [[_send]] from [[send]]. If it is overridden, then\n * ``super._start()`` **MUST** be called.\n *\n * Calling it multiple times is safe and has no effect.\n */\n _start() {\n if (this.#notReady == null || this.#notReady.resolve == null) {\n return;\n }\n this.#notReady.resolve();\n this.#notReady = null;\n (async () => {\n // Bootstrap the network\n while (this.#network == null && !this.destroyed) {\n try {\n this.#network = await this._detectNetwork();\n }\n catch (error) {\n if (this.destroyed) {\n break;\n }\n console.log(\"JsonRpcProvider failed to detect network and cannot start up; retry in 1s (perhaps the URL is wrong or the node is not started)\");\n this.emit(\"error\", makeError(\"failed to bootstrap network detection\", \"NETWORK_ERROR\", { event: \"initial-network-discovery\", info: { error } }));\n await stall(1000);\n }\n }\n // Start dispatching requests\n this.#scheduleDrain();\n })();\n }\n /**\n * Resolves once the [[_start]] has been called. This can be used in\n * sub-classes to defer sending data until the connection has been\n * established.\n */\n async _waitUntilReady() {\n if (this.#notReady == null) {\n return;\n }\n return await this.#notReady.promise;\n }\n /**\n * Return a Subscriber that will manage the %%sub%%.\n *\n * Sub-classes may override this to modify the behavior of\n * subscription management.\n */\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n if (this._getOption(\"polling\")) {\n return new PollingEventSubscriber(this, sub.filter);\n }\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n /**\n * Returns true only if the [[_start]] has been called.\n */\n get ready() { return this.#notReady == null; }\n /**\n * Returns %%tx%% as a normalized JSON-RPC transaction request,\n * which has all values hexlified and any numeric values converted\n * to Quantity values.\n */\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = toQuantity(getBigInt(tx[key], `tx.${key}`));\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n /**\n * Returns the request method and arguments required to perform\n * %%req%%.\n */\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getPriorityFee\":\n return { method: \"eth_maxPriorityFeePerGas\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorage\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"broadcastTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n /**\n * Returns an ethers-style Error for the given JSON-RPC error\n * %%payload%%, coalescing the various strings and error shapes\n * that different nodes return, coercing them into a machine-readable\n * standardized error.\n */\n getRpcError(payload, _error) {\n const { method } = payload;\n const { error } = _error;\n if (method === \"eth_estimateGas\" && error.message) {\n const msg = error.message;\n if (!msg.match(/revert/i) && msg.match(/insufficient funds/i)) {\n return makeError(\"insufficient funds\", \"INSUFFICIENT_FUNDS\", {\n transaction: (payload.params[0]),\n info: { payload, error }\n });\n }\n }\n if (method === \"eth_call\" || method === \"eth_estimateGas\") {\n const result = spelunkData(error);\n const e = AbiCoder.getBuiltinCallException((method === \"eth_call\") ? \"call\" : \"estimateGas\", (payload.params[0]), (result ? result.data : null));\n e.info = { error, payload };\n return e;\n }\n // Only estimateGas and call can return arbitrary contract-defined text, so now we\n // we can process text safely.\n const message = JSON.stringify(spelunkMessage(error));\n if (typeof (error.message) === \"string\" && error.message.match(/user denied|ethers-user-denied/i)) {\n const actionMap = {\n eth_sign: \"signMessage\",\n personal_sign: \"signMessage\",\n eth_signTypedData_v4: \"signTypedData\",\n eth_signTransaction: \"signTransaction\",\n eth_sendTransaction: \"sendTransaction\",\n eth_requestAccounts: \"requestAccess\",\n wallet_requestAccounts: \"requestAccess\",\n };\n return makeError(`user rejected action`, \"ACTION_REJECTED\", {\n action: (actionMap[method] || \"unknown\"),\n reason: \"rejected\",\n info: { payload, error }\n });\n }\n if (method === \"eth_sendRawTransaction\" || method === \"eth_sendTransaction\") {\n const transaction = (payload.params[0]);\n if (message.match(/insufficient funds|base fee exceeds gas limit/i)) {\n return makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction, info: { error }\n });\n }\n if (message.match(/nonce/i) && message.match(/too low/i)) {\n return makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", { transaction, info: { error } });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/i) && message.match(/underpriced/i)) {\n return makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", { transaction, info: { error } });\n }\n if (message.match(/only replay-protected/i)) {\n return makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction, info: { error } }\n });\n }\n }\n let unsupported = !!message.match(/the method .* does not exist/i);\n if (!unsupported) {\n if (error && error.details && error.details.startsWith(\"Unauthorized method:\")) {\n unsupported = true;\n }\n }\n if (unsupported) {\n return makeError(\"unsupported operation\", \"UNSUPPORTED_OPERATION\", {\n operation: payload.method, info: { error, payload }\n });\n }\n return makeError(\"could not coalesce error\", \"UNKNOWN_ERROR\", { error, payload });\n }\n /**\n * Requests the %%method%% with %%params%% via the JSON-RPC protocol\n * over the underlying channel. This can be used to call methods\n * on the backend that do not have a high-level API within the Provider\n * API.\n *\n * This method queues requests according to the batch constraints\n * in the options, assigns the request a unique ID.\n *\n * **Do NOT override** this method in sub-classes; instead\n * override [[_send]] or force the options values in the\n * call to the constructor to modify this method's behavior.\n */\n send(method, params) {\n // @TODO: cache chainId?? purge on switch_networks\n // We have been destroyed; no operations are supported anymore\n if (this.destroyed) {\n return Promise.reject(makeError(\"provider destroyed; cancelled request\", \"UNSUPPORTED_OPERATION\", { operation: method }));\n }\n const id = this.#nextId++;\n const promise = new Promise((resolve, reject) => {\n this.#payloads.push({\n resolve, reject,\n payload: { method, params, id, jsonrpc: \"2.0\" }\n });\n });\n // If there is not a pending drainTimer, set one\n this.#scheduleDrain();\n return promise;\n }\n /**\n * Resolves to the [[Signer]] account for %%address%% managed by\n * the client.\n *\n * If the %%address%% is a number, it is used as an index in the\n * the accounts from [[listAccounts]].\n *\n * This can only be used on clients which manage accounts (such as\n * Geth with imported account or MetaMask).\n *\n * Throws if the account doesn't exist.\n */\n async getSigner(address) {\n if (address == null) {\n address = 0;\n }\n const accountsPromise = this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n const accounts = (await accountsPromise);\n if (address >= accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n const { accounts } = await resolveProperties({\n network: this.getNetwork(),\n accounts: accountsPromise\n });\n // Account address\n address = getAddress(address);\n for (const account of accounts) {\n if (getAddress(account) === address) {\n return new JsonRpcSigner(this, address);\n }\n }\n throw new Error(\"invalid account\");\n }\n async listAccounts() {\n const accounts = await this.send(\"eth_accounts\", []);\n return accounts.map((a) => new JsonRpcSigner(this, a));\n }\n destroy() {\n // Stop processing requests\n if (this.#drainTimer) {\n clearTimeout(this.#drainTimer);\n this.#drainTimer = null;\n }\n // Cancel all pending requests\n for (const { payload, reject } of this.#payloads) {\n reject(makeError(\"provider destroyed; cancelled request\", \"UNSUPPORTED_OPERATION\", { operation: payload.method }));\n }\n this.#payloads = [];\n // Parent clean-up\n super.destroy();\n }\n}\n// @TODO: remove this in v7, it is not exported because this functionality\n// is exposed in the JsonRpcApiProvider by setting polling to true. It should\n// be safe to remove regardless, because it isn't reachable, but just in case.\n/**\n * @_ignore:\n */\nexport class JsonRpcApiPollingProvider extends JsonRpcApiProvider {\n #pollingInterval;\n constructor(network, options) {\n super(network, options);\n let pollingInterval = this._getOption(\"pollingInterval\");\n if (pollingInterval == null) {\n pollingInterval = defaultOptions.pollingInterval;\n }\n this.#pollingInterval = pollingInterval;\n }\n _getSubscriber(sub) {\n const subscriber = super._getSubscriber(sub);\n if (isPollable(subscriber)) {\n subscriber.pollingInterval = this.#pollingInterval;\n }\n return subscriber;\n }\n /**\n * The polling interval (default: 4000 ms)\n */\n get pollingInterval() { return this.#pollingInterval; }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n this.#pollingInterval = value;\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = this.#pollingInterval;\n }\n });\n }\n}\n/**\n * The JsonRpcProvider is one of the most common Providers,\n * which performs all operations over HTTP (or HTTPS) requests.\n *\n * Events are processed by polling the backend for the current block\n * number; when it advances, all block-base events are then checked\n * for updates.\n */\nexport class JsonRpcProvider extends JsonRpcApiPollingProvider {\n #connect;\n constructor(url, network, options) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network, options);\n if (typeof (url) === \"string\") {\n this.#connect = new FetchRequest(url);\n }\n else {\n this.#connect = url.clone();\n }\n }\n _getConnection() {\n return this.#connect.clone();\n }\n async send(method, params) {\n // All requests are over HTTP, so we can just start handling requests\n // We do this here rather than the constructor so that we don't send any\n // requests to the network (i.e. eth_chainId) until we absolutely have to.\n await this._start();\n return await super.send(method, params);\n }\n async _send(payload) {\n // Configure a POST connection for the requested method\n const request = this._getConnection();\n request.body = JSON.stringify(payload);\n request.setHeader(\"content-type\", \"application/json\");\n const response = await request.send();\n response.assertOk();\n let resp = response.bodyJson;\n if (!Array.isArray(resp)) {\n resp = [resp];\n }\n return resp;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(/revert/i) && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","/**\n * [[link-ankr]] provides a third-party service for connecting to\n * various blockchains over JSON-RPC.\n *\n * **Supported Networks**\n *\n * - Ethereum Mainnet (``mainnet``)\n * - Goerli Testnet (``goerli``)\n * - Sepolia Testnet (``sepolia``)\n * - Arbitrum (``arbitrum``)\n * - Base (``base``)\n * - Base Goerlia Testnet (``base-goerli``)\n * - Base Sepolia Testnet (``base-sepolia``)\n * - BNB (``bnb``)\n * - BNB Testnet (``bnbt``)\n * - Optimism (``optimism``)\n * - Optimism Goerli Testnet (``optimism-goerli``)\n * - Optimism Sepolia Testnet (``optimism-sepolia``)\n * - Polygon (``matic``)\n * - Polygon Mumbai Testnet (``matic-mumbai``)\n *\n * @_subsection: api/providers/thirdparty:Ankr [providers-ankr]\n */\nimport { defineProperties, FetchRequest, assertArgument } from \"../utils/index.js\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { Network } from \"./network.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"mainnet\":\n return \"rpc.ankr.com/eth\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli\";\n case \"sepolia\":\n return \"rpc.ankr.com/eth_sepolia\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n case \"base\":\n return \"rpc.ankr.com/base\";\n case \"base-goerli\":\n return \"rpc.ankr.com/base_goerli\";\n case \"base-sepolia\":\n return \"rpc.ankr.com/base_sepolia\";\n case \"bnb\":\n return \"rpc.ankr.com/bsc\";\n case \"bnbt\":\n return \"rpc.ankr.com/bsc_testnet_chapel\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"matic-mumbai\":\n return \"rpc.ankr.com/polygon_mumbai\";\n case \"optimism\":\n return \"rpc.ankr.com/optimism\";\n case \"optimism-goerli\":\n return \"rpc.ankr.com/optimism_testnet\";\n case \"optimism-sepolia\":\n return \"rpc.ankr.com/optimism_sepolia\";\n }\n assertArgument(false, \"unsupported network\", \"network\", name);\n}\n/**\n * The **AnkrProvider** connects to the [[link-ankr]]\n * JSON-RPC end-points.\n *\n * By default, a highly-throttled API key is used, which is\n * appropriate for quick prototypes and simple scripts. To\n * gain access to an increased rate-limit, it is highly\n * recommended to [sign up here](link-ankr-signup).\n */\nexport class AnkrProvider extends JsonRpcProvider {\n /**\n * The API key for the Ankr connection.\n */\n apiKey;\n /**\n * Create a new **AnkrProvider**.\n *\n * By default connecting to ``mainnet`` with a highly throttled\n * API key.\n */\n constructor(_network, apiKey) {\n if (_network == null) {\n _network = \"mainnet\";\n }\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n // Ankr does not support filterId, so we force polling\n const options = { polling: true, staticNetwork: network };\n const request = AnkrProvider.getRequest(network, apiKey);\n super(request, network, options);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n /**\n * Returns a prepared request for connecting to %%network%% with\n * %%apiKey%%.\n */\n static getRequest(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n if (apiKey === defaultApiKey) {\n request.retryFunc = async (request, response, attempt) => {\n showThrottleMessage(\"AnkrProvider\");\n return true;\n };\n }\n return request;\n }\n getRpcError(payload, error) {\n if (payload.method === \"eth_sendRawTransaction\") {\n if (error && error.error && error.error.message === \"INTERNAL_ERROR: could not replace existing tx\") {\n error.error.message = \"replacement transaction underpriced\";\n }\n }\n return super.getRpcError(payload, error);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","/**\n * [[link-alchemy]] provides a third-party service for connecting to\n * various blockchains over JSON-RPC.\n *\n * **Supported Networks**\n *\n * - Ethereum Mainnet (``mainnet``)\n * - Goerli Testnet (``goerli``)\n * - Sepolia Testnet (``sepolia``)\n * - Arbitrum (``arbitrum``)\n * - Arbitrum Goerli Testnet (``arbitrum-goerli``)\n * - Arbitrum Sepolia Testnet (``arbitrum-sepolia``)\n * - Base (``base``)\n * - Base Goerlia Testnet (``base-goerli``)\n * - Base Sepolia Testnet (``base-sepolia``)\n * - Optimism (``optimism``)\n * - Optimism Goerli Testnet (``optimism-goerli``)\n * - Optimism Sepolia Testnet (``optimism-sepolia``)\n * - Polygon (``matic``)\n * - Polygon Amoy Testnet (``matic-amoy``)\n * - Polygon Mumbai Testnet (``matic-mumbai``)\n *\n * @_subsection: api/providers/thirdparty:Alchemy [providers-alchemy]\n */\nimport { defineProperties, resolveProperties, assert, assertArgument, FetchRequest } from \"../utils/index.js\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { Network } from \"./network.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"mainnet\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.g.alchemy.com\";\n case \"sepolia\":\n return \"eth-sepolia.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-goerli\":\n return \"arb-goerli.g.alchemy.com\";\n case \"arbitrum-sepolia\":\n return \"arb-sepolia.g.alchemy.com\";\n case \"base\":\n return \"base-mainnet.g.alchemy.com\";\n case \"base-goerli\":\n return \"base-goerli.g.alchemy.com\";\n case \"base-sepolia\":\n return \"base-sepolia.g.alchemy.com\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"matic-amoy\":\n return \"polygon-amoy.g.alchemy.com\";\n case \"matic-mumbai\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-goerli\":\n return \"opt-goerli.g.alchemy.com\";\n case \"optimism-sepolia\":\n return \"opt-sepolia.g.alchemy.com\";\n }\n assertArgument(false, \"unsupported network\", \"network\", name);\n}\n/**\n * The **AlchemyProvider** connects to the [[link-alchemy]]\n * JSON-RPC end-points.\n *\n * By default, a highly-throttled API key is used, which is\n * appropriate for quick prototypes and simple scripts. To\n * gain access to an increased rate-limit, it is highly\n * recommended to [sign up here](link-alchemy-signup).\n *\n * @_docloc: api/providers/thirdparty\n */\nexport class AlchemyProvider extends JsonRpcProvider {\n apiKey;\n constructor(_network, apiKey) {\n if (_network == null) {\n _network = \"mainnet\";\n }\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = AlchemyProvider.getRequest(network, apiKey);\n super(request, network, { staticNetwork: network });\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n async _perform(req) {\n // https://docs.alchemy.com/reference/trace-transaction\n if (req.method === \"getTransactionResult\") {\n const { trace, tx } = await resolveProperties({\n trace: this.send(\"trace_transaction\", [req.hash]),\n tx: this.getTransaction(req.hash)\n });\n if (trace == null || tx == null) {\n return null;\n }\n let data;\n let error = false;\n try {\n data = trace[0].result.output;\n error = (trace[0].error === \"Reverted\");\n }\n catch (error) { }\n if (data) {\n assert(!error, \"an error occurred during transaction executions\", \"CALL_EXCEPTION\", {\n action: \"getTransactionResult\",\n data,\n reason: null,\n transaction: tx,\n invocation: null,\n revert: null // @TODO\n });\n return data;\n }\n assert(false, \"could not parse trace result\", \"BAD_DATA\", { value: trace });\n }\n return await super._perform(req);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getRequest(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n if (apiKey === defaultApiKey) {\n request.retryFunc = async (request, response, attempt) => {\n showThrottleMessage(\"alchemy\");\n return true;\n };\n }\n return request;\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","/**\n * [[link-chainstack]] provides a third-party service for connecting to\n * various blockchains over JSON-RPC.\n *\n * **Supported Networks**\n *\n * - Ethereum Mainnet (``mainnet``)\n * - Arbitrum (``arbitrum``)\n * - BNB Smart Chain Mainnet (``bnb``)\n * - Polygon (``matic``)\n *\n * @_subsection: api/providers/thirdparty:Chainstack [providers-chainstack]\n */\nimport { defineProperties, FetchRequest, assertArgument } from \"../utils/index.js\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { Network } from \"./network.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nfunction getApiKey(name) {\n switch (name) {\n case \"mainnet\": return \"39f1d67cedf8b7831010a665328c9197\";\n case \"arbitrum\": return \"0550c209db33c3abf4cc927e1e18cea1\";\n case \"bnb\": return \"98b5a77e531614387366f6fc5da097f8\";\n case \"matic\": return \"cd9d4d70377471aa7c142ec4a4205249\";\n }\n assertArgument(false, \"unsupported network\", \"network\", name);\n}\nfunction getHost(name) {\n switch (name) {\n case \"mainnet\":\n return \"ethereum-mainnet.core.chainstack.com\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.core.chainstack.com\";\n case \"bnb\":\n return \"bsc-mainnet.core.chainstack.com\";\n case \"matic\":\n return \"polygon-mainnet.core.chainstack.com\";\n }\n assertArgument(false, \"unsupported network\", \"network\", name);\n}\n/**\n * The **ChainstackProvider** connects to the [[link-chainstack]]\n * JSON-RPC end-points.\n *\n * By default, a highly-throttled API key is used, which is\n * appropriate for quick prototypes and simple scripts. To\n * gain access to an increased rate-limit, it is highly\n * recommended to [sign up here](link-chainstack).\n */\nexport class ChainstackProvider extends JsonRpcProvider {\n /**\n * The API key for the Chainstack connection.\n */\n apiKey;\n /**\n * Creates a new **ChainstackProvider**.\n */\n constructor(_network, apiKey) {\n if (_network == null) {\n _network = \"mainnet\";\n }\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = getApiKey(network.name);\n }\n const request = ChainstackProvider.getRequest(network, apiKey);\n super(request, network, { staticNetwork: network });\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new ChainstackProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === getApiKey(this._network.name));\n }\n /**\n * Returns a prepared request for connecting to %%network%%\n * with %%apiKey%% and %%projectSecret%%.\n */\n static getRequest(network, apiKey) {\n if (apiKey == null) {\n apiKey = getApiKey(network.name);\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n if (apiKey === getApiKey(network.name)) {\n request.retryFunc = async (request, response, attempt) => {\n showThrottleMessage(\"ChainstackProvider\");\n return true;\n };\n }\n return request;\n }\n}\n//# sourceMappingURL=provider-chainstack.js.map","/**\n * About Cloudflare\n *\n * @_subsection: api/providers/thirdparty:Cloudflare [providers-cloudflare]\n */\nimport { assertArgument } from \"../utils/index.js\";\nimport { Network } from \"./network.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\n/**\n * About Cloudflare...\n */\nexport class CloudflareProvider extends JsonRpcProvider {\n constructor(_network) {\n if (_network == null) {\n _network = \"mainnet\";\n }\n const network = Network.from(_network);\n assertArgument(network.name === \"mainnet\", \"unsupported network\", \"network\", _network);\n super(\"https:/\\/cloudflare-eth.com/\", network, { staticNetwork: network });\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","/**\n * [[link-etherscan]] provides a third-party service for connecting to\n * various blockchains over a combination of JSON-RPC and custom API\n * endpoints.\n *\n * **Supported Networks**\n *\n * - Ethereum Mainnet (``mainnet``)\n * - Goerli Testnet (``goerli``)\n * - Sepolia Testnet (``sepolia``)\n * - Holesky Testnet (``holesky``)\n * - Arbitrum (``arbitrum``)\n * - Arbitrum Goerli Testnet (``arbitrum-goerli``)\n * - BNB Smart Chain Mainnet (``bnb``)\n * - BNB Smart Chain Testnet (``bnbt``)\n * - Optimism (``optimism``)\n * - Optimism Goerli Testnet (``optimism-goerli``)\n * - Polygon (``matic``)\n * - Polygon Mumbai Testnet (``matic-mumbai``)\n * - Polygon Amoy Testnet (``matic-amoy``)\n *\n * @_subsection api/providers/thirdparty:Etherscan [providers-etherscan]\n */\nimport { AbiCoder } from \"../abi/index.js\";\nimport { Contract } from \"../contract/index.js\";\nimport { accessListify, Transaction } from \"../transaction/index.js\";\nimport { defineProperties, hexlify, toQuantity, FetchRequest, assert, assertArgument, isError, \n// parseUnits,\ntoUtf8String } from \"../utils/index.js\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { showThrottleMessage } from \"./community.js\";\nconst THROTTLE = 2000;\nfunction isPromise(value) {\n return (value && typeof (value.then) === \"function\");\n}\nconst EtherscanPluginId = \"org.ethers.plugins.provider.Etherscan\";\n/**\n * A Network can include an **EtherscanPlugin** to provide\n * a custom base URL.\n *\n * @_docloc: api/providers/thirdparty:Etherscan\n */\nexport class EtherscanPlugin extends NetworkPlugin {\n /**\n * The Etherscan API base URL.\n */\n baseUrl;\n /**\n * Creates a new **EtherscanProvider** which will use\n * %%baseUrl%%.\n */\n constructor(baseUrl) {\n super(EtherscanPluginId);\n defineProperties(this, { baseUrl });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl);\n }\n}\nconst skipKeys = [\"enableCcipRead\"];\nlet nextId = 1;\n/**\n * The **EtherscanBaseProvider** is the super-class of\n * [[EtherscanProvider]], which should generally be used instead.\n *\n * Since the **EtherscanProvider** includes additional code for\n * [[Contract]] access, in //rare cases// that contracts are not\n * used, this class can reduce code size.\n *\n * @_docloc: api/providers/thirdparty:Etherscan\n */\nexport class EtherscanProvider extends AbstractProvider {\n /**\n * The connected network.\n */\n network;\n /**\n * The API key or null if using the community provided bandwidth.\n */\n apiKey;\n #plugin;\n /**\n * Creates a new **EtherscanBaseProvider**.\n */\n constructor(_network, _apiKey) {\n const apiKey = (_apiKey != null) ? _apiKey : null;\n super();\n const network = Network.from(_network);\n this.#plugin = network.getPlugin(EtherscanPluginId);\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n /**\n * Returns the base URL.\n *\n * If an [[EtherscanPlugin]] is configured on the\n * [[EtherscanBaseProvider_network]], returns the plugin's\n * baseUrl.\n */\n getBaseUrl() {\n if (this.#plugin) {\n return this.#plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"mainnet\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"holesky\":\n return \"https:/\\/api-holesky.etherscan.io\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"bnb\":\n return \"https:/\\/api.bscscan.com\";\n case \"bnbt\":\n return \"https:/\\/api-testnet.bscscan.com\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"matic-amoy\":\n return \"https:/\\/api-amoy.polygonscan.com\";\n case \"matic-mumbai\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n assertArgument(false, \"unsupported network\", \"network\", this.network);\n }\n /**\n * Returns the URL for the %%module%% and %%params%%.\n */\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n /**\n * Returns the URL for using POST requests.\n */\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n /**\n * Returns the parameters for using POST requests.\n */\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n /**\n * Resolves to the result of calling %%module%% with %%params%%.\n *\n * If %%post%%, the request is made as a POST request.\n */\n async fetch(module, params, post) {\n const id = nextId++;\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n this.emit(\"debug\", { action: \"sendRequest\", id, url, payload: payload });\n const request = new FetchRequest(url);\n request.setThrottleParams({ slotInterval: 1000 });\n request.retryFunc = (req, resp, attempt) => {\n if (this.isCommunityResource()) {\n showThrottleMessage(\"Etherscan\");\n }\n return Promise.resolve(true);\n };\n request.processFunc = async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n this.emit(\"debug\", { action: \"receiveError\", id, reason: \"proxy-NOTOK\", error: result });\n response.throwThrottleError(result.result, THROTTLE);\n }\n }\n else {\n if (throttle) {\n this.emit(\"debug\", { action: \"receiveError\", id, reason: \"null result\", error: result.result });\n response.throwThrottleError(result.result, THROTTLE);\n }\n }\n return response;\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await request.send();\n try {\n response.assertOk();\n }\n catch (error) {\n this.emit(\"debug\", { action: \"receiveError\", id, error, reason: \"assertOk\" });\n assert(false, \"response error\", \"SERVER_ERROR\", { request, response });\n }\n if (!response.hasBody()) {\n this.emit(\"debug\", { action: \"receiveError\", id, error: \"missing body\", reason: \"null body\" });\n assert(false, \"missing response\", \"SERVER_ERROR\", { request, response });\n }\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n this.emit(\"debug\", { action: \"receiveError\", id, result, reason: \"invalid JSON-RPC\" });\n assert(false, \"invalid JSON-RPC response (missing jsonrpc='2.0')\", \"SERVER_ERROR\", { request, response, info: { result } });\n }\n if (result.error) {\n this.emit(\"debug\", { action: \"receiveError\", id, result, reason: \"JSON-RPC error\" });\n assert(false, \"error response\", \"SERVER_ERROR\", { request, response, info: { result } });\n }\n this.emit(\"debug\", { action: \"receiveRequest\", id, result });\n return result.result;\n }\n else {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n this.emit(\"debug\", { action: \"receiveRequest\", id, result });\n return result.result;\n }\n if (result.status != 1 || (typeof (result.message) === \"string\" && !result.message.match(/^OK/))) {\n this.emit(\"debug\", { action: \"receiveError\", id, result });\n assert(false, \"error response\", \"SERVER_ERROR\", { request, response, info: { result } });\n }\n this.emit(\"debug\", { action: \"receiveRequest\", id, result });\n return result.result;\n }\n }\n /**\n * Returns %%transaction%% normalized for the Etherscan API.\n */\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (skipKeys.indexOf(key) >= 0) {\n continue;\n }\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n if (key === \"blockTag\" && value === \"latest\") {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = toQuantity(value);\n }\n else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n /**\n * Throws the normalized Etherscan error.\n */\n _checkError(req, error, transaction) {\n // Pull any message out if, possible\n let message = \"\";\n if (isError(error, \"SERVER_ERROR\")) {\n // Check for an error emitted by a proxy call\n try {\n message = error.info.result.error.message;\n }\n catch (e) { }\n if (!message) {\n try {\n message = error.info.message;\n }\n catch (e) { }\n }\n }\n if (req.method === \"estimateGas\") {\n if (!message.match(/revert/i) && message.match(/insufficient funds/i)) {\n assert(false, \"insufficient funds\", \"INSUFFICIENT_FUNDS\", {\n transaction: req.transaction\n });\n }\n }\n if (req.method === \"call\" || req.method === \"estimateGas\") {\n if (message.match(/execution reverted/i)) {\n let data = \"\";\n try {\n data = error.info.result.error.data;\n }\n catch (error) { }\n const e = AbiCoder.getBuiltinCallException(req.method, req.transaction, data);\n e.info = { request: req, error };\n throw e;\n }\n }\n if (message) {\n if (req.method === \"broadcastTransaction\") {\n const transaction = Transaction.from(req.signedTransaction);\n if (message.match(/replacement/i) && message.match(/underpriced/i)) {\n assert(false, \"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction\n });\n }\n if (message.match(/insufficient funds/)) {\n assert(false, \"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction\n });\n }\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n assert(false, \"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction\n });\n }\n }\n }\n // Something we could not process\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getPriorityFee\":\n // This is temporary until Etherscan completes support\n if (this.network.name === \"mainnet\") {\n return \"1000000000\";\n }\n else if (this.network.name === \"optimism\") {\n return \"1000000\";\n }\n else {\n throw new Error(\"fallback onto the AbstractProvider default\");\n }\n /* Working with Etherscan to get this added:\n try {\n const test = await this.fetch(\"proxy\", {\n action: \"eth_maxPriorityFeePerGas\"\n });\n console.log(test);\n return test;\n } catch (e) {\n console.log(\"DEBUG\", e);\n throw e;\n }\n */\n /* This might be safe; but due to rounding neither myself\n or Etherscan are necessarily comfortable with this. :)\n try {\n const result = await this.fetch(\"gastracker\", { action: \"gasoracle\" });\n console.log(result);\n const gasPrice = parseUnits(result.SafeGasPrice, \"gwei\");\n const baseFee = parseUnits(result.suggestBaseFee, \"gwei\");\n const priorityFee = gasPrice - baseFee;\n if (priorityFee < 0) { throw new Error(\"negative priority fee; defer to abstract provider default\"); }\n return priorityFee;\n } catch (error) {\n console.log(\"DEBUG\", error);\n throw error;\n }\n */\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorage\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"broadcastTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n assert(false, \"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\n const args: Record = { action: \"getLogs\" }\n \n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n \n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n \n if (params.filter.address) {\n args.address = params.filter.address;\n }\n \n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n \n const logs: Array = await this.fetch(\"logs\", args);\n \n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n \n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n /**\n * Resolves to the current price of ether.\n *\n * This returns ``0`` on any network other than ``mainnet``.\n */\n async getEtherPrice() {\n if (this.network.name !== \"mainnet\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n /**\n * Resolves to a [Contract]] for %%address%%, using the\n * Etherscan API to retreive the Contract ABI.\n */\n async getContract(_address) {\n let address = this._getAddress(_address);\n if (isPromise(address)) {\n address = await address;\n }\n try {\n const resp = await this.fetch(\"contract\", {\n action: \"getabi\", address\n });\n const abi = JSON.parse(resp);\n return new Contract(address, abi, this);\n }\n catch (error) {\n return null;\n }\n }\n isCommunityResource() {\n return (this.apiKey == null);\n }\n}\n//# sourceMappingURL=provider-etherscan.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n *\n * @_subsection: api/providers/abstract-provider:Socket Providers [about-socketProvider]\n */\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { assert, assertArgument, makeError } from \"../utils/index.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\n/**\n * A **SocketSubscriber** uses a socket transport to handle events and\n * should use [[_emit]] to manage the events.\n */\nexport class SocketSubscriber {\n #provider;\n #filter;\n /**\n * The filter.\n */\n get filter() { return JSON.parse(this.#filter); }\n #filterId;\n #paused;\n #emitPromise;\n /**\n * Creates a new **SocketSubscriber** attached to %%provider%% listening\n * to %%filter%%.\n */\n constructor(provider, filter) {\n this.#provider = provider;\n this.#filter = JSON.stringify(filter);\n this.#filterId = null;\n this.#paused = null;\n this.#emitPromise = null;\n }\n start() {\n this.#filterId = this.#provider.send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n this.#provider._register(filterId, this);\n return filterId;\n });\n }\n stop() {\n (this.#filterId).then((filterId) => {\n if (this.#provider.destroyed) {\n return;\n }\n this.#provider.send(\"eth_unsubscribe\", [filterId]);\n });\n this.#filterId = null;\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n assert(dropWhilePaused, \"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", { operation: \"pause(false)\" });\n this.#paused = !!dropWhilePaused;\n }\n resume() {\n this.#paused = null;\n }\n /**\n * @_ignore:\n */\n _handleMessage(message) {\n if (this.#filterId == null) {\n return;\n }\n if (this.#paused === null) {\n let emitPromise = this.#emitPromise;\n if (emitPromise == null) {\n emitPromise = this._emit(this.#provider, message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(this.#provider, message);\n });\n }\n this.#emitPromise = emitPromise.then(() => {\n if (this.#emitPromise === emitPromise) {\n this.#emitPromise = null;\n }\n });\n }\n }\n /**\n * Sub-classes **must** override this to emit the events on the\n * provider.\n */\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n/**\n * A **SocketBlockSubscriber** listens for ``newHeads`` events and emits\n * ``\"block\"`` events.\n */\nexport class SocketBlockSubscriber extends SocketSubscriber {\n /**\n * @_ignore:\n */\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\n/**\n * A **SocketPendingSubscriber** listens for pending transacitons and emits\n * ``\"pending\"`` events.\n */\nexport class SocketPendingSubscriber extends SocketSubscriber {\n /**\n * @_ignore:\n */\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\n/**\n * A **SocketEventSubscriber** listens for event logs.\n */\nexport class SocketEventSubscriber extends SocketSubscriber {\n #logFilter;\n /**\n * The filter.\n */\n get logFilter() { return JSON.parse(this.#logFilter); }\n /**\n * @_ignore:\n */\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n this.#logFilter = JSON.stringify(filter);\n }\n async _emit(provider, message) {\n provider.emit(this.logFilter, provider._wrapLog(message, provider._network));\n }\n}\n/**\n * A **SocketProvider** is backed by a long-lived connection over a\n * socket, which can subscribe and receive real-time messages over\n * its communication channel.\n */\nexport class SocketProvider extends JsonRpcApiProvider {\n #callbacks;\n // Maps each filterId to its subscriber\n #subs;\n // If any events come in before a subscriber has finished\n // registering, queue them\n #pending;\n /**\n * Creates a new **SocketProvider** connected to %%network%%.\n *\n * If unspecified, the network will be discovered.\n */\n constructor(network, _options) {\n // Copy the options\n const options = Object.assign({}, (_options != null) ? _options : {});\n // Support for batches is generally not supported for\n // connection-base providers; if this changes in the future\n // the _send should be updated to reflect this\n assertArgument(options.batchMaxCount == null || options.batchMaxCount === 1, \"sockets-based providers do not support batches\", \"options.batchMaxCount\", _options);\n options.batchMaxCount = 1;\n // Socket-based Providers (generally) cannot change their network,\n // since they have a long-lived connection; but let people override\n // this if they have just cause.\n if (options.staticNetwork == null) {\n options.staticNetwork = true;\n }\n super(network, options);\n this.#callbacks = new Map();\n this.#subs = new Map();\n this.#pending = new Map();\n }\n // This value is only valid after _start has been called\n /*\n get _network(): Network {\n if (this.#network == null) {\n throw new Error(\"this shouldn't happen\");\n }\n return this.#network.clone();\n }\n */\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n /**\n * Register a new subscriber. This is used internalled by Subscribers\n * and generally is unecessary unless extending capabilities.\n */\n _register(filterId, subscriber) {\n this.#subs.set(filterId, subscriber);\n const pending = this.#pending.get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n this.#pending.delete(filterId);\n }\n }\n async _send(payload) {\n // WebSocket provider doesn't accept batches\n assertArgument(!Array.isArray(payload), \"WebSocket does not support batch send\", \"payload\", payload);\n // @TODO: stringify payloads here and store to prevent mutations\n // Prepare a promise to respond to\n const promise = new Promise((resolve, reject) => {\n this.#callbacks.set(payload.id, { payload, resolve, reject });\n });\n // Wait until the socket is connected before writing to it\n await this._waitUntilReady();\n // Write the request to the socket\n await this._write(JSON.stringify(payload));\n return [await promise];\n }\n // Sub-classes must call this once they are connected\n /*\n async _start(): Promise {\n if (this.#ready) { return; }\n\n for (const { payload } of this.#callbacks.values()) {\n await this._write(JSON.stringify(payload));\n }\n\n this.#ready = (async function() {\n await super._start();\n })();\n }\n */\n /**\n * Sub-classes **must** call this with messages received over their\n * transport to be processed and dispatched.\n */\n async _processMessage(message) {\n const result = (JSON.parse(message));\n if (result && typeof (result) === \"object\" && \"id\" in result) {\n const callback = this.#callbacks.get(result.id);\n if (callback == null) {\n this.emit(\"error\", makeError(\"received result for unknown id\", \"UNKNOWN_ERROR\", {\n reasonCode: \"UNKNOWN_ID\",\n result\n }));\n return;\n }\n this.#callbacks.delete(result.id);\n callback.resolve(result);\n }\n else if (result && result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = this.#subs.get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = this.#pending.get(filterId);\n if (pending == null) {\n pending = [];\n this.#pending.set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n else {\n this.emit(\"error\", makeError(\"received unexpected message\", \"UNKNOWN_ERROR\", {\n reasonCode: \"UNEXPECTED_MESSAGE\",\n result\n }));\n return;\n }\n }\n /**\n * Sub-classes **must** override this to send %%message%% over their\n * transport.\n */\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n//# sourceMappingURL=provider-socket.js.map","import { WebSocket as _WebSocket } from \"./ws.js\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\n/**\n * A JSON-RPC provider which is backed by a WebSocket.\n *\n * WebSockets are often preferred because they retain a live connection\n * to a server, which permits more instant access to events.\n *\n * However, this incurs higher server infrasturture costs, so additional\n * resources may be required to host your own WebSocket nodes and many\n * third-party services charge additional fees for WebSocket endpoints.\n */\nexport class WebSocketProvider extends SocketProvider {\n #connect;\n #websocket;\n get websocket() {\n if (this.#websocket == null) {\n throw new Error(\"websocket closed\");\n }\n return this.#websocket;\n }\n constructor(url, network, options) {\n super(network, options);\n if (typeof (url) === \"string\") {\n this.#connect = () => { return new _WebSocket(url); };\n this.#websocket = this.#connect();\n }\n else if (typeof (url) === \"function\") {\n this.#connect = url;\n this.#websocket = url();\n }\n else {\n this.#connect = null;\n this.#websocket = url;\n }\n this.websocket.onopen = async () => {\n try {\n await this._start();\n this.resume();\n }\n catch (error) {\n console.log(\"failed to start WebsocketProvider\", error);\n // @TODO: now what? Attempt reconnect?\n }\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n /*\n this.websocket.onclose = (event) => {\n // @TODO: What event.code should we reconnect on?\n const reconnect = false;\n if (reconnect) {\n this.pause(true);\n if (this.#connect) {\n this.#websocket = this.#connect();\n this.#websocket.onopen = ...\n // @TODO: this requires the super class to rebroadcast; move it there\n }\n this._reconnect();\n }\n };\n */\n }\n async _write(message) {\n this.websocket.send(message);\n }\n async destroy() {\n if (this.#websocket != null) {\n this.#websocket.close();\n this.#websocket = null;\n }\n super.destroy();\n }\n}\n//# sourceMappingURL=provider-websocket.js.map","/**\n * [[link-infura]] provides a third-party service for connecting to\n * various blockchains over JSON-RPC.\n *\n * **Supported Networks**\n *\n * - Ethereum Mainnet (``mainnet``)\n * - Goerli Testnet (``goerli``)\n * - Sepolia Testnet (``sepolia``)\n * - Arbitrum (``arbitrum``)\n * - Arbitrum Goerli Testnet (``arbitrum-goerli``)\n * - Arbitrum Sepolia Testnet (``arbitrum-sepolia``)\n * - Base (``base``)\n * - Base Goerlia Testnet (``base-goerli``)\n * - Base Sepolia Testnet (``base-sepolia``)\n * - BNB Smart Chain Mainnet (``bnb``)\n * - BNB Smart Chain Testnet (``bnbt``)\n * - Linea (``linea``)\n * - Linea Goerli Testnet (``linea-goerli``)\n * - Linea Sepolia Testnet (``linea-sepolia``)\n * - Optimism (``optimism``)\n * - Optimism Goerli Testnet (``optimism-goerli``)\n * - Optimism Sepolia Testnet (``optimism-sepolia``)\n * - Polygon (``matic``)\n * - Polygon Amoy Testnet (``matic-amoy``)\n * - Polygon Mumbai Testnet (``matic-mumbai``)\n *\n * @_subsection: api/providers/thirdparty:INFURA [providers-infura]\n */\nimport { defineProperties, FetchRequest, assert, assertArgument } from \"../utils/index.js\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { Network } from \"./network.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"mainnet\":\n return \"mainnet.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"sepolia\":\n return \"sepolia.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-goerli\":\n return \"arbitrum-goerli.infura.io\";\n case \"arbitrum-sepolia\":\n return \"arbitrum-sepolia.infura.io\";\n case \"base\":\n return \"base-mainnet.infura.io\";\n case \"base-goerlia\":\n return \"base-goerli.infura.io\";\n case \"base-sepolia\":\n return \"base-sepolia.infura.io\";\n case \"bnb\":\n return \"bnbsmartchain-mainnet.infura.io\";\n case \"bnbt\":\n return \"bnbsmartchain-testnet.infura.io\";\n case \"linea\":\n return \"linea-mainnet.infura.io\";\n case \"linea-goerli\":\n return \"linea-goerli.infura.io\";\n case \"linea-sepolia\":\n return \"linea-sepolia.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"matic-amoy\":\n return \"polygon-amoy.infura.io\";\n case \"matic-mumbai\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-goerli\":\n return \"optimism-goerli.infura.io\";\n case \"optimism-sepolia\":\n return \"optimism-sepolia.infura.io\";\n }\n assertArgument(false, \"unsupported network\", \"network\", name);\n}\n/**\n * The **InfuraWebSocketProvider** connects to the [[link-infura]]\n * WebSocket end-points.\n *\n * By default, a highly-throttled API key is used, which is\n * appropriate for quick prototypes and simple scripts. To\n * gain access to an increased rate-limit, it is highly\n * recommended to [sign up here](link-infura-signup).\n */\nexport class InfuraWebSocketProvider extends WebSocketProvider {\n /**\n * The Project ID for the INFURA connection.\n */\n projectId;\n /**\n * The Project Secret.\n *\n * If null, no authenticated requests are made. This should not\n * be used outside of private contexts.\n */\n projectSecret;\n /**\n * Creates a new **InfuraWebSocketProvider**.\n */\n constructor(network, projectId) {\n const provider = new InfuraProvider(network, projectId);\n const req = provider._getConnection();\n assert(!req.credentials, \"INFURA WebSocket project secrets unsupported\", \"UNSUPPORTED_OPERATION\", { operation: \"InfuraProvider.getWebSocketProvider()\" });\n const url = req.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, provider._network);\n defineProperties(this, {\n projectId: provider.projectId,\n projectSecret: provider.projectSecret\n });\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n/**\n * The **InfuraProvider** connects to the [[link-infura]]\n * JSON-RPC end-points.\n *\n * By default, a highly-throttled API key is used, which is\n * appropriate for quick prototypes and simple scripts. To\n * gain access to an increased rate-limit, it is highly\n * recommended to [sign up here](link-infura-signup).\n */\nexport class InfuraProvider extends JsonRpcProvider {\n /**\n * The Project ID for the INFURA connection.\n */\n projectId;\n /**\n * The Project Secret.\n *\n * If null, no authenticated requests are made. This should not\n * be used outside of private contexts.\n */\n projectSecret;\n /**\n * Creates a new **InfuraProvider**.\n */\n constructor(_network, projectId, projectSecret) {\n if (_network == null) {\n _network = \"mainnet\";\n }\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = InfuraProvider.getRequest(network, projectId, projectSecret);\n super(request, network, { staticNetwork: network });\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n /**\n * Creates a new **InfuraWebSocketProvider**.\n */\n static getWebSocketProvider(network, projectId) {\n return new InfuraWebSocketProvider(network, projectId);\n }\n /**\n * Returns a prepared request for connecting to %%network%%\n * with %%projectId%% and %%projectSecret%%.\n */\n static getRequest(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n if (projectId === defaultProjectId) {\n request.retryFunc = async (request, response, attempt) => {\n showThrottleMessage(\"InfuraProvider\");\n return true;\n };\n }\n return request;\n }\n}\n//# sourceMappingURL=provider-infura.js.map","/**\n * [[link-quicknode]] provides a third-party service for connecting to\n * various blockchains over JSON-RPC.\n *\n * **Supported Networks**\n *\n * - Ethereum Mainnet (``mainnet``)\n * - Goerli Testnet (``goerli``)\n * - Sepolia Testnet (``sepolia``)\n * - Holesky Testnet (``holesky``)\n * - Arbitrum (``arbitrum``)\n * - Arbitrum Goerli Testnet (``arbitrum-goerli``)\n * - Arbitrum Sepolia Testnet (``arbitrum-sepolia``)\n * - Base Mainnet (``base``);\n * - Base Goerli Testnet (``base-goerli``);\n * - Base Sepolia Testnet (``base-sepolia``);\n * - BNB Smart Chain Mainnet (``bnb``)\n * - BNB Smart Chain Testnet (``bnbt``)\n * - Optimism (``optimism``)\n * - Optimism Goerli Testnet (``optimism-goerli``)\n * - Optimism Sepolia Testnet (``optimism-sepolia``)\n * - Polygon (``matic``)\n * - Polygon Mumbai Testnet (``matic-mumbai``)\n *\n * @_subsection: api/providers/thirdparty:QuickNode [providers-quicknode]\n */\nimport { defineProperties, FetchRequest, assertArgument } from \"../utils/index.js\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { Network } from \"./network.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultToken = \"919b412a057b5e9c9b6dce193c5a60242d6efadb\";\nfunction getHost(name) {\n switch (name) {\n case \"mainnet\":\n return \"ethers.quiknode.pro\";\n case \"goerli\":\n return \"ethers.ethereum-goerli.quiknode.pro\";\n case \"sepolia\":\n return \"ethers.ethereum-sepolia.quiknode.pro\";\n case \"holesky\":\n return \"ethers.ethereum-holesky.quiknode.pro\";\n case \"arbitrum\":\n return \"ethers.arbitrum-mainnet.quiknode.pro\";\n case \"arbitrum-goerli\":\n return \"ethers.arbitrum-goerli.quiknode.pro\";\n case \"arbitrum-sepolia\":\n return \"ethers.arbitrum-sepolia.quiknode.pro\";\n case \"base\":\n return \"ethers.base-mainnet.quiknode.pro\";\n case \"base-goerli\":\n return \"ethers.base-goerli.quiknode.pro\";\n case \"base-spolia\":\n return \"ethers.base-sepolia.quiknode.pro\";\n case \"bnb\":\n return \"ethers.bsc.quiknode.pro\";\n case \"bnbt\":\n return \"ethers.bsc-testnet.quiknode.pro\";\n case \"matic\":\n return \"ethers.matic.quiknode.pro\";\n case \"matic-mumbai\":\n return \"ethers.matic-testnet.quiknode.pro\";\n case \"optimism\":\n return \"ethers.optimism.quiknode.pro\";\n case \"optimism-goerli\":\n return \"ethers.optimism-goerli.quiknode.pro\";\n case \"optimism-sepolia\":\n return \"ethers.optimism-sepolia.quiknode.pro\";\n case \"xdai\":\n return \"ethers.xdai.quiknode.pro\";\n }\n assertArgument(false, \"unsupported network\", \"network\", name);\n}\n/*\n@TODO:\n These networks are not currently present in the Network\n default included networks. Research them and ensure they\n are EVM compatible and work with ethers\n\n http://ethers.matic-amoy.quiknode.pro\n\n http://ethers.avalanche-mainnet.quiknode.pro\n http://ethers.avalanche-testnet.quiknode.pro\n http://ethers.blast-sepolia.quiknode.pro\n http://ethers.celo-mainnet.quiknode.pro\n http://ethers.fantom.quiknode.pro\n http://ethers.imx-demo.quiknode.pro\n http://ethers.imx-mainnet.quiknode.pro\n http://ethers.imx-testnet.quiknode.pro\n http://ethers.near-mainnet.quiknode.pro\n http://ethers.near-testnet.quiknode.pro\n http://ethers.nova-mainnet.quiknode.pro\n http://ethers.scroll-mainnet.quiknode.pro\n http://ethers.scroll-testnet.quiknode.pro\n http://ethers.tron-mainnet.quiknode.pro\n http://ethers.zkevm-mainnet.quiknode.pro\n http://ethers.zkevm-testnet.quiknode.pro\n http://ethers.zksync-mainnet.quiknode.pro\n http://ethers.zksync-testnet.quiknode.pro\n*/\n/**\n * The **QuickNodeProvider** connects to the [[link-quicknode]]\n * JSON-RPC end-points.\n *\n * By default, a highly-throttled API token is used, which is\n * appropriate for quick prototypes and simple scripts. To\n * gain access to an increased rate-limit, it is highly\n * recommended to [sign up here](link-quicknode).\n */\nexport class QuickNodeProvider extends JsonRpcProvider {\n /**\n * The API token.\n */\n token;\n /**\n * Creates a new **QuickNodeProvider**.\n */\n constructor(_network, token) {\n if (_network == null) {\n _network = \"mainnet\";\n }\n const network = Network.from(_network);\n if (token == null) {\n token = defaultToken;\n }\n const request = QuickNodeProvider.getRequest(network, token);\n super(request, network, { staticNetwork: network });\n defineProperties(this, { token });\n }\n _getProvider(chainId) {\n try {\n return new QuickNodeProvider(chainId, this.token);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.token === defaultToken);\n }\n /**\n * Returns a new request prepared for %%network%% and the\n * %%token%%.\n */\n static getRequest(network, token) {\n if (token == null) {\n token = defaultToken;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${token}`);\n request.allowGzip = true;\n //if (projectSecret) { request.setCredentials(\"\", projectSecret); }\n if (token === defaultToken) {\n request.retryFunc = async (request, response, attempt) => {\n showThrottleMessage(\"QuickNodeProvider\");\n return true;\n };\n }\n return request;\n }\n}\n//# sourceMappingURL=provider-quicknode.js.map","/**\n * A **FallbackProvider** provides resilience, security and performance\n * in a way that is customizable and configurable.\n *\n * @_section: api/providers/fallback-provider:Fallback Provider [about-fallback-provider]\n */\nimport { assert, assertArgument, getBigInt, getNumber, isError } from \"../utils/index.js\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction shuffle(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\nfunction stringify(value) {\n return JSON.stringify(value, (key, value) => {\n if (typeof (value) === \"bigint\") {\n return { type: \"bigint\", value: value.toString() };\n }\n return value;\n });\n}\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0,\n _lastFatalError: null, _lastFatalErrorTimestamp: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n try {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n }\n catch (error) {\n config.blockNumber = -2;\n config._lastFatalError = error;\n config._lastFatalErrorTimestamp = getTime();\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n if (config._lastFatalError) {\n break;\n }\n }\n}\nfunction _normalize(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[\" + (value.map(_normalize)).join(\",\") + \"]\";\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return _normalize(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n case \"number\":\n return BigInt(value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((k) => `${JSON.stringify(k)}:${_normalize(value[k])}`).join(\",\") + \"}\";\n }\n }\n console.log(\"Could not serialize\", value);\n throw new Error(\"Hmm...\");\n}\nfunction normalizeResult(value) {\n if (\"error\" in value) {\n const error = value.error;\n return { tag: _normalize(error), value: error };\n }\n const result = value.result;\n return { tag: _normalize(result), value: result };\n}\n// This strategy picks the highest weight result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { value, tag, weight } of results) {\n const t = tally.get(tag) || { value, weight: 0 };\n t.weight += weight;\n tally.set(tag, t);\n }\n let best = null;\n for (const r of tally.values()) {\n if (r.weight >= quorum && (!best || r.weight > best.weight)) {\n best = r;\n }\n }\n if (best) {\n return best.value;\n }\n return undefined;\n}\nfunction getMedian(quorum, results) {\n let resultWeight = 0;\n const errorMap = new Map();\n let bestError = null;\n const values = [];\n for (const { value, tag, weight } of results) {\n if (value instanceof Error) {\n const e = errorMap.get(tag) || { value, weight: 0 };\n e.weight += weight;\n errorMap.set(tag, e);\n if (bestError == null || e.weight > bestError.weight) {\n bestError = e;\n }\n }\n else {\n values.push(BigInt(value));\n resultWeight += weight;\n }\n }\n if (resultWeight < quorum) {\n // We have quorum for an error\n if (bestError && bestError.weight >= quorum) {\n return bestError.value;\n }\n // We do not have quorum for a result\n return undefined;\n }\n // Get the sorted values\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = Math.floor(values.length / 2);\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getAnyResult(quorum, results) {\n // If any value or error meets quorum, that is our preferred result\n const result = checkQuorum(quorum, results);\n if (result !== undefined) {\n return result;\n }\n // Otherwise, do we have any result?\n for (const r of results) {\n if (r.value) {\n return r.value;\n }\n }\n // Nope!\n return undefined;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return getNumber(getMedian(quorum, results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, value } of results) {\n const r = getNumber(value);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/**\n * A **FallbackProvider** manages several [[Providers]] providing\n * resilience by switching between slow or misbehaving nodes, security\n * by requiring multiple backends to aggree and performance by allowing\n * faster backends to respond earlier.\n *\n */\nexport class FallbackProvider extends AbstractProvider {\n /**\n * The number of backends that must agree on a value before it is\n * accpeted.\n */\n quorum;\n /**\n * @_ignore:\n */\n eventQuorum;\n /**\n * @_ignore:\n */\n eventWorkers;\n #configs;\n #height;\n #initialSyncPromise;\n /**\n * Creates a new **FallbackProvider** with %%providers%% connected to\n * %%network%%.\n *\n * If a [[Provider]] is included in %%providers%%, defaults are used\n * for the configuration.\n */\n constructor(providers, network, options) {\n super(network, options);\n this.#configs = providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n });\n this.#height = -2;\n this.#initialSyncPromise = null;\n if (options && options.quorum != null) {\n this.quorum = options.quorum;\n }\n else {\n this.quorum = Math.ceil(this.#configs.reduce((accum, config) => {\n accum += config.weight;\n return accum;\n }, 0) / 2);\n }\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n assertArgument(this.quorum <= this.#configs.reduce((a, c) => (a + c.weight), 0), \"quorum exceed provider weight\", \"quorum\", this.quorum);\n }\n get providerConfigs() {\n return this.#configs.map((c) => {\n const result = Object.assign({}, c);\n for (const key in result) {\n if (key[0] === \"_\") {\n delete result[key];\n }\n }\n return result;\n });\n }\n async _detectNetwork() {\n return Network.from(getBigInt(await this._perform({ method: \"chainId\" })));\n }\n // @TODO: Add support to select providers to be the event subscriber\n //_getSubscriber(sub: Subscription): Subscriber {\n // throw new Error(\"@TODO\");\n //}\n /**\n * Transforms a %%req%% into the correct method call on %%provider%%.\n */\n async _translatePerform(provider, req) {\n switch (req.method) {\n case \"broadcastTransaction\":\n return await provider.broadcastTransaction(req.signedTransaction);\n case \"call\":\n return await provider.call(Object.assign({}, req.transaction, { blockTag: req.blockTag }));\n case \"chainId\":\n return (await provider.getNetwork()).chainId;\n case \"estimateGas\":\n return await provider.estimateGas(req.transaction);\n case \"getBalance\":\n return await provider.getBalance(req.address, req.blockTag);\n case \"getBlock\": {\n const block = (\"blockHash\" in req) ? req.blockHash : req.blockTag;\n return await provider.getBlock(block, req.includeTransactions);\n }\n case \"getBlockNumber\":\n return await provider.getBlockNumber();\n case \"getCode\":\n return await provider.getCode(req.address, req.blockTag);\n case \"getGasPrice\":\n return (await provider.getFeeData()).gasPrice;\n case \"getPriorityFee\":\n return (await provider.getFeeData()).maxPriorityFeePerGas;\n case \"getLogs\":\n return await provider.getLogs(req.filter);\n case \"getStorage\":\n return await provider.getStorage(req.address, req.position, req.blockTag);\n case \"getTransaction\":\n return await provider.getTransaction(req.hash);\n case \"getTransactionCount\":\n return await provider.getTransactionCount(req.address, req.blockTag);\n case \"getTransactionReceipt\":\n return await provider.getTransactionReceipt(req.hash);\n case \"getTransactionResult\":\n return await provider.getTransactionResult(req.hash);\n }\n }\n // Grab the next (random) config that is not already part of\n // the running set\n #getNextConfig(running) {\n // @TODO: Maybe do a check here to favour (heavily) providers that\n // do not require waitForSync and disfavour providers that\n // seem down-ish or are behaving slowly\n const configs = Array.from(running).map((r) => r.config);\n // Shuffle the states, sorted by priority\n const allConfigs = this.#configs.slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (a.priority - b.priority));\n for (const config of allConfigs) {\n if (config._lastFatalError) {\n continue;\n }\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n }\n // Adds a new runner (if available) to running.\n #addRunner(running, req) {\n const config = this.#getNextConfig(running);\n // No runners available\n if (config == null) {\n return null;\n }\n // Create a new runner\n const runner = {\n config, result: null, didBump: false,\n perform: null, staller: null\n };\n const now = getTime();\n // Start performing this operation\n runner.perform = (async () => {\n try {\n config.requests++;\n const result = await this._translatePerform(config.provider, req);\n runner.result = { result };\n }\n catch (error) {\n config.errorResponses++;\n runner.result = { error };\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n // Start a staller; when this times out, it's time to force\n // kicking off another runner because we are taking too long\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n }\n // Initializes the blockNumber and network for each runner and\n // blocks until initialized\n async #initialSync() {\n let initialSync = this.#initialSyncPromise;\n if (!initialSync) {\n const promises = [];\n this.#configs.forEach((config) => {\n promises.push((async () => {\n await waitForSync(config, 0);\n if (!config._lastFatalError) {\n config._network = await config.provider.getNetwork();\n }\n })());\n });\n this.#initialSyncPromise = initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of this.#configs) {\n if (config._lastFatalError) {\n continue;\n }\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n assert(false, \"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })();\n }\n await initialSync;\n }\n async #checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (runner.result != null) {\n const { tag, value } = normalizeResult(runner.result);\n results.push({ tag, value, weight: runner.config.weight });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (this.#height === -2) {\n this.#height = Math.ceil(getNumber(getMedian(this.quorum, this.#configs.filter((c) => (!c._lastFatalError)).map((c) => ({\n value: c.blockNumber,\n tag: getNumber(c.blockNumber).toString(),\n weight: c.weight\n })))));\n }\n // Find the mode across all the providers, allowing for\n // a little drift between block heights\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > this.#height) {\n this.#height = mode;\n }\n return this.#height;\n }\n case \"getGasPrice\":\n case \"getPriorityFee\":\n case \"estimateGas\":\n return getMedian(this.quorum, results);\n case \"getBlock\":\n // Pending blocks are in the mempool and already\n // quite untrustworthy; just grab anything\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return getAnyResult(this.quorum, results);\n }\n return checkQuorum(this.quorum, results);\n case \"call\":\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorage\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"broadcastTransaction\":\n return getAnyResult(this.quorum, results);\n }\n assert(false, \"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${stringify(req.method)})`\n });\n }\n async #waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n let newRunners = 0;\n for (const runner of running) {\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check if we have reached quorum on a result (or error)\n const value = await this.#checkQuorum(running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n this.#addRunner(running, req);\n }\n // All providers have returned, and we have no result\n assert(interesting.length > 0, \"quorum not met\", \"SERVER_ERROR\", {\n request: \"%sub-requests\",\n info: { request: req, results: Array.from(running).map((r) => stringify(r.result)) }\n });\n // Wait for someone to either complete its perform or stall out\n await Promise.race(interesting);\n // This is recursive, but at worst case the depth is 2x the\n // number of providers (each has a perform and a staller)\n return await this.#waitForQuorum(running, req);\n }\n async _perform(req) {\n // Broadcasting a transaction is rare (ish) and already incurs\n // a cost on the user, so spamming is safe-ish. Just send it to\n // every backend.\n if (req.method === \"broadcastTransaction\") {\n // Once any broadcast provides a positive result, use it. No\n // need to wait for anyone else\n const results = this.#configs.map((c) => null);\n const broadcasts = this.#configs.map(async ({ provider, weight }, index) => {\n try {\n const result = await provider._perform(req);\n results[index] = Object.assign(normalizeResult({ result }), { weight });\n }\n catch (error) {\n results[index] = Object.assign(normalizeResult({ error }), { weight });\n }\n });\n // As each promise finishes...\n while (true) {\n // Check for a valid broadcast result\n const done = results.filter((r) => (r != null));\n for (const { value } of done) {\n if (!(value instanceof Error)) {\n return value;\n }\n }\n // Check for a legit broadcast error (one which we cannot\n // recover from; some nodes may return the following red\n // herring events:\n // - alredy seend (UNKNOWN_ERROR)\n // - NONCE_EXPIRED\n // - REPLACEMENT_UNDERPRICED\n const result = checkQuorum(this.quorum, results.filter((r) => (r != null)));\n if (isError(result, \"INSUFFICIENT_FUNDS\")) {\n throw result;\n }\n // Kick off the next provider (if any)\n const waiting = broadcasts.filter((b, i) => (results[i] == null));\n if (waiting.length === 0) {\n break;\n }\n await Promise.race(waiting);\n }\n // Use standard quorum results; any result was returned above,\n // so this will find any error that met quorum if any\n const result = getAnyResult(this.quorum, results);\n assert(result !== undefined, \"problem multi-broadcasting\", \"SERVER_ERROR\", {\n request: \"%sub-requests\",\n info: { request: req, results: results.map(stringify) }\n });\n if (result instanceof Error) {\n throw result;\n }\n return result;\n }\n await this.#initialSync();\n // Bootstrap enough runners to meet quorum\n const running = new Set();\n let inflightQuorum = 0;\n while (true) {\n const runner = this.#addRunner(running, req);\n if (runner == null) {\n break;\n }\n inflightQuorum += runner.config.weight;\n if (inflightQuorum >= this.quorum) {\n break;\n }\n }\n const result = await this.#waitForQuorum(running, req);\n // Track requests sent to a provider that are still\n // outstanding after quorum has been otherwise found\n for (const runner of running) {\n if (runner.perform && runner.result == null) {\n runner.config.lateResponses++;\n }\n }\n return result;\n }\n async destroy() {\n for (const { provider } of this.#configs) {\n provider.destroy();\n }\n super.destroy();\n }\n}\n//# sourceMappingURL=provider-fallback.js.map","import { assert } from \"../utils/index.js\";\nimport { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { ChainstackProvider } from \"./provider-chainstack.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\n//import { PocketProvider } from \"./provider-pocket.js\";\nimport { QuickNodeProvider } from \"./provider-quicknode.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { Network } from \"./network.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nconst Testnets = \"goerli kovan sepolia classicKotti optimism-goerli arbitrum-goerli matic-mumbai bnbt\".split(\" \");\n/**\n * Returns a default provider for %%network%%.\n *\n * If %%network%% is a [[WebSocketLike]] or string that begins with\n * ``\"ws:\"`` or ``\"wss:\"``, a [[WebSocketProvider]] is returned backed\n * by that WebSocket or URL.\n *\n * If %%network%% is a string that begins with ``\"HTTP:\"`` or ``\"HTTPS:\"``,\n * a [[JsonRpcProvider]] is returned connected to that URL.\n *\n * Otherwise, a default provider is created backed by well-known public\n * Web3 backends (such as [[link-infura]]) using community-provided API\n * keys.\n *\n * The %%options%% allows specifying custom API keys per backend (setting\n * an API key to ``\"-\"`` will omit that provider) and ``options.exclusive``\n * can be set to either a backend name or and array of backend names, which\n * will whitelist **only** those backends.\n *\n * Current backend strings supported are:\n * - ``\"alchemy\"``\n * - ``\"ankr\"``\n * - ``\"cloudflare\"``\n * - ``\"chainstack\"``\n * - ``\"etherscan\"``\n * - ``\"infura\"``\n * - ``\"publicPolygon\"``\n * - ``\"quicknode\"``\n *\n * @example:\n * // Connect to a local Geth node\n * provider = getDefaultProvider(\"http://localhost:8545/\");\n *\n * // Connect to Ethereum mainnet with any current and future\n * // third-party services available\n * provider = getDefaultProvider(\"mainnet\");\n *\n * // Connect to Polygon, but only allow Etherscan and\n * // INFURA and use \"MY_API_KEY\" in calls to Etherscan.\n * provider = getDefaultProvider(\"matic\", {\n * etherscan: \"MY_API_KEY\",\n * exclusive: [ \"etherscan\", \"infura\" ]\n * });\n */\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n const allowService = (name) => {\n if (options[name] === \"-\") {\n return false;\n }\n if (typeof (options.exclusive) === \"string\") {\n return (name === options.exclusive);\n }\n if (Array.isArray(options.exclusive)) {\n return (options.exclusive.indexOf(name) !== -1);\n }\n return true;\n };\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n // Get the network and name, if possible\n let staticNetwork = null;\n try {\n staticNetwork = Network.from(network);\n }\n catch (error) { }\n const providers = [];\n if (allowService(\"publicPolygon\") && staticNetwork) {\n if (staticNetwork.name === \"matic\") {\n providers.push(new JsonRpcProvider(\"https:/\\/polygon-rpc.com/\", staticNetwork, { staticNetwork }));\n }\n else if (staticNetwork.name === \"matic-amoy\") {\n providers.push(new JsonRpcProvider(\"https:/\\/rpc-amoy.polygon.technology/\", staticNetwork, { staticNetwork }));\n }\n }\n if (allowService(\"alchemy\")) {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) { }\n }\n if (allowService(\"ankr\") && options.ankr != null) {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) { }\n }\n if (allowService(\"chainstack\")) {\n try {\n providers.push(new ChainstackProvider(network, options.chainstack));\n }\n catch (error) { }\n }\n if (allowService(\"cloudflare\")) {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) { }\n }\n if (allowService(\"etherscan\")) {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) { }\n }\n if (allowService(\"infura\")) {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) { }\n }\n /*\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey: undefined | string = undefined;\n let loadBalancer: undefined | boolean = undefined;\n if (typeof(appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n } catch (error) { console.log(error); }\n }\n */\n if (allowService(\"quicknode\")) {\n try {\n let token = options.quicknode;\n providers.push(new QuickNodeProvider(network, token));\n }\n catch (error) { }\n }\n assert(providers.length, \"unsupported default network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDefaultProvider\"\n });\n // No need for a FallbackProvider\n if (providers.length === 1) {\n return providers[0];\n }\n // We use the floor because public third-party providers can be unreliable,\n // so a low number of providers with a large quorum will fail too often\n let quorum = Math.floor(providers.length / 2);\n if (quorum > 2) {\n quorum = 2;\n }\n // Testnets don't need as strong a security gaurantee and speed is\n // more useful during testing\n if (staticNetwork && Testnets.indexOf(staticNetwork.name) !== -1) {\n quorum = 1;\n }\n // Provided override qorum takes priority\n if (options && options.quorum) {\n quorum = options.quorum;\n }\n return new FallbackProvider(providers, undefined, { quorum });\n}\n//# sourceMappingURL=default-provider.js.map","import { defineProperties } from \"../utils/index.js\";\nimport { AbstractSigner } from \"./abstract-signer.js\";\n/**\n * A **NonceManager** wraps another [[Signer]] and automatically manages\n * the nonce, ensuring serialized and sequential nonces are used during\n * transaction.\n */\nexport class NonceManager extends AbstractSigner {\n /**\n * The Signer being managed.\n */\n signer;\n #noncePromise;\n #delta;\n /**\n * Creates a new **NonceManager** to manage %%signer%%.\n */\n constructor(signer) {\n super(signer.provider);\n defineProperties(this, { signer });\n this.#noncePromise = null;\n this.#delta = 0;\n }\n async getAddress() {\n return this.signer.getAddress();\n }\n connect(provider) {\n return new NonceManager(this.signer.connect(provider));\n }\n async getNonce(blockTag) {\n if (blockTag === \"pending\") {\n if (this.#noncePromise == null) {\n this.#noncePromise = super.getNonce(\"pending\");\n }\n const delta = this.#delta;\n return (await this.#noncePromise) + delta;\n }\n return super.getNonce(blockTag);\n }\n /**\n * Manually increment the nonce. This may be useful when managng\n * offline transactions.\n */\n increment() {\n this.#delta++;\n }\n /**\n * Resets the nonce, causing the **NonceManager** to reload the current\n * nonce from the blockchain on the next transaction.\n */\n reset() {\n this.#delta = 0;\n this.#noncePromise = null;\n }\n async sendTransaction(tx) {\n const noncePromise = this.getNonce(\"pending\");\n this.increment();\n tx = await this.signer.populateTransaction(tx);\n tx.nonce = await noncePromise;\n // @TODO: Maybe handle interesting/recoverable errors?\n // Like don't increment if the tx was certainly not sent\n return await this.signer.sendTransaction(tx);\n }\n signTransaction(tx) {\n return this.signer.signTransaction(tx);\n }\n signMessage(message) {\n return this.signer.signMessage(message);\n }\n signTypedData(domain, types, value) {\n return this.signer.signTypedData(domain, types, value);\n }\n}\n//# sourceMappingURL=signer-noncemanager.js.map","import { assertArgument } from \"../utils/index.js\";\nimport { JsonRpcApiPollingProvider } from \"./provider-jsonrpc.js\";\n;\n/**\n * A **BrowserProvider** is intended to wrap an injected provider which\n * adheres to the [[link-eip-1193]] standard, which most (if not all)\n * currently do.\n */\nexport class BrowserProvider extends JsonRpcApiPollingProvider {\n #request;\n /**\n * Connnect to the %%ethereum%% provider, optionally forcing the\n * %%network%%.\n */\n constructor(ethereum, network) {\n assertArgument(ethereum && ethereum.request, \"invalid EIP-1193 provider\", \"ethereum\", ethereum);\n super(network, { batchMaxCount: 1 });\n this.#request = async (method, params) => {\n const payload = { method, params };\n this.emit(\"debug\", { action: \"sendEip1193Request\", payload });\n try {\n const result = await ethereum.request(payload);\n this.emit(\"debug\", { action: \"receiveEip1193Result\", result });\n return result;\n }\n catch (e) {\n const error = new Error(e.message);\n error.code = e.code;\n error.data = e.data;\n error.payload = payload;\n this.emit(\"debug\", { action: \"receiveEip1193Error\", error });\n throw error;\n }\n };\n }\n async send(method, params) {\n await this._start();\n return await super.send(method, params);\n }\n async _send(payload) {\n assertArgument(!Array.isArray(payload), \"EIP-1193 does not support batch request\", \"payload\", payload);\n try {\n const result = await this.#request(payload.method, payload.params || []);\n return [{ id: payload.id, result }];\n }\n catch (e) {\n return [{\n id: payload.id,\n error: { code: e.code, data: e.data, message: e.message }\n }];\n }\n }\n getRpcError(payload, error) {\n error = JSON.parse(JSON.stringify(error));\n // EIP-1193 gives us some machine-readable error codes, so rewrite\n // them into \n switch (error.error.code || -1) {\n case 4001:\n error.error.message = `ethers-user-denied: ${error.error.message}`;\n break;\n case 4200:\n error.error.message = `ethers-unsupported: ${error.error.message}`;\n break;\n }\n return super.getRpcError(payload, error);\n }\n /**\n * Resolves to ``true`` if the provider manages the %%address%%.\n */\n async hasSigner(address) {\n if (address == null) {\n address = 0;\n }\n const accounts = await this.send(\"eth_accounts\", []);\n if (typeof (address) === \"number\") {\n return (accounts.length > address);\n }\n address = address.toLowerCase();\n return accounts.filter((a) => (a.toLowerCase() === address)).length !== 0;\n }\n async getSigner(address) {\n if (address == null) {\n address = 0;\n }\n if (!(await this.hasSigner(address))) {\n try {\n //const resp = \n await this.#request(\"eth_requestAccounts\", []);\n //console.log(\"RESP\", resp);\n }\n catch (error) {\n const payload = error.payload;\n throw this.getRpcError(payload, { id: payload.id, error });\n }\n }\n return await super.getSigner(address);\n }\n}\n//# sourceMappingURL=provider-browser.js.map","/**\n * [[link-pocket]] provides a third-party service for connecting to\n * various blockchains over JSON-RPC.\n *\n * **Supported Networks**\n *\n * - Ethereum Mainnet (``mainnet``)\n * - Goerli Testnet (``goerli``)\n * - Polygon (``matic``)\n * - Arbitrum (``arbitrum``)\n *\n * @_subsection: api/providers/thirdparty:Pocket [providers-pocket]\n */\nimport { defineProperties, FetchRequest, assertArgument } from \"../utils/index.js\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { Network } from \"./network.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\nfunction getHost(name) {\n switch (name) {\n case \"mainnet\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n case \"matic\":\n return \"poly-mainnet.gateway.pokt.network\";\n case \"matic-mumbai\":\n return \"polygon-mumbai-rpc.gateway.pokt.network\";\n }\n assertArgument(false, \"unsupported network\", \"network\", name);\n}\n/**\n * The **PocketProvider** connects to the [[link-pocket]]\n * JSON-RPC end-points.\n *\n * By default, a highly-throttled API key is used, which is\n * appropriate for quick prototypes and simple scripts. To\n * gain access to an increased rate-limit, it is highly\n * recommended to [sign up here](link-pocket-signup).\n */\nexport class PocketProvider extends JsonRpcProvider {\n /**\n * The Application ID for the Pocket connection.\n */\n applicationId;\n /**\n * The Application Secret for making authenticated requests\n * to the Pocket connection.\n */\n applicationSecret;\n /**\n * Create a new **PocketProvider**.\n *\n * By default connecting to ``mainnet`` with a highly throttled\n * API key.\n */\n constructor(_network, applicationId, applicationSecret) {\n if (_network == null) {\n _network = \"mainnet\";\n }\n const network = Network.from(_network);\n if (applicationId == null) {\n applicationId = defaultApplicationId;\n }\n if (applicationSecret == null) {\n applicationSecret = null;\n }\n const options = { staticNetwork: network };\n const request = PocketProvider.getRequest(network, applicationId, applicationSecret);\n super(request, network, options);\n defineProperties(this, { applicationId, applicationSecret });\n }\n _getProvider(chainId) {\n try {\n return new PocketProvider(chainId, this.applicationId, this.applicationSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n /**\n * Returns a prepared request for connecting to %%network%% with\n * %%applicationId%%.\n */\n static getRequest(network, applicationId, applicationSecret) {\n if (applicationId == null) {\n applicationId = defaultApplicationId;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v1/lb/${applicationId}`);\n request.allowGzip = true;\n if (applicationSecret) {\n request.setCredentials(\"\", applicationSecret);\n }\n if (applicationId === defaultApplicationId) {\n request.retryFunc = async (request, response, attempt) => {\n showThrottleMessage(\"PocketProvider\");\n return true;\n };\n }\n return request;\n }\n isCommunityResource() {\n return (this.applicationId === defaultApplicationId);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","import { getAddress, resolveAddress } from \"../address/index.js\";\nimport { hashMessage, TypedDataEncoder } from \"../hash/index.js\";\nimport { AbstractSigner } from \"../providers/index.js\";\nimport { computeAddress, Transaction } from \"../transaction/index.js\";\nimport { defineProperties, resolveProperties, assert, assertArgument } from \"../utils/index.js\";\n/**\n * The **BaseWallet** is a stream-lined implementation of a\n * [[Signer]] that operates with a private key.\n *\n * It is preferred to use the [[Wallet]] class, as it offers\n * additional functionality and simplifies loading a variety\n * of JSON formats, Mnemonic Phrases, etc.\n *\n * This class may be of use for those attempting to implement\n * a minimal Signer.\n */\nexport class BaseWallet extends AbstractSigner {\n /**\n * The wallet address.\n */\n address;\n #signingKey;\n /**\n * Creates a new BaseWallet for %%privateKey%%, optionally\n * connected to %%provider%%.\n *\n * If %%provider%% is not specified, only offline methods can\n * be used.\n */\n constructor(privateKey, provider) {\n super(provider);\n assertArgument(privateKey && typeof (privateKey.sign) === \"function\", \"invalid private key\", \"privateKey\", \"[ REDACTED ]\");\n this.#signingKey = privateKey;\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store private values behind getters to reduce visibility\n // in console.log\n /**\n * The [[SigningKey]] used for signing payloads.\n */\n get signingKey() { return this.#signingKey; }\n /**\n * The private key for this wallet.\n */\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(this.#signingKey, provider);\n }\n async signTransaction(tx) {\n // Replace any Addressable or ENS name with an address\n const { to, from } = await resolveProperties({\n to: (tx.to ? resolveAddress(tx.to, this.provider) : undefined),\n from: (tx.from ? resolveAddress(tx.from, this.provider) : undefined)\n });\n if (to != null) {\n tx.to = to;\n }\n if (from != null) {\n tx.from = from;\n }\n if (tx.from != null) {\n assertArgument(getAddress((tx.from)) === this.address, \"transaction from address mismatch\", \"tx.from\", tx.from);\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signMessageSync(message);\n }\n // @TODO: Add a secialized signTx and signTyped sync that enforces\n // all parameters are known?\n /**\n * Returns the signature for %%message%% signed with this wallet.\n */\n signMessageSync(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n // @TODO: this should use resolveName; addresses don't\n // need a provider\n assert(this.provider != null, \"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n const address = await this.provider.resolveName(name);\n assert(address != null, \"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n//# sourceMappingURL=base-wallet.js.map","import { assertArgument } from \"../utils/index.js\";\nconst subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\n/**\n * @_ignore\n */\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n /* c8 ignore start */\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n /* c8 ignore stop */\n return unfold(unfold(clumps, \";\"), \":\");\n}\n/**\n * @_ignore\n */\nexport function decodeOwl(data) {\n assertArgument(data[0] === \"0\", \"unsupported auwl data\", \"data\", data);\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","import { defineProperties } from \"../utils/index.js\";\n/**\n * A Wordlist represents a collection of language-specific\n * words used to encode and devoce [[link-bip-39]] encoded data\n * by mapping words to 11-bit values and vice versa.\n */\nexport class Wordlist {\n locale;\n /**\n * Creates a new Wordlist instance.\n *\n * Sub-classes MUST call this if they provide their own constructor,\n * passing in the locale string of the language.\n *\n * Generally there is no need to create instances of a Wordlist,\n * since each language-specific Wordlist creates an instance and\n * there is no state kept internally, so they are safe to share.\n */\n constructor(locale) {\n defineProperties(this, { locale });\n }\n /**\n * Sub-classes may override this to provide a language-specific\n * method for spliting %%phrase%% into individual words.\n *\n * By default, %%phrase%% is split using any sequences of\n * white-space as defined by regular expressions (i.e. ``/\\s+/``).\n */\n split(phrase) {\n return phrase.toLowerCase().split(/\\s+/g);\n }\n /**\n * Sub-classes may override this to provider a language-specific\n * method for joining %%words%% into a phrase.\n *\n * By default, %%words%% are joined by a single space.\n */\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nimport { id } from \"../hash/index.js\";\nimport { assertArgument } from \"../utils/index.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { Wordlist } from \"./wordlist.js\";\n/**\n * An OWL format Wordlist is an encoding method that exploits\n * the general locality of alphabetically sorted words to\n * achieve a simple but effective means of compression.\n *\n * This class is generally not useful to most developers as\n * it is used mainly internally to keep Wordlists for languages\n * based on ASCII-7 small.\n *\n * If necessary, there are tools within the ``generation/`` folder\n * to create the necessary data.\n */\nexport class WordlistOwl extends Wordlist {\n #data;\n #checksum;\n /**\n * Creates a new Wordlist for %%locale%% using the OWL %%data%%\n * and validated against the %%checksum%%.\n */\n constructor(locale, data, checksum) {\n super(locale);\n this.#data = data;\n this.#checksum = checksum;\n this.#words = null;\n }\n /**\n * The OWL-encoded data.\n */\n get _data() { return this.#data; }\n /**\n * Decode all the words for the wordlist.\n */\n _decodeWords() {\n return decodeOwl(this.#data);\n }\n #words;\n #loadWords() {\n if (this.#words == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== this.#checksum) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n this.#words = words;\n }\n return this.#words;\n }\n getWord(index) {\n const words = this.#loadWords();\n assertArgument(index >= 0 && index < words.length, `invalid word index: ${index}`, \"index\", index);\n return words[index];\n }\n getWordIndex(word) {\n return this.#loadWords().indexOf(word);\n }\n}\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nlet wordlist = null;\n/**\n * The [[link-bip39-en]] for [mnemonic phrases](link-bip-39).\n *\n * @_docloc: api/wordlists\n */\nexport class LangEn extends WordlistOwl {\n /**\n * Creates a new instance of the English language Wordlist.\n *\n * This should be unnecessary most of the time as the exported\n * [[langEn]] should suffice.\n *\n * @_ignore:\n */\n constructor() { super(\"en\", words, checksum); }\n /**\n * Returns a singleton instance of a ``LangEn``, creating it\n * if this is the first time being called.\n */\n static wordlist() {\n if (wordlist == null) {\n wordlist = new LangEn();\n }\n return wordlist;\n }\n}\n//# sourceMappingURL=lang-en.js.map","import { pbkdf2, sha256 } from \"../crypto/index.js\";\nimport { defineProperties, getBytes, hexlify, assertNormalize, assertPrivate, assertArgument, toUtf8Bytes } from \"../utils/index.js\";\nimport { LangEn } from \"../wordlists/lang-en.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = LangEn.wordlist();\n }\n const words = wordlist.split(mnemonic);\n assertArgument((words.length % 3) === 0 && words.length >= 12 && words.length <= 24, \"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n const entropy = new Uint8Array(Math.ceil(11 * words.length / 8));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n assertArgument(index >= 0, `invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = getBytes(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n assertArgument(checksum === (entropy[entropy.length - 1] & checksumMask), \"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist) {\n assertArgument((entropy.length % 4) === 0 && entropy.length >= 16 && entropy.length <= 32, \"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n if (wordlist == null) {\n wordlist = LangEn.wordlist();\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\n/**\n * A **Mnemonic** wraps all properties required to compute [[link-bip-39]]\n * seeds and convert between phrases and entropy.\n */\nexport class Mnemonic {\n /**\n * The mnemonic phrase of 12, 15, 18, 21 or 24 words.\n *\n * Use the [[wordlist]] ``split`` method to get the individual words.\n */\n phrase;\n /**\n * The password used for this mnemonic. If no password is used this\n * is the empty string (i.e. ``\"\"``) as per the specification.\n */\n password;\n /**\n * The wordlist for this mnemonic.\n */\n wordlist;\n /**\n * The underlying entropy which the mnemonic encodes.\n */\n entropy;\n /**\n * @private\n */\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = LangEn.wordlist();\n }\n assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n /**\n * Returns the seed for the mnemonic.\n */\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, \"NFKD\");\n return pbkdf2(toUtf8Bytes(this.phrase, \"NFKD\"), salt, 2048, 64, \"sha512\");\n }\n /**\n * Creates a new Mnemonic for the %%phrase%%.\n *\n * The default %%password%% is the empty string and the default\n * wordlist is the [English wordlists](LangEn).\n */\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n /**\n * Create a new **Mnemonic** from the %%entropy%%.\n *\n * The default %%password%% is the empty string and the default\n * wordlist is the [English wordlists](LangEn).\n */\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n /**\n * Returns the phrase for %%mnemonic%%.\n */\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n /**\n * Returns the entropy for %%phrase%%.\n */\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n /**\n * Returns true if %%phrase%% is a valid [[link-bip-39]] phrase.\n *\n * This checks all the provided words belong to the %%wordlist%%,\n * that the length is valid and the checksum is correct.\n */\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\nconst Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n// Transformations for encryption\nconst T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\nconst T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\nconst T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\nconst T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n// Transformations for decryption\nconst T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\nconst T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\nconst T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\nconst T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n// Transformations for decryption key expansion\nconst U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\nconst U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\nconst U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\nconst U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","/**\n * @_ignore\n */\nimport { getBytesCopy, assertArgument, toUtf8Bytes } from \"../utils/index.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === \"string\" && !hexString.startsWith(\"0x\")) {\n hexString = \"0x\" + hexString;\n }\n return getBytesCopy(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, \"NFKC\");\n }\n return getBytesCopy(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n assertArgument(match != null, \"invalid path\", \"path\", _path);\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n assertArgument(!reqd || cur != null, \"missing required value\", \"path\", path);\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n assertArgument(false, `wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\n/*\nexport function uuidV4(randomBytes: BytesLike): string {\n const bytes = getBytes(randomBytes, \"randomBytes\");\n\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n const value = hexlify(bytes);\n\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n*/\n//# sourceMappingURL=utils.js.map","/**\n * The JSON Wallet formats allow a simple way to store the private\n * keys needed in Ethereum along with related information and allows\n * for extensible forms of encryption.\n *\n * These utilities facilitate decrypting and encrypting the most common\n * JSON Wallet formats.\n *\n * @_subsection: api/wallet:JSON Wallets [json-wallets]\n */\nimport { CTR } from \"aes-js\";\nimport { getAddress } from \"../address/index.js\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"../crypto/index.js\";\nimport { computeAddress } from \"../transaction/index.js\";\nimport { concat, getBytes, hexlify, uuidV4, assert, assertArgument } from \"../utils/index.js\";\nimport { getPassword, spelunk, zpad } from \"./utils.js\";\nimport { version } from \"../_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\n/**\n * Returns true if %%json%% is a valid JSON Keystore Wallet.\n */\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n assert(false, \"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n assertArgument(computedMAC === spelunk(data, \"crypto.mac:string!\").toLowerCase(), \"incorrect password\", \"password\", \"[ REDACTED ]\");\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (!check.startsWith(\"0x\")) {\n check = \"0x\" + check;\n }\n assertArgument(getAddress(check) === address, \"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(getBytes(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getDecryptKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Make sure N is a power of 2\n assertArgument(N > 0 && (N & (N - 1)) === 0, \"invalid kdf.N\", \"kdf.N\", N);\n assertArgument(r > 0 && p > 0, \"invalid kdf\", \"kdf\", kdf);\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n assertArgument(dkLen === 32, \"invalid kdf.dklen\", \"kdf.dflen\", dkLen);\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n assertArgument(algorithm === \"sha256\" || algorithm === \"sha512\", \"invalid kdf.pdf\", \"kdf.pdf\", prf);\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n assertArgument(dkLen === 32, \"invalid kdf.dklen\", \"kdf.dklen\", dkLen);\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n assertArgument(false, \"unsupported key-derivation function\", \"kdf\", kdf);\n}\n/**\n * Returns the account details for the JSON Keystore Wallet %%json%%\n * using %%password%%.\n *\n * It is preferred to use the [async version](decryptKeystoreJson)\n * instead, which allows a [[ProgressCallback]] to keep the user informed\n * as to the decryption status.\n *\n * This method will block the event loop (freezing all UI) until decryption\n * is complete, which can take quite some time, depending on the wallet\n * paramters and platform.\n */\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getDecryptKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n assert(params.name === \"scrypt\", \"cannot be reached\", \"UNKNOWN_ERROR\", { params });\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\n/**\n * Resolves to the decrypted JSON Keystore Wallet %%json%% using the\n * %%password%%.\n *\n * If provided, %%progress%% will be called periodically during the\n * decrpytion to provide feedback, and if the function returns\n * ``false`` will halt decryption.\n *\n * The %%progressCallback%% will **always** receive ``0`` before\n * decryption begins and ``1`` when complete.\n */\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getDecryptKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n assert(params.name === \"scrypt\", \"cannot be reached\", \"UNKNOWN_ERROR\", { params });\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n}\nfunction getEncryptKdfParams(options) {\n // Check/generate the salt\n const salt = (options.salt != null) ? getBytes(options.salt, \"options.salt\") : randomBytes(32);\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n assertArgument(typeof (N) === \"number\" && N > 0 && Number.isSafeInteger(N) && (BigInt(N) & BigInt(N - 1)) === BigInt(0), \"invalid scrypt N parameter\", \"options.N\", N);\n assertArgument(typeof (r) === \"number\" && r > 0 && Number.isSafeInteger(r), \"invalid scrypt r parameter\", \"options.r\", r);\n assertArgument(typeof (p) === \"number\" && p > 0 && Number.isSafeInteger(p), \"invalid scrypt p parameter\", \"options.p\", p);\n return { name: \"scrypt\", dkLen: 32, salt, N, r, p };\n}\nfunction _encryptKeystore(key, kdf, account, options) {\n const privateKey = getBytes(account.privateKey, \"privateKey\");\n // Override initialization vector\n const iv = (options.iv != null) ? getBytes(options.iv, \"options.iv\") : randomBytes(16);\n assertArgument(iv.length === 16, \"invalid options.iv length\", \"options.iv\", options.iv);\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n assertArgument(uuidRandom.length === 16, \"invalid options.uuid length\", \"options.uuid\", options.iv);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = getBytes(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(kdf.salt).substring(2),\n n: kdf.N,\n dklen: 32,\n p: kdf.p,\n r: kdf.r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n const mnemonicCiphertext = getBytes(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n/**\n * Return the JSON Keystore Wallet for %%account%% encrypted with\n * %%password%%.\n *\n * The %%options%% can be used to tune the password-based key\n * derivation function parameters, explicitly set the random values\n * used. Any provided [[ProgressCallback]] is ignord.\n */\nexport function encryptKeystoreJsonSync(account, password, options) {\n if (options == null) {\n options = {};\n }\n const passwordBytes = getPassword(password);\n const kdf = getEncryptKdfParams(options);\n const key = scryptSync(passwordBytes, kdf.salt, kdf.N, kdf.r, kdf.p, 64);\n return _encryptKeystore(getBytes(key), kdf, account, options);\n}\n/**\n * Resolved to the JSON Keystore Wallet for %%account%% encrypted\n * with %%password%%.\n *\n * The %%options%% can be used to tune the password-based key\n * derivation function parameters, explicitly set the random values\n * used and provide a [[ProgressCallback]] to receive periodic updates\n * on the completion status..\n */\nexport async function encryptKeystoreJson(account, password, options) {\n if (options == null) {\n options = {};\n }\n const passwordBytes = getPassword(password);\n const kdf = getEncryptKdfParams(options);\n const key = await scrypt(passwordBytes, kdf.salt, kdf.N, kdf.r, kdf.p, 64, options.progressCallback);\n return _encryptKeystore(getBytes(key), kdf, account, options);\n}\n//# sourceMappingURL=json-keystore.js.map","/**\n * Explain HD Wallets..\n *\n * @_subsection: api/wallet:HD Wallets [hd-wallets]\n */\nimport { computeHmac, randomBytes, ripemd160, SigningKey, sha256 } from \"../crypto/index.js\";\nimport { VoidSigner } from \"../providers/index.js\";\nimport { computeAddress } from \"../transaction/index.js\";\nimport { concat, dataSlice, decodeBase58, defineProperties, encodeBase58, getBytes, hexlify, isBytesLike, getNumber, toBeArray, toBigInt, toBeHex, assertPrivate, assert, assertArgument } from \"../utils/index.js\";\nimport { LangEn } from \"../wordlists/lang-en.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { encryptKeystoreJson, encryptKeystoreJsonSync, } from \"./json-keystore.js\";\n/**\n * The default derivation path for Ethereum HD Nodes. (i.e. ``\"m/44'/60'/0'/0/0\"``)\n */\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n assert(privateKey != null, \"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n // Data = 0x00 || ser_256(k_par)\n data.set(getBytes(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(getBytes(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = getBytes(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n assertArgument(components.length > 0, \"invalid path\", \"path\", path);\n if (components[0] === \"m\") {\n assertArgument(node.depth === 0, `cannot derive root path (i.e. path starting with \"m/\") for a node at non-zero depth ${node.depth}`, \"path\", path);\n components.shift();\n }\n let result = node;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n assertArgument(index < HardenedBit, \"invalid path index\", `path[${i}]`, component);\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n assertArgument(index < HardenedBit, \"invalid path index\", `path[${i}]`, component);\n result = result.deriveChild(index);\n }\n else {\n assertArgument(false, \"invalid path component\", `path[${i}]`, component);\n }\n }\n return result;\n}\n/**\n * An **HDNodeWallet** is a [[Signer]] backed by the private key derived\n * from an HD Node using the [[link-bip-32]] stantard.\n *\n * An HD Node forms a hierarchal structure with each HD Node having a\n * private key and the ability to derive child HD Nodes, defined by\n * a path indicating the index of each child.\n */\nexport class HDNodeWallet extends BaseWallet {\n /**\n * The compressed public key.\n */\n publicKey;\n /**\n * The fingerprint.\n *\n * A fingerprint allows quick qay to detect parent and child nodes,\n * but developers should be prepared to deal with collisions as it\n * is only 4 bytes.\n */\n fingerprint;\n /**\n * The parent fingerprint.\n */\n parentFingerprint;\n /**\n * The mnemonic used to create this HD Node, if available.\n *\n * Sources such as extended keys do not encode the mnemonic, in\n * which case this will be ``null``.\n */\n mnemonic;\n /**\n * The chaincode, which is effectively a public key used\n * to derive children.\n */\n chainCode;\n /**\n * The derivation path of this wallet.\n *\n * Since extended keys do not provide full path details, this\n * may be ``null``, if instantiated from a source that does not\n * encode it.\n */\n path;\n /**\n * The child index of this wallet. Values over ``2 *\\* 31`` indicate\n * the node is hardened.\n */\n index;\n /**\n * The depth of this wallet, which is the number of components\n * in its path.\n */\n depth;\n /**\n * @private\n */\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n #account() {\n const account = { address: this.address, privateKey: this.privateKey };\n const m = this.mnemonic;\n if (this.path && m && m.wordlist.locale === \"en\" && m.password === \"\") {\n account.mnemonic = {\n path: this.path,\n locale: \"en\",\n entropy: m.entropy\n };\n }\n return account;\n }\n /**\n * Resolves to a [JSON Keystore Wallet](json-wallets) encrypted with\n * %%password%%.\n *\n * If %%progressCallback%% is specified, it will receive periodic\n * updates as the encryption process progreses.\n */\n async encrypt(password, progressCallback) {\n return await encryptKeystoreJson(this.#account(), password, { progressCallback });\n }\n /**\n * Returns a [JSON Keystore Wallet](json-wallets) encryped with\n * %%password%%.\n *\n * It is preferred to use the [async version](encrypt) instead,\n * which allows a [[ProgressCallback]] to keep the user informed.\n *\n * This method will block the event loop (freezing all UI) until\n * it is complete, which may be a non-trivial duration.\n */\n encryptSync(password) {\n return encryptKeystoreJsonSync(this.#account(), password);\n }\n /**\n * The extended key.\n *\n * This key will begin with the prefix ``xpriv`` and can be used to\n * reconstruct this HD Node to derive its children.\n */\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n assert(this.depth < 256, \"Depth too deep\", \"UNSUPPORTED_OPERATION\", { operation: \"extendedKey\" });\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n /**\n * Returns true if this wallet has a path, providing a Type Guard\n * that the path is non-null.\n */\n hasPath() { return (this.path != null); }\n /**\n * Returns a neutered HD Node, which removes the private details\n * of an HD Node.\n *\n * A neutered node has no private key, but can be used to derive\n * child addresses and other public data about the HD Node.\n */\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n /**\n * Return the child for %%index%%.\n */\n deriveChild(_index) {\n const index = getNumber(_index, \"index\");\n assertArgument(index <= 0xffffffff, \"invalid index\", \"index\", index);\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toBeHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n /**\n * Return the HDNode for %%path%% from this node.\n */\n derivePath(path) {\n return derivePath(this, path);\n }\n static #fromSeed(_seed, mnemonic) {\n assertArgument(isBytesLike(_seed), \"invalid seed\", \"seed\", \"[REDACTED]\");\n const seed = getBytes(_seed, \"seed\");\n assertArgument(seed.length >= 16 && seed.length <= 64, \"invalid seed\", \"seed\", \"[REDACTED]\");\n const I = getBytes(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n }\n /**\n * Creates a new HD Node from %%extendedKey%%.\n *\n * If the %%extendedKey%% will either have a prefix or ``xpub`` or\n * ``xpriv``, returning a neutered HD Node ([[HDNodeVoidWallet]])\n * or full HD Node ([[HDNodeWallet) respectively.\n */\n static fromExtendedKey(extendedKey) {\n const bytes = toBeArray(decodeBase58(extendedKey)); // @TODO: redact\n assertArgument(bytes.length === 82 || encodeBase58Check(bytes.slice(0, 78)) === extendedKey, \"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n assertArgument(false, \"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n /**\n * Creates a new random HDNode.\n */\n static createRandom(password, path, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (path == null) {\n path = defaultPath;\n }\n if (wordlist == null) {\n wordlist = LangEn.wordlist();\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n /**\n * Create an HD Node from %%mnemonic%%.\n */\n static fromMnemonic(mnemonic, path) {\n if (!path) {\n path = defaultPath;\n }\n return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n /**\n * Creates an HD Node from a mnemonic %%phrase%%.\n */\n static fromPhrase(phrase, password, path, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (path == null) {\n path = defaultPath;\n }\n if (wordlist == null) {\n wordlist = LangEn.wordlist();\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n /**\n * Creates an HD Node from a %%seed%%.\n */\n static fromSeed(seed) {\n return HDNodeWallet.#fromSeed(seed, null);\n }\n}\n/**\n * A **HDNodeVoidWallet** cannot sign, but provides access to\n * the children nodes of a [[link-bip-32]] HD wallet addresses.\n *\n * The can be created by using an extended ``xpub`` key to\n * [[HDNodeWallet_fromExtendedKey]] or by\n * [nuetering](HDNodeWallet-neuter) a [[HDNodeWallet]].\n */\nexport class HDNodeVoidWallet extends VoidSigner {\n /**\n * The compressed public key.\n */\n publicKey;\n /**\n * The fingerprint.\n *\n * A fingerprint allows quick qay to detect parent and child nodes,\n * but developers should be prepared to deal with collisions as it\n * is only 4 bytes.\n */\n fingerprint;\n /**\n * The parent node fingerprint.\n */\n parentFingerprint;\n /**\n * The chaincode, which is effectively a public key used\n * to derive children.\n */\n chainCode;\n /**\n * The derivation path of this wallet.\n *\n * Since extended keys do not provider full path details, this\n * may be ``null``, if instantiated from a source that does not\n * enocde it.\n */\n path;\n /**\n * The child index of this wallet. Values over ``2 *\\* 31`` indicate\n * the node is hardened.\n */\n index;\n /**\n * The depth of this wallet, which is the number of components\n * in its path.\n */\n depth;\n /**\n * @private\n */\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n /**\n * The extended key.\n *\n * This key will begin with the prefix ``xpub`` and can be used to\n * reconstruct this neutered key to derive its children addresses.\n */\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n assert(this.depth < 256, \"Depth too deep\", \"UNSUPPORTED_OPERATION\", { operation: \"extendedKey\" });\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n /**\n * Returns true if this wallet has a path, providing a Type Guard\n * that the path is non-null.\n */\n hasPath() { return (this.path != null); }\n /**\n * Return the child for %%index%%.\n */\n deriveChild(_index) {\n const index = getNumber(_index, \"index\");\n assertArgument(index <= 0xffffffff, \"invalid index\", \"index\", index);\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey.addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n /**\n * Return the signer for %%path%% from this node.\n */\n derivePath(path) {\n return derivePath(this, path);\n }\n}\n/*\nexport class HDNodeWalletManager {\n #root: HDNodeWallet;\n\n constructor(phrase: string, password?: null | string, path?: null | string, locale?: null | Wordlist) {\n if (password == null) { password = \"\"; }\n if (path == null) { path = \"m/44'/60'/0'/0\"; }\n if (locale == null) { locale = LangEn.wordlist(); }\n this.#root = HDNodeWallet.fromPhrase(phrase, password, path, locale);\n }\n\n getSigner(index?: number): HDNodeWallet {\n return this.#root.deriveChild((index == null) ? 0: index);\n }\n}\n*/\n/**\n * Returns the [[link-bip-32]] path for the account at %%index%%.\n *\n * This is the pattern used by wallets like Ledger.\n *\n * There is also an [alternate pattern](getIndexedAccountPath) used by\n * some software.\n */\nexport function getAccountPath(_index) {\n const index = getNumber(_index, \"index\");\n assertArgument(index >= 0 && index < HardenedBit, \"invalid account index\", \"index\", index);\n return `m/44'/60'/${index}'/0/0`;\n}\n/**\n * Returns the path using an alternative pattern for deriving accounts,\n * at %%index%%.\n *\n * This derivation path uses the //index// component rather than the\n * //account// component to derive sequential accounts.\n *\n * This is the pattern used by wallets like MetaMask.\n */\nexport function getIndexedAccountPath(_index) {\n const index = getNumber(_index, \"index\");\n assertArgument(index >= 0 && index < HardenedBit, \"invalid account index\", \"index\", index);\n return `m/44'/60'/0'/0/${index}`;\n}\n//# sourceMappingURL=hdwallet.js.map","/**\n * @_subsection: api/wallet:JSON Wallets [json-wallets]\n */\nimport { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"../address/index.js\";\nimport { pbkdf2 } from \"../crypto/index.js\";\nimport { id } from \"../hash/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\n/**\n * Returns true if %%json%% is a valid JSON Crowdsale wallet.\n */\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\n/**\n * Before Ethereum launched, it was necessary to create a wallet\n * format for backers to use, which would be used to receive ether\n * as a reward for contributing to the project.\n *\n * The [[link-crowdsale]] format is now obsolete, but it is still\n * useful to support and the additional code is fairly trivial as\n * all the primitives required are used through core portions of\n * the library.\n */\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n assertArgument(encseed && (encseed.length % 16) === 0, \"invalid encseed\", \"json\", json);\n const key = getBytes(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(getBytes(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","import { SigningKey } from \"../crypto/index.js\";\nimport { assertArgument } from \"../utils/index.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, encryptKeystoreJson, encryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\n/**\n * A **Wallet** manages a single private key which is used to sign\n * transactions, messages and other common payloads.\n *\n * This class is generally the main entry point for developers\n * that wish to use a private key directly, as it can create\n * instances from a large variety of common sources, including\n * raw private key, [[link-bip-39]] mnemonics and encrypte JSON\n * wallets.\n */\nexport class Wallet extends BaseWallet {\n /**\n * Create a new wallet for the private %%key%%, optionally connected\n * to %%provider%%.\n */\n constructor(key, provider) {\n if (typeof (key) === \"string\" && !key.startsWith(\"0x\")) {\n key = \"0x\" + key;\n }\n let signingKey = (typeof (key) === \"string\") ? new SigningKey(key) : key;\n super(signingKey, provider);\n }\n connect(provider) {\n return new Wallet(this.signingKey, provider);\n }\n /**\n * Resolves to a [JSON Keystore Wallet](json-wallets) encrypted with\n * %%password%%.\n *\n * If %%progressCallback%% is specified, it will receive periodic\n * updates as the encryption process progreses.\n */\n async encrypt(password, progressCallback) {\n const account = { address: this.address, privateKey: this.privateKey };\n return await encryptKeystoreJson(account, password, { progressCallback });\n }\n /**\n * Returns a [JSON Keystore Wallet](json-wallets) encryped with\n * %%password%%.\n *\n * It is preferred to use the [async version](encrypt) instead,\n * which allows a [[ProgressCallback]] to keep the user informed.\n *\n * This method will block the event loop (freezing all UI) until\n * it is complete, which may be a non-trivial duration.\n */\n encryptSync(password) {\n const account = { address: this.address, privateKey: this.privateKey };\n return encryptKeystoreJsonSync(account, password);\n }\n static #fromAccount(account) {\n assertArgument(account, \"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n if (\"mnemonic\" in account && account.mnemonic && account.mnemonic.locale === \"en\") {\n const mnemonic = Mnemonic.fromEntropy(account.mnemonic.entropy);\n const wallet = HDNodeWallet.fromMnemonic(mnemonic, account.mnemonic.path);\n if (wallet.address === account.address && wallet.privateKey === account.privateKey) {\n return wallet;\n }\n console.log(\"WARNING: JSON mismatch address/privateKey != mnemonic; fallback onto private key\");\n }\n const wallet = new Wallet(account.privateKey);\n assertArgument(wallet.address === account.address, \"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n return wallet;\n }\n /**\n * Creates (asynchronously) a **Wallet** by decrypting the %%json%%\n * with %%password%%.\n *\n * If %%progress%% is provided, it is called periodically during\n * decryption so that any UI can be updated.\n */\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n return Wallet.#fromAccount(account);\n }\n /**\n * Creates a **Wallet** by decrypting the %%json%% with %%password%%.\n *\n * The [[fromEncryptedJson]] method is preferred, as this method\n * will lock up and freeze the UI during decryption, which may take\n * some time.\n */\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n assertArgument(false, \"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n return Wallet.#fromAccount(account);\n }\n /**\n * Creates a new random [[HDNodeWallet]] using the available\n * [cryptographic random source](randomBytes).\n *\n * If there is no crytographic random source, this will throw.\n */\n static createRandom(provider) {\n const wallet = HDNodeWallet.createRandom();\n if (provider) {\n return wallet.connect(provider);\n }\n return wallet;\n }\n /**\n * Creates a [[HDNodeWallet]] for %%phrase%%.\n */\n static fromPhrase(phrase, provider) {\n const wallet = HDNodeWallet.fromPhrase(phrase);\n if (provider) {\n return wallet.connect(provider);\n }\n return wallet;\n }\n}\n//# sourceMappingURL=wallet.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\n/**\n * @_ignore\n */\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { assertArgument } from \"../utils/index.js\";\nimport { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\n/**\n * @_ignore\n */\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n assertArgument(match !== null, \"internal error parsing accents\", \"accents\", accents);\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\n/**\n * An OWL-A format Wordlist extends the OWL format to add an\n * overlay onto an OWL format Wordlist to support diacritic\n * marks.\n *\n * This class is generally not useful to most developers as\n * it is used mainly internally to keep Wordlists for languages\n * based on latin-1 small.\n *\n * If necessary, there are tools within the ``generation/`` folder\n * to create the necessary data.\n */\nexport class WordlistOwlA extends WordlistOwl {\n #accent;\n /**\n * Creates a new Wordlist for %%locale%% using the OWLA %%data%%\n * and %%accent%% data and validated against the %%checksum%%.\n */\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n this.#accent = accent;\n }\n /**\n * The OWLA-encoded accent data.\n */\n get _accent() { return this.#accent; }\n /**\n * Decode all the words for the wordlist.\n */\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n//# sourceMappingURL=wordlist-owla.js.map","import { LangEn } from \"./lang-en.js\";\nexport const wordlists = {\n en: LangEn.wordlist(),\n};\n//# sourceMappingURL=wordlists-browser.js.map","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","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 isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var 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","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || typeof duration !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0; // Add years and months\n\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date; // Add weeks and days\n\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths; // Add days, hours, minutes and seconds\n\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * const result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\n\nexport default function isWeekend(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day === 0 || day === 6;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\n\nexport default function isSunday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 0;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\n\nexport default function isSaturday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 6;\n}","import isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isSaturday from \"../isSaturday/index.js\";\n/**\n * @name addBusinessDays\n * @category Day Helpers\n * @summary Add the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Add the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 business days to 1 September 2014:\n * const result = addBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function addBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var startedOnWeekend = isWeekend(date);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) return new Date(NaN);\n var hours = date.getHours();\n var sign = amount < 0 ? -1 : 1;\n var fullWeeks = toInteger(amount / 5);\n date.setDate(date.getDate() + fullWeeks * 7); // Get remaining days not part of a full week\n\n var restDays = Math.abs(amount % 5); // Loops over remaining days\n\n while (restDays > 0) {\n date.setDate(date.getDate() + sign);\n if (!isWeekend(date)) restDays -= 1;\n } // If the date is a weekend day and we reduce a dividable of\n // 5 from it, we land on a weekend date.\n // To counter this, we add days accordingly to land on the next business day\n\n\n if (startedOnWeekend && isWeekend(date) && amount !== 0) {\n // If we're reducing days, we want to add days until we land on a weekday\n // If we're adding days we want to reduce days until we land on a weekday\n if (isSaturday(date)) date.setDate(date.getDate() + (sign < 0 ? 2 : -1));\n if (isSunday(date)) date.setDate(date.getDate() + (sign < 0 ? 1 : -2));\n } // Restore hours to avoid DST lag\n\n\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `setISOYear` to `setISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * const result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\n\nexport default function setISOWeekYear(dirtyDate, dirtyISOWeekYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeekYear = toInteger(dirtyISOWeekYear);\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date));\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n date = startOfISOWeekYear(fourthOfJanuary);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport setISOWeekYear from \"../setISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `addISOYears` to `addISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * const result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\n\nexport default function addISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `areRangesOverlapping` to `areIntervalsOverlapping`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n *\n * @example\n * // For adjacent time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }\n * )\n * //=> false\n *\n * @example\n * // Using the inclusive option:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }\n * )\n * //=> false\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },\n * { inclusive: true }\n * )\n * //=> true\n */\n\nexport default function areIntervalsOverlapping(dirtyIntervalLeft, dirtyIntervalRight) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n inclusive: false\n };\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n if (options.inclusive) {\n return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `max` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var maxDate = max(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var maxDate = max(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\n\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `min` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * const date1 = new Date(1989, 6, 10)\n * const date2 = new Date(1987, 1, 11)\n * const minDate = min(date1, date2)\n *\n * // v2.0.0 onward:\n * const dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * const minDate = min(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\n\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import max from \"../max/index.js\";\nimport min from \"../min/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name clamp\n * @category Interval Helpers\n * @summary Return a date bounded by the start and the end of the given interval\n *\n * @description\n * Clamps a date to the lower bound with the start of the interval and the upper\n * bound with the end of the interval.\n *\n * - When the date is less than the start of the interval, the start is returned.\n * - When the date is greater than the end of the interval, the end is returned.\n * - Otherwise the date is returned.\n *\n * @example\n * // What is Mar, 21, 2021 bounded to an interval starting at Mar, 22, 2021 and ending at Apr, 01, 2021\n * const result = clamp(new Date(2021, 2, 21), {\n * start: new Date(2021, 2, 22),\n * end: new Date(2021, 3, 1),\n * })\n * //=> Mon Mar 22 2021 00:00:00\n *\n * @param {Date | Number} date - the date to be bounded\n * @param {Interval} interval - the interval to bound to\n * @returns {Date} the date bounded by the start and the end of the interval\n * @throws {TypeError} 2 arguments required\n */\n\nexport default function clamp(date, _ref) {\n var start = _ref.start,\n end = _ref.end;\n requiredArgs(2, arguments);\n return min([max([date, start]), end]);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestIndexTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date | Number} dateToCompare - the date to compare with\n * @param {Array | Array} datesArray - the array to search\n * @returns {Number | undefined} an index of the date closest to the given date or undefined if no valid value is given\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * const dateToCompare = new Date(2015, 8, 6)\n * const datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * const result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\n\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n if (isNaN(Number(dateToCompare))) return NaN;\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(Number(currentDate))) {\n result = NaN;\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < Number(minDistance)) {\n result = index;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date | Number} dateToCompare - the date to compare with\n * @param {Array | Array} datesArray - the array to search\n * @returns {Date | undefined} the date from the array closest to the given date or undefined if no valid value is given\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * const dateToCompare = new Date(2015, 8, 6)\n * const result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\n\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n if (isNaN(Number(dateToCompare))) return new Date(NaN);\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(Number(currentDate))) {\n result = new Date(NaN);\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < Number(minDistance)) {\n result = currentDate;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * const result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\n\nexport default function compareDesc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff > 0) {\n return -1;\n } else if (diff < 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name daysToWeeks\n * @category Conversion Helpers\n * @summary Convert days to weeks.\n *\n * @description\n * Convert a number of days to a full number of weeks.\n *\n * @param {number} days - number of days to be converted\n *\n * @returns {number} the number of days converted in weeks\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 14 days to weeks:\n * const result = daysToWeeks(14)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = daysToWeeks(13)\n * //=> 1\n */\n\nexport default function daysToWeeks(days) {\n requiredArgs(1, arguments);\n var weeks = days / daysInWeek;\n return Math.floor(weeks);\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import addDays from \"../addDays/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name differenceInBusinessDays\n * @category Day Helpers\n * @summary Get the number of business days between the given dates.\n *\n * @description\n * Get the number of business day periods between the given dates.\n * Business days being days that arent in the weekend.\n * Like `differenceInCalendarDays`, the function removes the times from\n * the dates before calculating the difference.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of business days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many business days are between\n * // 10 January 2014 and 20 July 2014?\n * const result = differenceInBusinessDays(\n * new Date(2014, 6, 20),\n * new Date(2014, 0, 10)\n * )\n * //=> 136\n *\n * // How many business days are between\n * // 1 November 2021 and 30 November 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 10, 30)\n * )\n * //=> 21\n *\n * // How many business days are between\n * // 1 November 2021 and 1 December 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 11, 1)\n * )\n * //=> 22\n *\n * // How many business days are between\n * // 1 November 2021 and 1 November 2021 ?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 10, 1)\n * )\n * //=> 0\n */\n\nexport default function differenceInBusinessDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n if (!isValid(dateLeft) || !isValid(dateRight)) return NaN;\n var calendarDifference = differenceInCalendarDays(dateLeft, dateRight);\n var sign = calendarDifference < 0 ? -1 : 1;\n var weeks = toInteger(calendarDifference / 7);\n var result = weeks * 5;\n dateRight = addDays(dateRight, weeks * 7); // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week\n\n while (!isSameDay(dateLeft, dateRight)) {\n // sign is used to account for both negative and positive differences\n result += isWeekend(dateRight) ? 0 : sign;\n dateRight = addDays(dateRight, sign);\n }\n\n return result === 0 ? 0 : result;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInCalendarISOYears` to `differenceInCalendarISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * const result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * const result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\n\nexport default function differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft);\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight);\n var timestampLeft = startOfISOWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekLeft);\n var timestampRight = startOfISOWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import getQuarter from \"../getQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\n\nexport default function differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight);\n return yearDiff * 4 + quarterDiff;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\n\n\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n\n};\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\n\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addISOWeekYears from \"../addISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `subISOYears` to `subISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * const result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\n\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addISOWeekYears(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarISOWeekYears from \"../differenceInCalendarISOWeekYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport subISOWeekYears from \"../subISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInISOYears` to `differenceInISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\n\nexport default function differenceInISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight));\n dateLeft = subISOWeekYears(dateLeft, sign * difference); // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastISOWeekYearNotFull = Number(compareAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastISOWeekYearNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\n\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - Number(isLastMonthNotFull));\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\n\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\n\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\n\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight)); // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584); // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull)); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n * // v2.0.0 onward\n *\n * eachDayOfInterval(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n * )\n * ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\n\nexport default function eachDayOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n\n return dates;\n}","import addHours from \"../addHours/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name eachHourOfInterval\n * @category Interval Helpers\n * @summary Return the array of hours within the specified time interval.\n *\n * @description\n * Return the array of hours within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of hours from the hour of the interval start to the hour of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each hour between 6 October 2014, 12:00 and 6 October 2014, 15:00\n * var result = eachHourOfInterval({\n * start: new Date(2014, 9, 6, 12),\n * end: new Date(2014, 9, 6, 15)\n * })\n * //=> [\n * // Mon Oct 06 2014 12:00:00,\n * // Mon Oct 06 2014 13:00:00,\n * // Mon Oct 06 2014 14:00:00,\n * // Mon Oct 06 2014 15:00:00\n * // ]\n */\nexport default function eachHourOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setMinutes(0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addHours(currentDate, step);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import addMinutes from \"../addMinutes/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name eachMinuteOfInterval\n * @category Interval Helpers\n * @summary Return the array of minutes within the specified time interval.\n *\n * @description\n * Returns the array of minutes within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The starts of minutes from the hour of the interval start to the hour of the interval end\n * @throws {TypeError} 1 argument requie value should be more than 1.\n * @returns {Date[]} the array withred\n * @throws {RangeError} `options.step` must be a number equal or greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each minute between 14 October 2020, 13:00 and 14 October 2020, 13:03\n * const result = eachMinuteOfInterval({\n * start: new Date(2014, 9, 14, 13),\n * end: new Date(2014, 9, 14, 13, 3)\n * })\n * //=> [\n * // Wed Oct 14 2014 13:00:00,\n * // Wed Oct 14 2014 13:01:00,\n * // Wed Oct 14 2014 13:02:00,\n * // Wed Oct 14 2014 13:03:00\n * // ]\n */\nexport default function eachMinuteOfInterval(interval, options) {\n requiredArgs(1, arguments);\n var startDate = startOfMinute(toDate(interval.start));\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime();\n\n if (startTime >= endTime) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number equal or greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addMinutes(currentDate, step);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * var result = eachMonthOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Sat Feb 01 2014 00:00:00,\n * // Sat Mar 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Thu May 01 2014 00:00:00,\n * // Sun Jun 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // Fri Aug 01 2014 00:00:00\n * // ]\n */\n\nexport default function eachMonthOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n var dates = []; // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setDate(1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setMonth(currentDate.getMonth() + 1);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addQuarters from \"../addQuarters/index.js\";\nimport startOfQuarter from \"../startOfQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * var result = eachQuarterOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // ]\n */\n\nexport default function eachQuarterOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateQuarter = startOfQuarter(startDate);\n var endDateQuarter = startOfQuarter(endDate);\n endTime = endDateQuarter.getTime();\n var quarters = [];\n var currentQuarter = startDateQuarter;\n\n while (currentQuarter.getTime() <= endTime) {\n quarters.push(toDate(currentQuarter));\n currentQuarter = addQuarters(currentQuarter, 1);\n }\n\n return quarters;\n}","import addWeeks from \"../addWeeks/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [\n * // Sun Oct 05 2014 00:00:00,\n * // Sun Oct 12 2014 00:00:00,\n * // Sun Oct 19 2014 00:00:00,\n * // Sun Oct 26 2014 00:00:00,\n * // Sun Nov 02 2014 00:00:00,\n * // Sun Nov 09 2014 00:00:00,\n * // Sun Nov 16 2014 00:00:00,\n * // Sun Nov 23 2014 00:00:00\n * // ]\n */\n\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateWeek = startOfWeek(startDate, options);\n var endDateWeek = startOfWeek(endDate, options); // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n\n startDateWeek.setHours(15);\n endDateWeek.setHours(15);\n endTime = endDateWeek.getTime();\n var weeks = [];\n var currentWeek = startDateWeek;\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0);\n weeks.push(toDate(currentWeek));\n currentWeek = addWeeks(currentWeek, 1);\n currentWeek.setHours(15);\n }\n\n return weeks;\n}","import eachDayOfInterval from \"../eachDayOfInterval/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * const result = eachWeekendOfInterval({\n * start: new Date(2018, 8, 17),\n * end: new Date(2018, 8, 30)\n * })\n * //=> [\n * // Sat Sep 22 2018 00:00:00,\n * // Sun Sep 23 2018 00:00:00,\n * // Sat Sep 29 2018 00:00:00,\n * // Sun Sep 30 2018 00:00:00\n * // ]\n */\n\nexport default function eachWeekendOfInterval(interval) {\n requiredArgs(1, arguments);\n var dateInterval = eachDayOfInterval(interval);\n var weekends = [];\n var index = 0;\n\n while (index < dateInterval.length) {\n var date = dateInterval[index++];\n\n if (isWeekend(date)) {\n weekends.push(date);\n if (isSunday(date)) index = index + 5;\n }\n }\n\n return weekends;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|Number} date - the given month\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * const result = eachWeekendOfMonth(new Date(2022, 1, 1))\n * //=> [\n * // Sat Feb 05 2022 00:00:00,\n * // Sun Feb 06 2022 00:00:00,\n * // Sat Feb 12 2022 00:00:00,\n * // Sun Feb 13 2022 00:00:00,\n * // Sat Feb 19 2022 00:00:00,\n * // Sun Feb 20 2022 00:00:00,\n * // Sat Feb 26 2022 00:00:00,\n * // Sun Feb 27 2022 00:00:00\n * // ]\n */\n\nexport default function eachWeekendOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfMonth(dirtyDate);\n if (isNaN(startDate.getTime())) throw new RangeError('The passed date is invalid');\n var endDate = endOfMonth(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport endOfYear from \"../endOfYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|Number} date - the given year\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * // Sat Jan 03 2020 00:00:00,\n * // Sun Jan 04 2020 00:00:00,\n * // ...\n * // Sun Dec 27 2020 00:00:00\n * // ]\n * ]\n */\n\nexport default function eachWeekendOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfYear(dirtyDate);\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid');\n var endDate = endOfYear(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * const result = eachYearOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2017, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Thu Jan 01 2015 00:00:00,\n * // Fri Jan 01 2016 00:00:00,\n * // Sun Jan 01 2017 00:00:00\n * // ]\n */\n\nexport default function eachYearOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setMonth(0, 1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setFullYear(currentDate.getFullYear() + 1);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * const result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\n\nexport default function endOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade, 11, 31);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\n\nexport default function endOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import endOfWeek from \"../endOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\nexport default function endOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return endOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `endOfISOYear` to `endOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * const result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\n\nexport default function endOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear);\n date.setMilliseconds(date.getMilliseconds() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\n\nexport default function endOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\n\nexport default function endOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}","import endOfDay from \"../endOfDay/index.js\";\n/**\n * @name endOfToday\n * @category Day Helpers\n * @summary Return the end of today.\n * @pure false\n *\n * @description\n * Return the end of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\n\nexport default function endOfToday() {\n return endOfDay(Date.now());\n}","/**\n * @name endOfTomorrow\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n * @pure false\n *\n * @description\n * Return the end of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nexport default function endOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","/**\n * @name endOfYesterday\n * @category Day Helpers\n * @summary Return the end of yesterday.\n * @pure false\n *\n * @description\n * Return the end of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nexport default function endOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import lightFormatters from \"../lightFormatters/index.js\";\nimport getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, delimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\n}","import compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 1000 * 60;\nvar MINUTES_IN_DAY = 60 * 24;\nvar MINUTES_IN_MONTH = MINUTES_IN_DAY * 30;\nvar MINUTES_IN_YEAR = MINUTES_IN_DAY * 365;\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * const result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod);\n var roundingMethodFn;\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft); // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var unit;\n\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(options.unit);\n } // 0 up to 60 seconds\n\n\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions); // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions); // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions); // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && options.unit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions); // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n * ```\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistanceToNow(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}","import formatDistanceStrict from \"../formatDistanceStrict/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * var result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceToNowStrict(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), dirtyOptions);\n}","import defaultLocale from \"../locale/en-US/index.js\";\nvar defaultFormat = ['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];\n\n/**\n * @name formatDuration\n * @category Common Helpers\n * @summary Formats a duration in human-readable format\n *\n * @description\n * Return human-readable duration string i.e. \"9 months 2 days\"\n *\n * @param {Duration} duration - the duration to format\n * @param {Object} [options] - an object with options.\n * @param {string[]} [options.format=['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds']] - the array of units to format\n * @param {boolean} [options.zero=false] - should zeros be included in the output?\n * @param {string} [options.delimiter=' '] - delimiter string\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {string} the formatted date string\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Format full duration\n * formatDuration({\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> '2 years 9 months 1 week 7 days 5 hours 9 minutes 30 seconds'\n *\n * @example\n * // Format partial duration\n * formatDuration({ months: 9, days: 2 })\n * //=> '9 months 2 days'\n *\n * @example\n * // Customize the format\n * formatDuration(\n * {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * },\n * { format: ['months', 'weeks'] }\n * ) === '9 months 1 week'\n *\n * @example\n * // Customize the zeros presence\n * formatDuration({ years: 0, months: 9 })\n * //=> '9 months'\n * formatDuration({ years: 0, months: 9 }, { zero: true })\n * //=> '0 years 9 months'\n *\n * @example\n * // Customize the delimiter\n * formatDuration({ years: 2, months: 9, weeks: 3 }, { delimiter: ', ' })\n * //=> '2 years, 9 months, 3 weeks'\n */\nexport default function formatDuration(duration) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var format = (options === null || options === void 0 ? void 0 : options.format) || defaultFormat;\n var locale = (options === null || options === void 0 ? void 0 : options.locale) || defaultLocale;\n var zero = (options === null || options === void 0 ? void 0 : options.zero) || false;\n var delimiter = (options === null || options === void 0 ? void 0 : options.delimiter) || ' ';\n var result = format.reduce(function (acc, unit) {\n var token = \"x\".concat(unit.replace(/(^.)/, function (m) {\n return m.toUpperCase();\n }));\n var addChunk = typeof duration[unit] === 'number' && (zero || duration[unit]);\n return addChunk && locale.formatDistance ? acc.concat(locale.formatDistance(token, duration[unit])) : acc;\n }, []).join(delimiter);\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\n\nexport default function formatISO(date, options) {\n requiredArgs(1, arguments);\n var originalDate = toDate(date);\n\n if (isNaN(originalDate.getTime())) {\n throw new RangeError('Invalid time value');\n }\n\n var format = !(options !== null && options !== void 0 && options.format) ? 'extended' : String(options.format);\n var representation = !(options !== null && options !== void 0 && options.representation) ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with 'T'\n\n var separator = result === '' ? '' : 'T'; // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n\n var time = [hour, minute, second].join(timeDelimiter); // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\n/**\n * @name formatISO9075\n * @category Common Helpers\n * @summary Format the date according to the ISO 9075 standard (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_get-format).\n *\n * @description\n * Return the formatted date string in ISO 9075 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18 19:00:52'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075, short format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918 190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, date only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, time only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52'\n */\n\nexport default function formatISO9075(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var format = options.format == null ? 'extended' : String(options.format);\n var representation = options.representation == null ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with a space\n\n var separator = result === '' ? '' : ' '; // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(hour).concat(timeDelimiter).concat(minute).concat(timeDelimiter).concat(second);\n }\n\n return result;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISODuration\n * @category Common Helpers\n * @summary Format a duration object according as ISO 8601 duration string\n *\n * @description\n * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)\n *\n * @param {Duration} duration - the duration to format\n *\n * @returns {String} The ISO 8601 duration string\n * @throws {TypeError} Requires 1 argument\n * @throws {Error} Argument must be an object\n *\n * @example\n * // Format the given duration as ISO 8601 string\n * const result = formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\n\nexport default function formatISODuration(duration) {\n requiredArgs(1, arguments);\n if (typeof duration !== 'object') throw new Error('Duration must be an object');\n var _duration$years = duration.years,\n years = _duration$years === void 0 ? 0 : _duration$years,\n _duration$months = duration.months,\n months = _duration$months === void 0 ? 0 : _duration$months,\n _duration$days = duration.days,\n days = _duration$days === void 0 ? 0 : _duration$days,\n _duration$hours = duration.hours,\n hours = _duration$hours === void 0 ? 0 : _duration$hours,\n _duration$minutes = duration.minutes,\n minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,\n _duration$seconds = duration.seconds,\n seconds = _duration$seconds === void 0 ? 0 : _duration$seconds;\n return \"P\".concat(years, \"Y\").concat(months, \"M\").concat(days, \"DT\").concat(hours, \"H\").concat(minutes, \"M\").concat(seconds, \"S\");\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n\n/**\n * @name formatRFC3339\n * @category Common Helpers\n * @summary Format the date according to the RFC 3339 standard (https://tools.ietf.org/html/rfc3339#section-5.6).\n *\n * @description\n * Return the formatted date string in RFC 3339 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3} [options.fractionDigits=0] - number of digits after the decimal point after seconds\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.fractionDigits` must be between 0 and 3\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 2 digits of second fraction:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 2 })\n * //=> '2019-09-18T19:00:52.23Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 3 digits of second fraction\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 3 })\n * //=> '2019-09-18T19:00:52.234Z'\n */\nexport default function formatRFC3339(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var _ref = dirtyOptions || {},\n _ref$fractionDigits = _ref.fractionDigits,\n fractionDigits = _ref$fractionDigits === void 0 ? 0 : _ref$fractionDigits; // Test if fractionDigits is between 0 and 3 _and_ is not NaN\n\n\n if (!(fractionDigits >= 0 && fractionDigits <= 3)) {\n throw new RangeError('fractionDigits must be between 0 and 3 inclusively');\n }\n\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = originalDate.getFullYear();\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n var fractionalSecond = '';\n\n if (fractionDigits > 0) {\n var milliseconds = originalDate.getMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, fractionDigits - 3));\n fractionalSecond = '.' + addLeadingZeros(fractionalSeconds, fractionDigits);\n }\n\n var offset = '';\n var tzOffset = originalDate.getTimezoneOffset();\n\n if (tzOffset !== 0) {\n var absoluteOffset = Math.abs(tzOffset);\n var hourOffset = addLeadingZeros(toInteger(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = tzOffset < 0 ? '+' : '-';\n offset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n offset = 'Z';\n }\n\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second).concat(fractionalSecond).concat(offset);\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nvar days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n/**\n * @name formatRFC7231\n * @category Common Helpers\n * @summary Format the date according to the RFC 7231 standard (https://tools.ietf.org/html/rfc7231#section-7.1.1.1).\n *\n * @description\n * Return the formatted date string in RFC 7231 format.\n * The result will always be in UTC timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 18 September 2019 in RFC 7231 format:\n * const result = formatRFC7231(new Date(2019, 8, 18, 19, 0, 52))\n * //=> 'Wed, 18 Sep 2019 19:00:52 GMT'\n */\n\nexport default function formatRFC7231(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var dayName = days[originalDate.getUTCDay()];\n var dayOfMonth = addLeadingZeros(originalDate.getUTCDate(), 2);\n var monthName = months[originalDate.getUTCMonth()];\n var year = originalDate.getUTCFullYear();\n var hour = addLeadingZeros(originalDate.getUTCHours(), 2);\n var minute = addLeadingZeros(originalDate.getUTCMinutes(), 2);\n var second = addLeadingZeros(originalDate.getUTCSeconds(), 2); // Result variables.\n\n return \"\".concat(dayName, \", \").concat(dayOfMonth, \" \").concat(monthName, \" \").concat(year, \" \").concat(hour, \":\").concat(minute, \":\").concat(second, \" GMT\");\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport format from \"../format/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n *\n * @example\n * // Represent the date of 6 days ago in words relative to the given base date. In this example, today is Wednesday\n * const result = formatRelative(addDays(new Date(), -6), new Date())\n * //=> \"last Thursday at 12:45 AM\"\n */\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var baseDate = toDate(dirtyBaseDate);\n\n var _ref = dirtyOptions || {},\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? defaultLocale : _ref$locale,\n _ref$weekStartsOn = _ref.weekStartsOn,\n weekStartsOn = _ref$weekStartsOn === void 0 ? 0 : _ref$weekStartsOn;\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property');\n }\n\n var diff = differenceInCalendarDays(date, baseDate);\n\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value');\n }\n\n var token;\n\n if (diff < -6) {\n token = 'other';\n } else if (diff < -1) {\n token = 'lastWeek';\n } else if (diff < 0) {\n token = 'yesterday';\n } else if (diff < 1) {\n token = 'today';\n } else if (diff < 2) {\n token = 'tomorrow';\n } else if (diff < 7) {\n token = 'nextWeek';\n } else {\n token = 'other';\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n return format(date, formatStr, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp (in seconds). Decimal values will be discarded.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Number} unixTime - the given Unix timestamp (in seconds)\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * const result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\n\nexport default function fromUnixTime(dirtyUnixTime) {\n requiredArgs(1, arguments);\n var unixTime = toInteger(dirtyUnixTime);\n return toDate(unixTime * 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\n\nexport default function getDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = differenceInCalendarDays(date, startOfYear(date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\n\nexport default function isLeapYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import toDate from \"../toDate/index.js\";\nimport isLeapYear from \"../isLeapYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in 2012?\n * const result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\n\nexport default function getDaysInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n\n if (String(new Date(date)) === 'Invalid Date') {\n return NaN;\n }\n\n return isLeapYear(date) ? 366 : 365;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * const result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\n\nexport default function getDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n return decade;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\n\nexport default function getISODay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * const result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\n\nexport default function getISOWeeksInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var thisYear = startOfISOWeekYear(dirtyDate);\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60));\n var diff = nextYear.valueOf() - thisYear.valueOf(); // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * const result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\n\nexport default function getMilliseconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = date.getMilliseconds();\n return milliseconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\n\nexport default function getOverlappingDaysInIntervals(dirtyIntervalLeft, dirtyIntervalRight) {\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n\n if (!isOverlapping) {\n return 0;\n }\n\n var overlapStartDate = rightStartTime < leftStartTime ? leftStartTime : rightStartTime;\n var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime;\n var differenceInMs = overlapEndDate - overlapStartDate;\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\n\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\n\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, options) {\n var _options$locale, _options$locale$optio;\n\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var localeFirstWeekContainsDate = options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = (options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, dirtyOptions);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getDate from \"../getDate/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\n\nexport default function getWeekOfMonth(date, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var currentDayOfMonth = getDate(date);\n\n if (isNaN(currentDayOfMonth)) {\n return currentDayOfMonth;\n }\n\n var startWeekDay = getDay(startOfMonth(date));\n var lastDayOfFirstWeek = 0;\n\n if (startWeekDay >= weekStartsOn) {\n lastDayOfFirstWeek = weekStartsOn + 7 - startWeekDay;\n } else {\n lastDayOfFirstWeek = weekStartsOn - startWeekDay;\n }\n\n var weekNumber = 1;\n\n if (currentDayOfMonth > lastDayOfFirstWeek) {\n var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek;\n weekNumber = weekNumber + Math.ceil(remainingDaysAfterFirstWeek / 7);\n }\n\n return weekNumber;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport lastDayOfMonth from \"../lastDayOfMonth/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * const result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMilliseconds\n * @category Conversion Helpers\n * @summary Convert hours to milliseconds.\n *\n * @description\n * Convert a number of hours to a full number of milliseconds.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted to milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to milliseconds:\n * const result = hoursToMilliseconds(2)\n * //=> 7200000\n */\n\nexport default function hoursToMilliseconds(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * millisecondsInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMinutes\n * @category Conversion Helpers\n * @summary Convert hours to minutes.\n *\n * @description\n * Convert a number of hours to a full number of minutes.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to minutes:\n * const result = hoursToMinutes(2)\n * //=> 120\n */\n\nexport default function hoursToMinutes(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * minutesInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInHour } from \"../constants/index.js\";\n/**\n * @name hoursToSeconds\n * @category Conversion Helpers\n * @summary Convert hours to seconds.\n *\n * @description\n * Convert a number of hours to a full number of seconds.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to seconds:\n * const result = hoursToSeconds(2)\n * //=> 7200\n */\n\nexport default function hoursToSeconds(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * secondsInHour);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\n\nexport default function sub(date, duration) {\n requiredArgs(2, arguments);\n if (!duration || typeof duration !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0; // Subtract years and months\n\n var dateWithoutMonths = subMonths(date, months + years * 12); // Subtract weeks and days\n\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7); // Subtract hours, minutes and seconds\n\n var minutestoSub = minutes + hours * 60;\n var secondstoSub = seconds + minutestoSub * 60;\n var mstoSub = secondstoSub * 1000;\n var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n return finalDate;\n}","import compareAsc from \"../compareAsc/index.js\";\nimport differenceInYears from \"../differenceInYears/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInDays from \"../differenceInDays/index.js\";\nimport differenceInHours from \"../differenceInHours/index.js\";\nimport differenceInMinutes from \"../differenceInMinutes/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport sub from \"../sub/index.js\";\n/**\n * @name intervalToDuration\n * @category Common Helpers\n * @summary Convert interval to duration\n *\n * @description\n * Convert a interval object to a duration object.\n *\n * @param {Interval} interval - the interval to convert to duration\n *\n * @returns {Duration} The duration Object\n * @throws {TypeError} Requires 2 arguments\n * @throws {RangeError} `start` must not be Invalid Date\n * @throws {RangeError} `end` must not be Invalid Date\n *\n * @example\n * // Get the duration between January 15, 1929 and April 4, 1968.\n * intervalToDuration({\n * start: new Date(1929, 0, 15, 12, 0, 0),\n * end: new Date(1968, 3, 4, 19, 5, 0)\n * })\n * // => { years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 }\n */\n\nexport default function intervalToDuration(_ref) {\n var start = _ref.start,\n end = _ref.end;\n requiredArgs(1, arguments);\n var dateLeft = toDate(start);\n var dateRight = toDate(end);\n\n if (!isValid(dateLeft)) {\n throw new RangeError('Start Date is invalid');\n }\n\n if (!isValid(dateRight)) {\n throw new RangeError('End Date is invalid');\n }\n\n var duration = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n var sign = compareAsc(dateLeft, dateRight);\n duration.years = Math.abs(differenceInYears(dateLeft, dateRight));\n var remainingMonths = sub(dateLeft, {\n years: sign * duration.years\n });\n duration.months = Math.abs(differenceInMonths(remainingMonths, dateRight));\n var remainingDays = sub(remainingMonths, {\n months: sign * duration.months\n });\n duration.days = Math.abs(differenceInDays(remainingDays, dateRight));\n var remainingHours = sub(remainingDays, {\n days: sign * duration.days\n });\n duration.hours = Math.abs(differenceInHours(remainingHours, dateRight));\n var remainingMinutes = sub(remainingHours, {\n hours: sign * duration.hours\n });\n duration.minutes = Math.abs(differenceInMinutes(remainingMinutes, dateRight));\n var remainingSeconds = sub(remainingMinutes, {\n minutes: sign * duration.minutes\n });\n duration.seconds = Math.abs(differenceInSeconds(remainingSeconds, dateRight));\n return duration;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name intlFormat\n * @category Common Helpers\n * @summary Format the date with Intl.DateTimeFormat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat).\n *\n * @description\n * Return the formatted date string in the given format.\n * The method uses [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) inside.\n * formatOptions are the same as [`Intl.DateTimeFormat` options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options)\n *\n * > ⚠️ Please note that before Node version 13.0.0, only the locale data for en-US is available by default.\n *\n * @param {Date|Number} argument - the original date.\n * @param {Object} [formatOptions] - an object with options.\n * @param {'lookup'|'best fit'} [formatOptions.localeMatcher='best fit'] - locale selection algorithm.\n * @param {'narrow'|'short'|'long'} [formatOptions.weekday] - representation the days of the week.\n * @param {'narrow'|'short'|'long'} [formatOptions.era] - representation of eras.\n * @param {'numeric'|'2-digit'} [formatOptions.year] - representation of years.\n * @param {'numeric'|'2-digit'|'narrow'|'short'|'long'} [formatOptions.month='numeric'] - representation of month.\n * @param {'numeric'|'2-digit'} [formatOptions.day='numeric'] - representation of day.\n * @param {'numeric'|'2-digit'} [formatOptions.hour='numeric'] - representation of hours.\n * @param {'numeric'|'2-digit'} [formatOptions.minute] - representation of minutes.\n * @param {'numeric'|'2-digit'} [formatOptions.second] - representation of seconds.\n * @param {'short'|'long'} [formatOptions.timeZoneName] - representation of names of time zones.\n * @param {'basic'|'best fit'} [formatOptions.formatMatcher='best fit'] - format selection algorithm.\n * @param {Boolean} [formatOptions.hour12] - determines whether to use 12-hour time format.\n * @param {String} [formatOptions.timeZone] - the time zone to use.\n * @param {Object} [localeOptions] - an object with locale.\n * @param {String|String[]} [localeOptions.locale] - the locale code\n * @returns {String} the formatted date string.\n * @throws {TypeError} 1 argument required.\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 10 October 2019 in German.\n * // Convert the date with format's options and locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * weekday: 'long',\n * year: 'numeric',\n * month: 'long',\n * day: 'numeric',\n * }, {\n * locale: 'de-DE',\n * })\n * //=> Freitag, 4. Oktober 2019\n *\n * @example\n * // Represent 10 October 2019.\n * // Convert the date with format's options.\n * const result = intlFormat.default(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * year: 'numeric',\n * month: 'numeric',\n * day: 'numeric',\n * hour: 'numeric',\n * })\n * //=> 10/4/2019, 12 PM\n *\n * @example\n * // Represent 10 October 2019 in Korean.\n * // Convert the date with locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * locale: 'ko-KR',\n * })\n * //=> 2019. 10. 4.\n *\n * @example\n * // Represent 10 October 2019 in middle-endian format:\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456))\n * //=> 10/4/2019\n */\nexport default function intlFormat(date, formatOrLocale, localeOptions) {\n var _localeOptions;\n\n requiredArgs(1, arguments);\n var formatOptions;\n\n if (isFormatOptions(formatOrLocale)) {\n formatOptions = formatOrLocale;\n } else {\n localeOptions = formatOrLocale;\n }\n\n return new Intl.DateTimeFormat((_localeOptions = localeOptions) === null || _localeOptions === void 0 ? void 0 : _localeOptions.locale, formatOptions).format(date);\n}\n\nfunction isFormatOptions(opts) {\n return opts !== undefined && !('locale' in opts);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","/**\n * @name isExists\n * @category Common Helpers\n * @summary Is the given date exists?\n *\n * @description\n * Checks if the given arguments convert to an existing date.\n *\n * @param {Number} year of the date to check\n * @param {Number} month of the date to check\n * @param {Number} day of the date to check\n * @returns {Boolean} the date exists\n * @throws {TypeError} 3 arguments required\n *\n * @example\n * // For the valid date:\n * var result = isExists(2018, 0, 31)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isExists(2018, 1, 31)\n * //=> false\n */\nexport default function isExists(year, month, day) {\n if (arguments.length < 3) {\n throw new TypeError('3 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\n\nexport default function isFirstDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDate() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\n\nexport default function isFriday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 5;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFuture\n * @category Common Helpers\n * @summary Is the given date in the future?\n * @pure false\n *\n * @description\n * Is the given date in the future?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\n\nexport default function isFuture(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() > Date.now();\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward (toDate no longer accepts a string)\n * toDate(1392098430000) // Unix to timestamp\n * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import parse from \"../parse/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isMatch\n * @category Common Helpers\n * @summary validates the date string against given formats\n *\n * @description\n * Return the true if given date is string correct against the given format else\n * will return false.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * isMatch('23 AM', 'HH a')\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `isMatch` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `isMatch` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `isMatch` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `isMatch('50', 'yy') //=> true`\n *\n * `isMatch('75', 'yy') //=> true`\n *\n * while `uu` will use the year as is:\n *\n * `isMatch('50', 'uu') //=> true`\n *\n * `isMatch('75', 'uu') //=> true`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be checked in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are matched (e.g. when matching string 'January 1st' without a year),\n * the values will be taken from today's using `new Date()` date which works as a context of parsing.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n *\n *\n * @param {String} dateString - the date string to verify\n * @param {String} formatString - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Boolean}\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Match 11 February 2014 from middle-endian format:\n * var result = isMatch('02/11/2014', 'MM/dd/yyyy')\n * //=> true\n *\n * @example\n * // Match 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = isMatch('28-a de februaro', \"do 'de' MMMM\", {\n * locale: eo\n * })\n * //=> true\n */\nexport default function isMatch(dateString, formatString, options) {\n requiredArgs(2, arguments);\n return isValid(parse(dateString, formatString, new Date(), options));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\n\nexport default function isMonday(date) {\n requiredArgs(1, arguments);\n return toDate(date).getDay() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isPast\n * @category Common Helpers\n * @summary Is the given date in the past?\n * @pure false\n *\n * @description\n * Is the given date in the past?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isPast(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() < Date.now();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import startOfHour from \"../startOfHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n */\n\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n */\nexport default function isSameWeek(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n */\n\nexport default function isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {\n weekStartsOn: 1\n });\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isSameISOYear` to `isSameISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\n\nexport default function isSameISOWeekYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft);\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight);\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime();\n}","import startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\n\nexport default function isSameMinute(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft);\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight);\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\n\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n */\n\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import startOfSecond from \"../startOfSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\n\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isSameHour from \"../isSameHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisHour\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\n\nexport default function isThisHour(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameHour(Date.now(), dirtyDate);\n}","import isSameISOWeek from \"../isSameISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisISOWeek\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\n\nexport default function isThisISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameISOWeek(dirtyDate, Date.now());\n}","import isSameMinute from \"../isSameMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMinute\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\n\nexport default function isThisMinute(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMinute(Date.now(), dirtyDate);\n}","import isSameMonth from \"../isSameMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMonth\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\n\nexport default function isThisMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMonth(Date.now(), dirtyDate);\n}","import isSameQuarter from \"../isSameQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisQuarter\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isThisQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameQuarter(Date.now(), dirtyDate);\n}","import isSameSecond from \"../isSameSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisSecond\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\n\nexport default function isThisSecond(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameSecond(Date.now(), dirtyDate);\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isThisWeek\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21), { weekStartsOn: 1 })\n * //=> false\n */\nexport default function isThisWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n return isSameWeek(dirtyDate, Date.now(), options);\n}","import isSameYear from \"../isSameYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisYear\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isThisYear(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameYear(dirtyDate, Date.now());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isThursday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 4;\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import addDays from \"../addDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTomorrow\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n * @pure false\n *\n * @description\n * Is the given date tomorrow?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\n\nexport default function isTomorrow(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, addDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\n\nexport default function isTuesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 2;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * const result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\n\nexport default function isWednesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 3;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n return time >= startTime && time <= endTime;\n}","import isSameDay from \"../isSameDay/index.js\";\nimport subDays from \"../subDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\n\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\n\nexport default function lastDayOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + diff);\n return date;\n}","import lastDayOfWeek from \"../lastDayOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function lastDayOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return lastDayOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `lastDayOfISOYear` to `lastDayOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\n\nexport default function lastDayOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year + 1, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n date.setDate(date.getDate() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\n\nexport default function lastDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/lightFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM | a..aaa | AM, PM |\n * | | aaaa | a.m., p.m. |\n * | | aaaaa | a, p |\n * | Calendar year | y | 44, 1, 1900, 2017 |\n * | | yy | 44, 01, 00, 17 |\n * | | yyy | 044, 001, 000, 017 |\n * | | yyyy | 0044, 0001, 1900, 2017 |\n * | Month (formatting) | M | 1, 2, ..., 12 |\n * | | MM | 01, 02, ..., 12 |\n * | Day of month | d | 1, 2, ..., 31 |\n * | | dd | 01, 02, ..., 31 |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 |\n * | | hh | 01, 02, ..., 11, 12 |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 |\n * | | HH | 00, 01, 02, ..., 23 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | Fraction of second | S | 0, 1, ..., 9 |\n * | | SS | 00, 01, ..., 99 |\n * | | SSS | 000, 0001, ..., 999 |\n * | | SSSS | ... |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * const result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '2014-02-11'\n */\n\nexport default function lightFormat(dirtyDate, formatStr) {\n requiredArgs(2, arguments);\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var tokens = formatStr.match(formattingTokensRegExp); // The only case when formattingTokensRegExp doesn't match the string is when it's empty\n\n if (!tokens) return '';\n var result = tokens.map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n return formatter(utcDate, substring);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n var matches = input.match(escapedStringRegExp);\n\n if (!matches) {\n return input;\n }\n\n return matches[1].replace(doubleQuoteRegExp, \"'\");\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n// Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n// 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\nvar daysInYear = 365.2425;\n/**\n * @name milliseconds\n * @category Millisecond Helpers\n * @summary\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * @description\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * One month is a year divided by 12.\n *\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // 1 year in milliseconds\n * milliseconds({ years: 1 })\n * //=> 31556952000\n *\n * // 3 months in milliseconds\n * milliseconds({ months: 3 })\n * //=> 7889238000\n */\n\nexport default function milliseconds(_ref) {\n var years = _ref.years,\n months = _ref.months,\n weeks = _ref.weeks,\n days = _ref.days,\n hours = _ref.hours,\n minutes = _ref.minutes,\n seconds = _ref.seconds;\n requiredArgs(1, arguments);\n var totalDays = 0;\n if (years) totalDays += years * daysInYear;\n if (months) totalDays += months * (daysInYear / 12);\n if (weeks) totalDays += weeks * 7;\n if (days) totalDays += days;\n var totalSeconds = totalDays * 24 * 60 * 60;\n if (hours) totalSeconds += hours * 60 * 60;\n if (minutes) totalSeconds += minutes * 60;\n if (seconds) totalSeconds += seconds;\n return Math.round(totalSeconds * 1000);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name millisecondsToHours\n * @category Conversion Helpers\n * @summary Convert milliseconds to hours.\n *\n * @description\n * Convert a number of milliseconds to a full number of hours.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200000 milliseconds to hours:\n * const result = millisecondsToHours(7200000)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToHours(7199999)\n * //=> 1\n */\n\nexport default function millisecondsToHours(milliseconds) {\n requiredArgs(1, arguments);\n var hours = milliseconds / millisecondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name millisecondsToMinutes\n * @category Conversion Helpers\n * @summary Convert milliseconds to minutes.\n *\n * @description\n * Convert a number of milliseconds to a full number of minutes.\n *\n * @param {number} milliseconds - number of milliseconds to be converted.\n *\n * @returns {number} the number of milliseconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 60000 milliseconds to minutes:\n * const result = millisecondsToMinutes(60000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToMinutes(119999)\n * //=> 1\n */\n\nexport default function millisecondsToMinutes(milliseconds) {\n requiredArgs(1, arguments);\n var minutes = milliseconds / millisecondsInMinute;\n return Math.floor(minutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name millisecondsToSeconds\n * @category Conversion Helpers\n * @summary Convert milliseconds to seconds.\n *\n * @description\n * Convert a number of milliseconds to a full number of seconds.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 1000 miliseconds to seconds:\n * const result = millisecondsToSeconds(1000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToSeconds(1999)\n * //=> 1\n */\n\nexport default function millisecondsToSeconds(milliseconds) {\n requiredArgs(1, arguments);\n var seconds = milliseconds / millisecondsInSecond;\n return Math.floor(seconds);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name minutesToHours\n * @category Conversion Helpers\n * @summary Convert minutes to hours.\n *\n * @description\n * Convert a number of minutes to a full number of hours.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 140 minutes to hours:\n * const result = minutesToHours(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = minutesToHours(179)\n * //=> 2\n */\n\nexport default function minutesToHours(minutes) {\n requiredArgs(1, arguments);\n var hours = minutes / minutesInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToMilliseconds\n * @category Conversion Helpers\n * @summary Convert minutes to milliseconds.\n *\n * @description\n * Convert a number of minutes to a full number of milliseconds.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to milliseconds\n * const result = minutesToMilliseconds(2)\n * //=> 120000\n */\n\nexport default function minutesToMilliseconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * millisecondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToSeconds\n * @category Conversion Helpers\n * @summary Convert minutes to seconds.\n *\n * @description\n * Convert a number of minutes to a full number of seconds.\n *\n * @param { number } minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to seconds\n * const result = minutesToSeconds(2)\n * //=> 120\n */\n\nexport default function minutesToSeconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * secondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name monthsToQuarters\n * @category Conversion Helpers\n * @summary Convert number of months to quarters.\n *\n * @description\n * Convert a number of months to a full number of quarters.\n *\n * @param {number} months - number of months to be converted.\n *\n * @returns {number} the number of months converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 6 months to quarters:\n * const result = monthsToQuarters(6)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = monthsToQuarters(7)\n * //=> 2\n */\n\nexport default function monthsToQuarters(months) {\n requiredArgs(1, arguments);\n var quarters = months / monthsInQuarter;\n return Math.floor(quarters);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name monthsToYears\n * @category Conversion Helpers\n * @summary Convert number of months to years.\n *\n * @description\n * Convert a number of months to a full number of years.\n *\n * @param {number} months - number of months to be converted\n *\n * @returns {number} the number of months converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 36 months to years:\n * const result = monthsToYears(36)\n * //=> 3\n *\n * // It uses floor rounding:\n * const result = monthsToYears(40)\n * //=> 3\n */\n\nexport default function monthsToYears(months) {\n requiredArgs(1, arguments);\n var years = months / monthsInYear;\n return Math.floor(years);\n}","import addDays from \"../addDays/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextDay\n * @category Weekday Helpers\n * @summary When is the next day of the week?\n *\n * @description\n * When is the next day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {Day} day - day of the week\n * @returns {Date} - the date is the next day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the next Monday after Mar, 20, 2020?\n * const result = nextDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 23 2020 00:00:00\n *\n * @example\n * // When is the next Tuesday after Mar, 21, 2020?\n * const result = nextDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 24 2020 00:00:00\n */\n\nexport default function nextDay(date, day) {\n requiredArgs(2, arguments);\n var delta = day - getDay(date);\n if (delta <= 0) delta += 7;\n return addDays(date, delta);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextFriday\n * @category Weekday Helpers\n * @summary When is the next Friday?\n *\n * @description\n * When is the next Friday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Friday after Mar, 22, 2020?\n * const result = nextFriday(new Date(2020, 2, 22))\n * //=> Fri Mar 27 2020 00:00:00\n */\n\nexport default function nextFriday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 5);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextMonday\n * @category Weekday Helpers\n * @summary When is the next Monday?\n *\n * @description\n * When is the next Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Monday after Mar, 22, 2020?\n * const result = nextMonday(new Date(2020, 2, 22))\n * //=> Mon Mar 23 2020 00:00:00\n */\n\nexport default function nextMonday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 1);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextSaturday\n * @category Weekday Helpers\n * @summary When is the next Saturday?\n *\n * @description\n * When is the next Saturday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Saturday after Mar, 22, 2020?\n * const result = nextSaturday(new Date(2020, 2, 22))\n * //=> Sat Mar 28 2020 00:00:00\n */\n\nexport default function nextSaturday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 6);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextSunday\n * @category Weekday Helpers\n * @summary When is the next Sunday?\n *\n * @description\n * When is the next Sunday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Sunday after Mar, 22, 2020?\n * const result = nextSunday(new Date(2020, 2, 22))\n * //=> Sun Mar 29 2020 00:00:00\n */\n\nexport default function nextSunday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 0);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextThursday\n * @category Weekday Helpers\n * @summary When is the next Thursday?\n *\n * @description\n * When is the next Thursday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Thursday after Mar, 22, 2020?\n * const result = nextThursday(new Date(2020, 2, 22))\n * //=> Thur Mar 26 2020 00:00:00\n */\n\nexport default function nextThursday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 4);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextTuesday\n * @category Weekday Helpers\n * @summary When is the next Tuesday?\n *\n * @description\n * When is the next Tuesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Tuesday after Mar, 22, 2020?\n * const result = nextTuesday(new Date(2020, 2, 22))\n * //=> Tue Mar 24 2020 00:00:00\n */\n\nexport default function nextTuesday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 2);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextWednesday\n * @category Weekday Helpers\n * @summary When is the next Wednesday?\n *\n * @description\n * When is the next Wednesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Wednesday after Mar, 22, 2020?\n * const result = nextWednesday(new Date(2020, 2, 22))\n * //=> Wed Mar 25 2020 00:00:00\n */\n\nexport default function nextWednesday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (isNaN(date) || !date) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time) || time === null) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: null\n };\n var year = captures[1] && parseInt(captures[1]);\n var century = captures[2] && parseInt(captures[2]);\n return {\n year: century == null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return null;\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return null;\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return null; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name parseJSON\n * @category Common Helpers\n * @summary Parse a JSON date string\n *\n * @description\n * Converts a complete ISO date string in UTC time, the typical format for transmitting\n * a date in JSON, to a JavaScript `Date` instance.\n *\n * This is a minimal implementation for converting dates retrieved from a JSON API to\n * a `Date` instance which can be used with other functions in the `date-fns` library.\n * The following formats are supported:\n *\n * - `2000-03-15T05:20:10.123Z`: The output of `.toISOString()` and `JSON.stringify(new Date())`\n * - `2000-03-15T05:20:10Z`: Without milliseconds\n * - `2000-03-15T05:20:10+00:00`: With a zero offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+05:45`: With a positive or negative offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+0000`: With a zero offset without a colon\n * - `2000-03-15T05:20:10`: Without a trailing 'Z' symbol\n * - `2000-03-15T05:20:10.1234567`: Up to 7 digits in milliseconds field. Only first 3 are taken into account since JS does not allow fractional milliseconds\n * - `2000-03-15 05:20:10`: With a space instead of a 'T' separator for APIs returning a SQL date without reformatting\n *\n * For convenience and ease of use these other input types are also supported\n * via [toDate]{@link https://date-fns.org/docs/toDate}:\n *\n * - A `Date` instance will be cloned\n * - A `number` will be treated as a timestamp\n *\n * Any other input type or invalid date strings will return an `Invalid Date`.\n *\n * @param {String|Number|Date} argument A fully formed ISO8601 date string to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n */\n\nexport default function parseJSON(argument) {\n requiredArgs(1, arguments);\n\n if (typeof argument === 'string') {\n var parts = argument.match(/(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{0,7}))?(?:Z|(.)(\\d{2}):?(\\d{2})?)?/);\n\n if (parts) {\n // Group 8 matches the sign\n return new Date(Date.UTC(+parts[1], +parts[2] - 1, +parts[3], +parts[4] - (+parts[9] || 0) * (parts[8] == '-' ? -1 : 1), +parts[5] - (+parts[10] || 0) * (parts[8] == '-' ? -1 : 1), +parts[6], +((parts[7] || '0') + '00').substring(0, 3)));\n }\n\n return new Date(NaN);\n }\n\n return toDate(argument);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport subDays from \"../subDays/index.js\";\n\n/**\n * @name previousDay\n * @category Weekday Helpers\n * @summary When is the previous day of the week?\n *\n * @description\n * When is the previous day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {number} day - day of the week\n * @returns {Date} - the date is the previous day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the previous Monday before Mar, 20, 2020?\n * const result = previousDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 16 2020 00:00:00\n *\n * @example\n * // When is the previous Tuesday before Mar, 21, 2020?\n * const result = previousDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 17 2020 00:00:00\n */\nexport default function previousDay(date, day) {\n requiredArgs(2, arguments);\n var delta = getDay(date) - day;\n if (delta <= 0) delta += 7;\n return subDays(date, delta);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousFriday\n * @category Weekday Helpers\n * @summary When is the previous Friday?\n *\n * @description\n * When is the previous Friday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Friday before Jun, 19, 2021?\n * const result = previousFriday(new Date(2021, 5, 19))\n * //=> Fri June 18 2021 00:00:00\n */\n\nexport default function previousFriday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 5);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousMonday\n * @category Weekday Helpers\n * @summary When is the previous Monday?\n *\n * @description\n * When is the previous Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Monday before Jun, 18, 2021?\n * const result = previousMonday(new Date(2021, 5, 18))\n * //=> Mon June 14 2021 00:00:00\n */\n\nexport default function previousMonday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 1);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousSaturday\n * @category Weekday Helpers\n * @summary When is the previous Saturday?\n *\n * @description\n * When is the previous Saturday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Saturday before Jun, 20, 2021?\n * const result = previousSaturday(new Date(2021, 5, 20))\n * //=> Sat June 19 2021 00:00:00\n */\n\nexport default function previousSaturday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 6);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousSunday\n * @category Weekday Helpers\n * @summary When is the previous Sunday?\n *\n * @description\n * When is the previous Sunday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Sunday before Jun, 21, 2021?\n * const result = previousSunday(new Date(2021, 5, 21))\n * //=> Sun June 20 2021 00:00:00\n */\n\nexport default function previousSunday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 0);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousThursday\n * @category Weekday Helpers\n * @summary When is the previous Thursday?\n *\n * @description\n * When is the previous Thursday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Thursday before Jun, 18, 2021?\n * const result = previousThursday(new Date(2021, 5, 18))\n * //=> Thu June 17 2021 00:00:00\n */\n\nexport default function previousThursday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 4);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousTuesday\n * @category Weekday Helpers\n * @summary When is the previous Tuesday?\n *\n * @description\n * When is the previous Tuesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Tuesday before Jun, 18, 2021?\n * const result = previousTuesday(new Date(2021, 5, 18))\n * //=> Tue June 15 2021 00:00:00\n */\n\nexport default function previousTuesday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 2);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousWednesday\n * @category Weekday Helpers\n * @summary When is the previous Wednesday?\n *\n * @description\n * When is the previous Wednesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Wednesday before Jun, 18, 2021?\n * const result = previousWednesday(new Date(2021, 5, 18))\n * //=> Wed June 16 2021 00:00:00\n */\n\nexport default function previousWednesday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 3);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name quartersToMonths\n * @category Conversion Helpers\n * @summary Convert number of quarters to months.\n *\n * @description\n * Convert a number of quarters to a full number of months.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 quarters to months\n * const result = quartersToMonths(2)\n * //=> 6\n */\n\nexport default function quartersToMonths(quarters) {\n requiredArgs(1, arguments);\n return Math.floor(quarters * monthsInQuarter);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name quartersToYears\n * @category Conversion Helpers\n * @summary Convert number of quarters to years.\n *\n * @description\n * Convert a number of quarters to a full number of years.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 8 quarters to years\n * const result = quartersToYears(8)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = quartersToYears(11)\n * //=> 2\n */\n\nexport default function quartersToYears(quarters) {\n requiredArgs(1, arguments);\n var years = quarters / quartersInYear;\n return Math.floor(years);\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute (or number of minutes).\n * Rounds up when the given date is exactly between the nearest round minutes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to round\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.nearestTo=1] - nearest number of minutes to round to. E.g. `15` to round to quarter hours.\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n *\n * @example\n * // Round 10 July 2014 12:07:30 to nearest quarter hour:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34), { nearestTo: 15 })\n * // rounds up because given date is exactly between 12:00:00 and 12:15:00\n * //=> Thu Jul 10 2014 12:15:00\n */\n\nexport default function roundToNearestMinutes(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present');\n }\n\n var nearestTo = options && 'nearestTo' in options ? toInteger(options.nearestTo) : 1;\n\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30');\n }\n\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds(); // relevant if nearestTo is 1, which is the default case\n\n var minutes = date.getMinutes() + seconds / 60;\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo;\n var remainderMinutes = minutes % nearestTo;\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInHour } from \"../constants/index.js\";\n/**\n * @name secondsToHours\n * @category Conversion Helpers\n * @summary Convert seconds to hours.\n *\n * @description\n * Convert a number of seconds to a full number of hours.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200 seconds into hours\n * const result = secondsToHours(7200)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToHours(7199)\n * //=> 1\n */\n\nexport default function secondsToHours(seconds) {\n requiredArgs(1, arguments);\n var hours = seconds / secondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name secondsToMilliseconds\n * @category Conversion Helpers\n * @summary Convert seconds to milliseconds.\n *\n * @description\n * Convert a number of seconds to a full number of milliseconds.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 seconds into milliseconds\n * const result = secondsToMilliseconds(2)\n * //=> 2000\n */\n\nexport default function secondsToMilliseconds(seconds) {\n requiredArgs(1, arguments);\n return seconds * millisecondsInSecond;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name secondsToMinutes\n * @category Conversion Helpers\n * @summary Convert seconds to minutes.\n *\n * @description\n * Convert a number of seconds to a full number of minutes.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 120 seconds into minutes\n * const result = secondsToMinutes(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToMinutes(119)\n * //=> 1\n */\n\nexport default function secondsToMinutes(seconds) {\n requiredArgs(1, arguments);\n var minutes = seconds / secondsInMinute;\n return Math.floor(minutes);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * var result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n\n if (typeof values !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n\n var date = toDate(dirtyDate); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = toInteger(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var delta = 7 - weekStartsOn;\n var diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\n\nexport default function setDayOfYear(dirtyDate, dirtyDayOfYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfYear = toInteger(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport getISODay from \"../getISODay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function setISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = getISODay(date);\n var diff = day - currentDay;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getISOWeek from \"../getISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\n\nexport default function setISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getISOWeek(date) - isoWeek;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\n\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = toInteger(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\n\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import getWeek from \"../getWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * var result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getWeek(date, options) - week;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear(dirtyDate, dirtyWeekYear) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var date = toDate(dirtyDate);\n var weekYear = toInteger(dirtyWeekYear);\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, options));\n var firstWeek = new Date(0);\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n date = startOfWeekYear(firstWeek, options);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * const result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\n\nexport default function startOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n date.setFullYear(decade, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\n/**\n * @name startOfToday\n * @category Day Helpers\n * @summary Return the start of today.\n * @pure false\n *\n * @description\n * Return the start of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\n\nexport default function startOfToday() {\n return startOfDay(Date.now());\n}","/**\n * @name startOfTomorrow\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n * @pure false\n *\n * @description\n * Return the start of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nexport default function startOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/**\n * @name startOfYesterday\n * @category Day Helpers\n * @summary Return the start of yesterday.\n * @pure false\n *\n * @description\n * Return the start of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nexport default function startOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addBusinessDays from \"../addBusinessDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subBusinessDays\n * @category Day Helpers\n * @summary Substract the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Substract the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Substract 10 business days from 1 September 2014:\n * const result = subBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Aug 18 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function subBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addBusinessDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMinutes from \"../addMinutes/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\n\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\n\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addSeconds from \"../addSeconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\n\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name weeksToDays\n * @category Conversion Helpers\n * @summary Convert weeks to days.\n *\n * @description\n * Convert a number of weeks to a full number of days.\n *\n * @param {number} weeks - number of weeks to be converted\n *\n * @returns {number} the number of weeks converted in days\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 weeks into days\n * const result = weeksToDays(2)\n * //=> 14\n */\n\nexport default function weeksToDays(weeks) {\n requiredArgs(1, arguments);\n return Math.floor(weeks * daysInWeek);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name yearsToMonths\n * @category Conversion Helpers\n * @summary Convert years to months.\n *\n * @description\n * Convert a number of years to a full number of months.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years into months\n * const result = yearsToMonths(2)\n * //=> 24\n */\n\nexport default function yearsToMonths(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * monthsInYear);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name yearsToQuarters\n * @category Conversion Helpers\n * @summary Convert years to quarters.\n *\n * @description\n * Convert a number of years to a full number of quarters.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years to quarters\n * const result = yearsToQuarters(2)\n * //=> 8\n */\n\nexport default function yearsToQuarters(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * quartersInYear);\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","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","/*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n// ------------------------------------ EDITABLE DEFAULTS ------------------------------------- //\r\n\r\n\r\n// The limit on the value of `precision`, and on the value of the first argument to\r\n// `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\nvar MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n defaults = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n// ------------------------------------ END OF EDITABLE DEFAULTS -------------------------------- //\r\n\r\n\r\n Decimal,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n};\r\n\r\n\r\n/*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\nP.exponent = function () {\r\n return getBase10Exponent(this);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return this.s === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = P.valueOf = P.val = P.toJSON = P[Symbol.for('nodejs.util.inspect.custom')] = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\nfunction add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\nfunction exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\nfunction ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n}\r\n\r\n\r\nfunction toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = clone(defaults);\r\n\r\n// Internal constant.\r\nONE = new Decimal(1);\r\n\r\nexport default Decimal;\r\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","import isString from 'lodash/isString';\nimport isNan from 'lodash/isNaN';\nimport get from 'lodash/get';\nimport lodashIsNumber from 'lodash/isNumber';\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return lodashIsNumber(value) && !isNan(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue Total value\n * @param {number} defaultValue The value returned when percent is undefined or invalid\n * @param {boolean} validate If set to be true, the result will be validated\n * @return {number} value\n */\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!isNumber(percent) && !isString(percent)) {\n return defaultValue;\n }\n var value;\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n if (isNan(value)) {\n value = defaultValue;\n }\n if (validate && value > totalValue) {\n value = totalValue;\n }\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n var keys = Object.keys(obj);\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!Array.isArray(ary)) {\n return false;\n }\n var len = ary.length;\n var cache = {};\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n return false;\n};\n\n/* @todo consider to rename this function into `getInterpolator` */\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : get(entry, specifiedKey)) === specifiedValue;\n });\n}\n\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n for (var i = 0; i < len; i++) {\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n return true;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { isValidElement } from 'react';\nimport isObject from 'lodash/isObject';\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\n\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nexport var SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style',\n/*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */\n// 'type',\n'target', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport var FilteredElementKeyMap = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys\n};\nexport var EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture'];\n\n/** The type of easing function to use for animations */\n\n/** Specifies the duration of animation, the unit of this option is ms. */\n\n/** the offset of a chart, which define the blank space all around */\n\n/**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */\n\n/**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */\n\n/** The props definition of base axis */\n\n/** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks are always shown.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */\n\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!isObject(inputProps)) {\n return null;\n }\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function (e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n var out = null;\n Object.keys(props).forEach(function (key) {\n var item = props[key];\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};","var _excluded = [\"children\"],\n _excluded2 = [\"children\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport get from 'lodash/get';\nimport isNil from 'lodash/isNil';\nimport isString from 'lodash/isString';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport { Children, isValidElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nimport { FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n if (!Comp) {\n return '';\n }\n return Comp.displayName || Comp.name || 'Component';\n};\n\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n if (children === lastChildren && Array.isArray(lastResult)) {\n return lastResult;\n }\n var result = [];\n Children.forEach(children, function (child) {\n if (isNil(child)) return;\n if (isFragment(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */\nexport function findAllByType(children, type) {\n var result = [];\n var types = [];\n if (Array.isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var childType = get(child, 'type.displayName') || get(child, 'type.name');\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n}\n\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */\nexport function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n}\n\n/*\n * Create a new array of children excluding the ones matched the type\n */\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n if (Array.isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var displayName = get(child, 'type.displayName');\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n newChildren.push(child);\n });\n return newChildren;\n};\n\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\nexport var isDotProps = function isDotProps(dot) {\n return dot && _typeof(dot) === 'object' && 'cx' in dot && 'cy' in dot && 'r' in dot;\n};\n\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */\nexport var isValidSpreadableProp = function isValidSpreadableProp(property, key, includeEvents, svgElementType) {\n var _FilteredElementKeyMa;\n /**\n * If the svg element type is explicitly included, check against the filtered element key map\n * to determine if there are attributes that should only exist on that element type.\n * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n */\n var matchingElementTypeKeys = (_FilteredElementKeyMa = FilteredElementKeyMap === null || FilteredElementKeyMap === void 0 ? void 0 : FilteredElementKeyMap[svgElementType]) !== null && _FilteredElementKeyMa !== void 0 ? _FilteredElementKeyMa : [];\n return !isFunction(property) && (svgElementType && matchingElementTypeKeys.includes(key) || SVGElementPropKeys.includes(key)) || includeEvents && EventKeys.includes(key);\n};\n\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function (entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nexport var filterProps = function filterProps(props, includeEvents, svgElementType) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!isObject(inputProps)) {\n return null;\n }\n var out = {};\n\n /**\n * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n * Items filtered out are as follows:\n * - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n * - props that are SVG attributes but don't matched the passed svgElementType\n * - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n */\n Object.keys(inputProps).forEach(function (key) {\n var _inputProps;\n if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\n\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n var count = Children.count(nextChildren);\n if (count !== Children.count(prevChildren)) {\n return false;\n }\n if (count === 0) {\n return true;\n }\n if (count === 1) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return isSingleChildEqual(Array.isArray(nextChildren) ? nextChildren[0] : nextChildren, Array.isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n if (Array.isArray(nextChild) || Array.isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (isNil(nextChild) && isNil(prevChild)) {\n return true;\n }\n if (!isNil(nextChild) && !isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, _excluded);\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, _excluded2);\n if (nextChildren && prevChildren) {\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n return false;\n }\n return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function (child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n var _ref3 = renderMap[displayName] || {},\n handler = _ref3.handler,\n once = _ref3.once;\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\n};","var _excluded = [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\", \"title\", \"desc\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport function Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n title = props.title,\n desc = props.desc,\n others = _objectWithoutProperties(props, _excluded);\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = clsx('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, 'svg'), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height)\n }), /*#__PURE__*/React.createElement(\"title\", null, title), /*#__PURE__*/React.createElement(\"desc\", null, desc), children);\n}","var _excluded = [\"children\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport var Layer = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, _excluded);\n var layerClass = clsx('recharts-layer', className);\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true), {\n ref: ref\n }), children);\n});","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"type\", \"size\", \"sizeType\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport upperFirst from 'lodash/upperFirst';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'victory-vendor/d3-shape';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nvar symbolFactories = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n case 'square':\n return size * size;\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n default:\n return Math.PI * size * size / 4;\n }\n};\nvar registerSymbol = function registerSymbol(key, factory) {\n symbolFactories[\"symbol\".concat(upperFirst(key))] = factory;\n};\nexport var Symbols = function Symbols(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'circle' : _ref$type,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 64 : _ref$size,\n _ref$sizeType = _ref.sizeType,\n sizeType = _ref$sizeType === void 0 ? 'area' : _ref$sizeType,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread(_objectSpread({}, rest), {}, {\n type: type,\n size: size,\n sizeType: sizeType\n });\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n var getPath = function getPath() {\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n };\n var className = props.className,\n cx = props.cx,\n cy = props.cy;\n var filteredProps = filterProps(props, true);\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filteredProps, {\n className: clsx('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: getPath()\n }));\n }\n return null;\n};\nSymbols.registerSymbol = registerSymbol;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { warn } from '../util/LogUtils';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n return _callSuper(this, DefaultLegendContent, arguments);\n }\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n value:\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n if (data.type === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter,\n inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var finalFormatter = entry.formatter || formatter;\n var className = clsx(_defineProperty(_defineProperty({\n 'recharts-legend-item': true\n }, \"legend-item-\".concat(i), true), \"inactive\", entry.inactive));\n if (entry.type === 'none') {\n return null;\n }\n\n // Do not render entry.value as functions. Always require static string properties.\n var entryValue = !isFunction(entry.value) ? entry.value : null;\n warn(!isFunction(entry.value), \"The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: \" // eslint-disable-line max-len\n );\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle\n // eslint-disable-next-line react/no-array-index-key\n ,\n key: \"legend-item-\".concat(i)\n }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n return DefaultLegendContent;\n}(PureComponent);\n_defineProperty(DefaultLegendContent, \"displayName\", 'Legend');\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n});","import uniqBy from 'lodash/uniqBy';\nimport isFunction from 'lodash/isFunction';\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */\n\nexport function getUniqPayload(payload, option, defaultUniqBy) {\n if (option === true) {\n return uniqBy(payload, defaultUniqBy);\n }\n if (isFunction(option)) {\n return uniqBy(payload, option);\n }\n return payload;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"ref\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/React.createElement(content, props);\n }\n var ref = props.ref,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n _inherits(Legend, _PureComponent);\n function Legend() {\n var _this;\n _classCallCheck(this, Legend);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Legend, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"lastBoundingBox\", {\n width: -1,\n height: -1\n });\n return _this;\n }\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box = this.wrapperNode.getBoundingClientRect();\n _box.height = this.wrapperNode.offsetHeight;\n _box.width = this.wrapperNode.offsetWidth;\n return _box;\n }\n return null;\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var onBBoxUpdate = this.props.onBBoxUpdate;\n var box = this.getBBox();\n if (box) {\n if (Math.abs(box.width - this.lastBoundingBox.width) > EPS || Math.abs(box.height - this.lastBoundingBox.height) > EPS) {\n this.lastBoundingBox.width = box.width;\n this.lastBoundingBox.height = box.height;\n if (onBBoxUpdate) {\n onBBoxUpdate(box);\n }\n }\n } else if (this.lastBoundingBox.width !== -1 || this.lastBoundingBox.height !== -1) {\n this.lastBoundingBox.width = -1;\n this.lastBoundingBox.height = -1;\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n }\n }\n }, {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n return _objectSpread({}, this.lastBoundingBox);\n }\n return {\n width: 0,\n height: 0\n };\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var _box2 = this.getBBoxSnapshot();\n hPos = {\n left: ((chartWidth || 0) - _box2.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box3 = this.getBBoxSnapshot();\n vPos = {\n top: ((chartHeight || 0) - _box3.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: getUniqPayload(payload, payloadUniqBy, defaultUniqBy)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n return null;\n }\n }]);\n return Legend;\n}(PureComponent);\n_defineProperty(Legend, \"displayName\", 'Legend');\n_defineProperty(Legend, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n});","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Tooltip Content\n */\n\nimport React from 'react';\nimport sortBy from 'lodash/sortBy';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumOrStr } from '../util/DataUtils';\nfunction defaultFormatter(value) {\n return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\nexport var DefaultTooltipContent = function DefaultTooltipContent(props) {\n var _props$separator = props.separator,\n separator = _props$separator === void 0 ? ' : ' : _props$separator,\n _props$contentStyle = props.contentStyle,\n contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle,\n _props$itemStyle = props.itemStyle,\n itemStyle = _props$itemStyle === void 0 ? {} : _props$itemStyle,\n _props$labelStyle = props.labelStyle,\n labelStyle = _props$labelStyle === void 0 ? {} : _props$labelStyle,\n payload = props.payload,\n formatter = props.formatter,\n itemSorter = props.itemSorter,\n wrapperClassName = props.wrapperClassName,\n labelClassName = props.labelClassName,\n label = props.label,\n labelFormatter = props.labelFormatter,\n _props$accessibilityL = props.accessibilityLayer,\n accessibilityLayer = _props$accessibilityL === void 0 ? false : _props$accessibilityL;\n var renderContent = function renderContent() {\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var value = entry.value,\n name = entry.name;\n var finalValue = value;\n var finalName = name;\n if (finalFormatter && finalValue != null && finalName != null) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n finalValue = _formatted[0];\n finalName = _formatted[1];\n } else {\n finalValue = formatted;\n }\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, finalName) : null, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, finalValue), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n return null;\n };\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n var hasLabel = !isNil(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);\n var labelCN = clsx('recharts-tooltip-label', labelClassName);\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n var accessibilityAttributes = accessibilityLayer ? {\n role: 'status',\n 'aria-live': 'assertive'\n } : {};\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: wrapperCN,\n style: finalStyle\n }, accessibilityAttributes), /*#__PURE__*/React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport clsx from 'clsx';\nimport { isNumber } from '../DataUtils';\nvar CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\nvar TOOLTIP_HIDDEN = {\n visibility: 'hidden'\n};\nexport function getTooltipCSSClassName(_ref) {\n var coordinate = _ref.coordinate,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n return clsx(CSS_CLASS_PREFIX, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(CSS_CLASS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), \"\".concat(CSS_CLASS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y));\n}\nexport function getTooltipTranslateXY(_ref2) {\n var allowEscapeViewBox = _ref2.allowEscapeViewBox,\n coordinate = _ref2.coordinate,\n key = _ref2.key,\n offsetTopLeft = _ref2.offsetTopLeft,\n position = _ref2.position,\n reverseDirection = _ref2.reverseDirection,\n tooltipDimension = _ref2.tooltipDimension,\n viewBox = _ref2.viewBox,\n viewBoxDimension = _ref2.viewBoxDimension;\n if (position && isNumber(position[key])) {\n return position[key];\n }\n var negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n var positive = coordinate[key] + offsetTopLeft;\n if (allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n if (reverseDirection[key]) {\n var _tooltipBoundary = negative;\n var _viewBoxBoundary = viewBox[key];\n if (_tooltipBoundary < _viewBoxBoundary) {\n return Math.max(positive, viewBox[key]);\n }\n return Math.max(negative, viewBox[key]);\n }\n var tooltipBoundary = positive + tooltipDimension;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBox[key]);\n }\n return Math.max(positive, viewBox[key]);\n}\nexport function getTransformStyle(_ref3) {\n var translateX = _ref3.translateX,\n translateY = _ref3.translateY,\n useTranslate3d = _ref3.useTranslate3d;\n return {\n transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n };\n}\nexport function getTooltipTranslate(_ref4) {\n var allowEscapeViewBox = _ref4.allowEscapeViewBox,\n coordinate = _ref4.coordinate,\n offsetTopLeft = _ref4.offsetTopLeft,\n position = _ref4.position,\n reverseDirection = _ref4.reverseDirection,\n tooltipBox = _ref4.tooltipBox,\n useTranslate3d = _ref4.useTranslate3d,\n viewBox = _ref4.viewBox;\n var cssProperties, translateX, translateY;\n if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n translateX = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'x',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.width,\n viewBox: viewBox,\n viewBoxDimension: viewBox.width\n });\n translateY = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'y',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.height,\n viewBox: viewBox,\n viewBoxDimension: viewBox.height\n });\n cssProperties = getTransformStyle({\n translateX: translateX,\n translateY: translateY,\n useTranslate3d: useTranslate3d\n });\n } else {\n cssProperties = TOOLTIP_HIDDEN;\n }\n return {\n cssProperties: cssProperties,\n cssClasses: getTooltipCSSClassName({\n translateX: translateX,\n translateY: translateY,\n coordinate: coordinate\n })\n };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { getTooltipTranslate } from '../util/tooltip/translate';\nvar EPSILON = 1;\nexport var TooltipBoundingBox = /*#__PURE__*/function (_PureComponent) {\n _inherits(TooltipBoundingBox, _PureComponent);\n function TooltipBoundingBox() {\n var _this;\n _classCallCheck(this, TooltipBoundingBox);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, TooltipBoundingBox, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dismissed: false,\n dismissedAtCoordinate: {\n x: 0,\n y: 0\n },\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleKeyDown\", function (event) {\n if (event.key === 'Escape') {\n var _this$props$coordinat, _this$props$coordinat2, _this$props$coordinat3, _this$props$coordinat4;\n _this.setState({\n dismissed: true,\n dismissedAtCoordinate: {\n x: (_this$props$coordinat = (_this$props$coordinat2 = _this.props.coordinate) === null || _this$props$coordinat2 === void 0 ? void 0 : _this$props$coordinat2.x) !== null && _this$props$coordinat !== void 0 ? _this$props$coordinat : 0,\n y: (_this$props$coordinat3 = (_this$props$coordinat4 = _this.props.coordinate) === null || _this$props$coordinat4 === void 0 ? void 0 : _this$props$coordinat4.y) !== null && _this$props$coordinat3 !== void 0 ? _this$props$coordinat3 : 0\n }\n });\n }\n });\n return _this;\n }\n _createClass(TooltipBoundingBox, [{\n key: \"updateBBox\",\n value: function updateBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n if (Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON || Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON) {\n this.setState({\n lastBoundingBox: {\n width: box.width,\n height: box.height\n }\n });\n }\n } else if (this.state.lastBoundingBox.width !== -1 || this.state.lastBoundingBox.height !== -1) {\n this.setState({\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown);\n this.updateBBox();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this$props$coordinat5, _this$props$coordinat6;\n if (this.props.active) {\n this.updateBBox();\n }\n if (!this.state.dismissed) {\n return;\n }\n if (((_this$props$coordinat5 = this.props.coordinate) === null || _this$props$coordinat5 === void 0 ? void 0 : _this$props$coordinat5.x) !== this.state.dismissedAtCoordinate.x || ((_this$props$coordinat6 = this.props.coordinate) === null || _this$props$coordinat6 === void 0 ? void 0 : _this$props$coordinat6.y) !== this.state.dismissedAtCoordinate.y) {\n this.state.dismissed = false;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n active = _this$props.active,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n children = _this$props.children,\n coordinate = _this$props.coordinate,\n hasPayload = _this$props.hasPayload,\n isAnimationActive = _this$props.isAnimationActive,\n offset = _this$props.offset,\n position = _this$props.position,\n reverseDirection = _this$props.reverseDirection,\n useTranslate3d = _this$props.useTranslate3d,\n viewBox = _this$props.viewBox,\n wrapperStyle = _this$props.wrapperStyle;\n var _getTooltipTranslate = getTooltipTranslate({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n offsetTopLeft: offset,\n position: position,\n reverseDirection: reverseDirection,\n tooltipBox: this.state.lastBoundingBox,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox\n }),\n cssClasses = _getTooltipTranslate.cssClasses,\n cssProperties = _getTooltipTranslate.cssProperties;\n var outerStyle = _objectSpread(_objectSpread({\n transition: isAnimationActive && active ? \"transform \".concat(animationDuration, \"ms \").concat(animationEasing) : undefined\n }, cssProperties), {}, {\n pointerEvents: 'none',\n visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n }, wrapperStyle);\n return (\n /*#__PURE__*/\n // This element allow listening to the `Escape` key.\n // See https://github.com/recharts/recharts/pull/2925\n React.createElement(\"div\", {\n tabIndex: -1,\n className: cssClasses,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, children)\n );\n }\n }]);\n return TooltipBoundingBox;\n}(PureComponent);","var parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\nexport var Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n if (keys && keys.length) {\n keys.forEach(function (k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { TooltipBoundingBox } from './TooltipBoundingBox';\nimport { Global } from '../util/Global';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/React.createElement(content, props);\n }\n return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\nexport var Tooltip = /*#__PURE__*/function (_PureComponent) {\n _inherits(Tooltip, _PureComponent);\n function Tooltip() {\n _classCallCheck(this, Tooltip);\n return _callSuper(this, Tooltip, arguments);\n }\n _createClass(Tooltip, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n var _this$props = this.props,\n active = _this$props.active,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n content = _this$props.content,\n coordinate = _this$props.coordinate,\n filterNull = _this$props.filterNull,\n isAnimationActive = _this$props.isAnimationActive,\n offset = _this$props.offset,\n payload = _this$props.payload,\n payloadUniqBy = _this$props.payloadUniqBy,\n position = _this$props.position,\n reverseDirection = _this$props.reverseDirection,\n useTranslate3d = _this$props.useTranslate3d,\n viewBox = _this$props.viewBox,\n wrapperStyle = _this$props.wrapperStyle;\n var finalPayload = payload !== null && payload !== void 0 ? payload : [];\n if (filterNull && finalPayload.length) {\n finalPayload = getUniqPayload(payload.filter(function (entry) {\n return entry.value != null && (entry.hide !== true || _this.props.includeHidden);\n }), payloadUniqBy, defaultUniqBy);\n }\n var hasPayload = finalPayload.length > 0;\n return /*#__PURE__*/React.createElement(TooltipBoundingBox, {\n allowEscapeViewBox: allowEscapeViewBox,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n active: active,\n coordinate: coordinate,\n hasPayload: hasPayload,\n offset: offset,\n position: position,\n reverseDirection: reverseDirection,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox,\n wrapperStyle: wrapperStyle\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: finalPayload\n })));\n }\n }]);\n return Tooltip;\n}(PureComponent);\n_defineProperty(Tooltip, \"displayName\", 'Tooltip');\n_defineProperty(Tooltip, \"defaultProps\", {\n accessibilityLayer: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n animationDuration: 400,\n animationEasing: 'ease',\n contentStyle: {},\n coordinate: {\n x: 0,\n y: 0\n },\n cursor: true,\n cursorStyle: {},\n filterNull: true,\n isAnimationActive: !Global.isSsr,\n itemStyle: {},\n labelStyle: {},\n offset: 10,\n reverseDirection: {\n x: false,\n y: false\n },\n separator: ' : ',\n trigger: 'hover',\n useTranslate3d: false,\n viewBox: {\n x: 0,\n y: 0,\n height: 0,\n width: 0\n },\n wrapperStyle: {}\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport clsx from 'clsx';\nimport React, { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect, useMemo, useCallback } from 'react';\nimport throttle from 'lodash/throttle';\nimport { isElement } from 'react-is';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { getDisplayName } from '../util/ReactUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var aspect = _ref.aspect,\n _ref$initialDimension = _ref.initialDimension,\n initialDimension = _ref$initialDimension === void 0 ? {\n width: -1,\n height: -1\n } : _ref$initialDimension,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? '100%' : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? '100%' : _ref$height,\n _ref$minWidth = _ref.minWidth,\n minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth,\n minHeight = _ref.minHeight,\n maxHeight = _ref.maxHeight,\n children = _ref.children,\n _ref$debounce = _ref.debounce,\n debounce = _ref$debounce === void 0 ? 0 : _ref$debounce,\n id = _ref.id,\n className = _ref.className,\n onResize = _ref.onResize,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style;\n var containerRef = useRef(null);\n var onResizeRef = useRef();\n onResizeRef.current = onResize;\n useImperativeHandle(ref, function () {\n return Object.defineProperty(containerRef.current, 'current', {\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn('The usage of ref.current.current is deprecated and will no longer be supported.');\n return containerRef.current;\n },\n configurable: true\n });\n });\n var _useState = useState({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n }),\n _useState2 = _slicedToArray(_useState, 2),\n sizes = _useState2[0],\n setSizes = _useState2[1];\n var setContainerSize = useCallback(function (newWidth, newHeight) {\n setSizes(function (prevState) {\n var roundedWidth = Math.round(newWidth);\n var roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n return {\n containerWidth: roundedWidth,\n containerHeight: roundedHeight\n };\n });\n }, []);\n useEffect(function () {\n var callback = function callback(entries) {\n var _onResizeRef$current;\n var _entries$0$contentRec = entries[0].contentRect,\n containerWidth = _entries$0$contentRec.width,\n containerHeight = _entries$0$contentRec.height;\n setContainerSize(containerWidth, containerHeight);\n (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = throttle(callback, debounce, {\n trailing: true,\n leading: false\n });\n }\n var observer = new ResizeObserver(callback);\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n containerWidth = _containerRef$current.width,\n containerHeight = _containerRef$current.height;\n setContainerSize(containerWidth, containerHeight);\n observer.observe(containerRef.current);\n return function () {\n observer.disconnect();\n };\n }, [setContainerSize, debounce]);\n var chartContent = useMemo(function () {\n var containerWidth = sizes.containerWidth,\n containerHeight = sizes.containerHeight;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n var isCharts = !Array.isArray(children) && isElement(children) && getDisplayName(children.type).endsWith('Chart');\n return React.Children.map(children, function (child) {\n if (isElement(child)) {\n return /*#__PURE__*/cloneElement(child, _objectSpread({\n width: calculatedWidth,\n height: calculatedHeight\n }, isCharts ? {\n style: _objectSpread({\n height: '100%',\n width: '100%',\n maxHeight: calculatedHeight,\n maxWidth: calculatedWidth\n }, child.props.style)\n } : {}));\n }\n return child;\n });\n }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id ? \"\".concat(id) : undefined,\n className: clsx('recharts-responsive-container', className),\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n }),\n ref: containerRef\n }, chartContent);\n});","/**\n * @fileOverview Cross\n */\n\nexport var Cell = function Cell(_props) {\n return null;\n};\nCell.displayName = 'Cell';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { Global } from './Global';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n return value;\n}\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nfunction removeInvalidKeys(obj) {\n var copyObj = _objectSpread({}, obj);\n Object.keys(copyObj).forEach(function (key) {\n if (!copyObj[key]) {\n delete copyObj[key];\n }\n });\n return copyObj;\n}\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (text === undefined || text === null || Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n var copyStyle = removeInvalidKeys(style);\n var cacheKey = JSON.stringify({\n text: text,\n copyStyle: copyStyle\n });\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n }\n // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), copyStyle);\n Object.assign(measurementSpan.style, measurementSpanStyle);\n measurementSpan.textContent = \"\".concat(text);\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(rect) {\n return {\n top: rect.top + window.scrollY - document.documentElement.clientTop,\n left: rect.left + window.scrollX - document.documentElement.clientLeft\n };\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nvar NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\nvar CONVERSION_RATES = {\n cm: 96 / 2.54,\n mm: 96 / 25.4,\n pt: 96 / 72,\n pc: 96 / 6,\n \"in\": 96,\n Q: 96 / (2.54 * 40),\n px: 1\n};\nvar FIXED_CSS_LENGTH_UNITS = Object.keys(CONVERSION_RATES);\nvar STR_NAN = 'NaN';\nfunction convertToPx(value, unit) {\n return value * CONVERSION_RATES[unit];\n}\nvar DecimalCSS = /*#__PURE__*/function () {\n function DecimalCSS(num, unit) {\n _classCallCheck(this, DecimalCSS);\n this.num = num;\n this.unit = unit;\n this.num = num;\n this.unit = unit;\n if (Number.isNaN(num)) {\n this.unit = '';\n }\n if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n this.num = NaN;\n this.unit = '';\n }\n if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n this.num = convertToPx(num, unit);\n this.unit = 'px';\n }\n }\n _createClass(DecimalCSS, [{\n key: \"add\",\n value: function add(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num + other.num, this.unit);\n }\n }, {\n key: \"subtract\",\n value: function subtract(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num - other.num, this.unit);\n }\n }, {\n key: \"multiply\",\n value: function multiply(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n }\n }, {\n key: \"divide\",\n value: function divide(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.num).concat(this.unit);\n }\n }, {\n key: \"isNaN\",\n value: function isNaN() {\n return Number.isNaN(this.num);\n }\n }], [{\n key: \"parse\",\n value: function parse(str) {\n var _NUM_SPLIT_REGEX$exec;\n var _ref = (_NUM_SPLIT_REGEX$exec = NUM_SPLIT_REGEX.exec(str)) !== null && _NUM_SPLIT_REGEX$exec !== void 0 ? _NUM_SPLIT_REGEX$exec : [],\n _ref2 = _slicedToArray(_ref, 3),\n numStr = _ref2[1],\n unit = _ref2[2];\n return new DecimalCSS(parseFloat(numStr), unit !== null && unit !== void 0 ? unit : '');\n }\n }]);\n return DecimalCSS;\n}();\nfunction calculateArithmetic(expr) {\n if (expr.includes(STR_NAN)) {\n return STR_NAN;\n }\n var newExpr = expr;\n while (newExpr.includes('*') || newExpr.includes('/')) {\n var _MULTIPLY_OR_DIVIDE_R;\n var _ref3 = (_MULTIPLY_OR_DIVIDE_R = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr)) !== null && _MULTIPLY_OR_DIVIDE_R !== void 0 ? _MULTIPLY_OR_DIVIDE_R : [],\n _ref4 = _slicedToArray(_ref3, 4),\n leftOperand = _ref4[1],\n operator = _ref4[2],\n rightOperand = _ref4[3];\n var lTs = DecimalCSS.parse(leftOperand !== null && leftOperand !== void 0 ? leftOperand : '');\n var rTs = DecimalCSS.parse(rightOperand !== null && rightOperand !== void 0 ? rightOperand : '');\n var result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);\n if (result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());\n }\n while (newExpr.includes('+') || /.-\\d+(?:\\.\\d+)?/.test(newExpr)) {\n var _ADD_OR_SUBTRACT_REGE;\n var _ref5 = (_ADD_OR_SUBTRACT_REGE = ADD_OR_SUBTRACT_REGEX.exec(newExpr)) !== null && _ADD_OR_SUBTRACT_REGE !== void 0 ? _ADD_OR_SUBTRACT_REGE : [],\n _ref6 = _slicedToArray(_ref5, 4),\n _leftOperand = _ref6[1],\n _operator = _ref6[2],\n _rightOperand = _ref6[3];\n var _lTs = DecimalCSS.parse(_leftOperand !== null && _leftOperand !== void 0 ? _leftOperand : '');\n var _rTs = DecimalCSS.parse(_rightOperand !== null && _rightOperand !== void 0 ? _rightOperand : '');\n var _result = _operator === '+' ? _lTs.add(_rTs) : _lTs.subtract(_rTs);\n if (_result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, _result.toString());\n }\n return newExpr;\n}\nvar PARENTHESES_REGEX = /\\(([^()]*)\\)/;\nfunction calculateParentheses(expr) {\n var newExpr = expr;\n while (newExpr.includes('(')) {\n var _PARENTHESES_REGEX$ex = PARENTHESES_REGEX.exec(newExpr),\n _PARENTHESES_REGEX$ex2 = _slicedToArray(_PARENTHESES_REGEX$ex, 2),\n parentheticalExpression = _PARENTHESES_REGEX$ex2[1];\n newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n }\n return newExpr;\n}\nfunction evaluateExpression(expression) {\n var newExpr = expression.replace(/\\s+/g, '');\n newExpr = calculateParentheses(newExpr);\n newExpr = calculateArithmetic(newExpr);\n return newExpr;\n}\nexport function safeEvaluateExpression(expression) {\n try {\n return evaluateExpression(expression);\n } catch (e) {\n /* istanbul ignore next */\n return STR_NAN;\n }\n}\nexport function reduceCSSCalc(expression) {\n var result = safeEvaluateExpression(expression.slice(5, -1));\n if (result === STR_NAN) {\n // notify the user\n return '';\n }\n return result;\n}","var _excluded = [\"x\", \"y\", \"lineHeight\", \"capHeight\", \"scaleToFit\", \"textAnchor\", \"verticalAnchor\", \"fill\"],\n _excluded2 = [\"dx\", \"dy\", \"angle\", \"className\", \"breakAll\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React, { useMemo } from 'react';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/ReactUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { reduceCSSCalc } from '../util/ReduceCSSCalc';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\nvar calculateWordWidths = function calculateWordWidths(_ref) {\n var children = _ref.children,\n breakAll = _ref.breakAll,\n style = _ref.style;\n try {\n var words = [];\n if (!isNil(children)) {\n if (breakAll) {\n words = children.toString().split('');\n } else {\n words = children.toString().split(BREAKING_SPACES);\n }\n }\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, style).width\n };\n });\n var spaceWidth = breakAll ? 0 : getStringSize(\"\\xA0\", style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\nvar calculateWordsByLines = function calculateWordsByLines(_ref2, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var maxLines = _ref2.maxLines,\n children = _ref2.children,\n style = _ref2.style,\n breakAll = _ref2.breakAll;\n var shouldLimitLines = isNumber(maxLines);\n var text = children;\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function (result, _ref3) {\n var word = _ref3.word,\n width = _ref3.width;\n var currentLine = result[result.length - 1];\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n return result;\n }, []);\n };\n var originalResult = calculate(initialWordsWithComputedWith);\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function (a, b) {\n return a.width > b.width ? a : b;\n });\n };\n if (!shouldLimitLines) {\n return originalResult;\n }\n var suffix = '…';\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths({\n breakAll: breakAll,\n style: style,\n children: tempText + suffix\n }).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n return [doesOverflow, result];\n };\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n while (start <= end && iterations <= text.length - 1) {\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n var _checkOverflow = checkOverflow(prev),\n _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n doesPrevOverflow = _checkOverflow2[0],\n result = _checkOverflow2[1];\n var _checkOverflow3 = checkOverflow(middle),\n _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n doesMiddleOverflow = _checkOverflow4[0];\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n iterations++;\n }\n\n // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n return trimmedResult || originalResult;\n};\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n};\nvar getWordsByLines = function getWordsByLines(_ref4) {\n var width = _ref4.width,\n scaleToFit = _ref4.scaleToFit,\n children = _ref4.children,\n style = _ref4.style,\n breakAll = _ref4.breakAll,\n maxLines = _ref4.maxLines;\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((width || scaleToFit) && !Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n var wordWidths = calculateWordWidths({\n breakAll: breakAll,\n children: children,\n style: style\n });\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(children);\n }\n return calculateWordsByLines({\n breakAll: breakAll,\n children: children,\n maxLines: maxLines,\n style: style\n }, wordsWithComputedWidth, spaceWidth, width, scaleToFit);\n }\n return getWordsWithoutCalculate(children);\n};\nvar DEFAULT_FILL = '#808080';\nexport var Text = function Text(_ref5) {\n var _ref5$x = _ref5.x,\n propsX = _ref5$x === void 0 ? 0 : _ref5$x,\n _ref5$y = _ref5.y,\n propsY = _ref5$y === void 0 ? 0 : _ref5$y,\n _ref5$lineHeight = _ref5.lineHeight,\n lineHeight = _ref5$lineHeight === void 0 ? '1em' : _ref5$lineHeight,\n _ref5$capHeight = _ref5.capHeight,\n capHeight = _ref5$capHeight === void 0 ? '0.71em' : _ref5$capHeight,\n _ref5$scaleToFit = _ref5.scaleToFit,\n scaleToFit = _ref5$scaleToFit === void 0 ? false : _ref5$scaleToFit,\n _ref5$textAnchor = _ref5.textAnchor,\n textAnchor = _ref5$textAnchor === void 0 ? 'start' : _ref5$textAnchor,\n _ref5$verticalAnchor = _ref5.verticalAnchor,\n verticalAnchor = _ref5$verticalAnchor === void 0 ? 'end' : _ref5$verticalAnchor,\n _ref5$fill = _ref5.fill,\n fill = _ref5$fill === void 0 ? DEFAULT_FILL : _ref5$fill,\n props = _objectWithoutProperties(_ref5, _excluded);\n var wordsByLines = useMemo(function () {\n return getWordsByLines({\n breakAll: props.breakAll,\n children: props.children,\n maxLines: props.maxLines,\n scaleToFit: scaleToFit,\n style: props.style,\n width: props.width\n });\n }, [props.breakAll, props.children, props.maxLines, scaleToFit, props.style, props.width]);\n var dx = props.dx,\n dy = props.dy,\n angle = props.angle,\n className = props.className,\n breakAll = props.breakAll,\n textProps = _objectWithoutProperties(props, _excluded2);\n if (!isNumOrStr(propsX) || !isNumOrStr(propsY)) {\n return null;\n }\n var x = propsX + (isNumber(dx) ? dx : 0);\n var y = propsY + (isNumber(dy) ? dy : 0);\n var startDy;\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n var transforms = [];\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: clsx('recharts-text', className),\n textAnchor: textAnchor,\n fill: fill.includes('url') ? DEFAULT_FILL : fill\n }), wordsByLines.map(function (line, index) {\n var words = line.words.join(breakAll ? '' : ' ');\n return /*#__PURE__*/React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: words\n }, words);\n }));\n};","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n return i;\n};\n\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nexport var curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\nexport var map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};","/**\n * @fileOverview 一些公用的运算方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * 获取数值的位数\n * 其中绝对值属于区间[0.1, 1), 得到的值为0\n * 绝对值属于区间[0.01, 0.1),得到的位数为 -1\n * 绝对值属于区间[0.001, 0.01),得到的位数为 -2\n *\n * @param {Number} value 数值\n * @return {Integer} 位数\n */\n\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的步长获取[start, end)这个区间的数据\n * 并且需要处理js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,不包含该值\n * @param {Decimal} step 步长\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性插值\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} t [0, 1]内的某个值\n * @return {Number} 定义域内的某个值\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性插值的逆运算\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性插值的逆运算,并且有截断的操作\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当x不在 a ~ b这个区间时,会截断到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n\n var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new Decimal(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(function (n) {\n return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n }), range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return -Infinity;\n })), [cormax]);\n\n return min > max ? reverse(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = compose(map(function (n) {\n return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n }), range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","var _excluded = [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/ReactUtils';\nexport function ErrorBar(props) {\n var offset = props.offset,\n layout = props.layout,\n width = props.width,\n dataKey = props.dataKey,\n data = props.data,\n dataPointFormatter = props.dataPointFormatter,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n others = _objectWithoutProperties(props, _excluded);\n var svgProps = filterProps(others, false);\n !!(props.direction === 'x' && xAxis.type !== 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ErrorBar requires Axis type property to be \"number\".') : invariant(false) : void 0;\n var errorBars = data.map(function (entry) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n if (!errorVal) {\n return null;\n }\n var lineCoordinates = [];\n var lowBound, highBound;\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound);\n\n // the right line of |--|\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n });\n // the middle line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n });\n // the left line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n var _xMin = xMid - width;\n var _xMax = xMid + width;\n var _yMin = _scale(value - lowBound);\n var _yMax = _scale(value + highBound);\n\n // the top line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n });\n // the middle line\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n });\n // the bottom line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(lineCoordinates.map(function (c) {\n return \"\".concat(c.x1, \"-\").concat(c.x2, \"-\").concat(c.y1, \"-\").concat(c.y2);\n }))\n }, svgProps), lineCoordinates.map(function (coordinates) {\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(coordinates.x1, \"-\").concat(coordinates.x2, \"-\").concat(coordinates.y1, \"-\").concat(coordinates.y2)\n }));\n }));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { Legend } from '../component/Legend';\nimport { getMainColorOfGraphicItem } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nexport var getLegendProps = function getLegendProps(_ref) {\n var children = _ref.children,\n formattedGraphicalItems = _ref.formattedGraphicalItems,\n legendWidth = _ref.legendWidth,\n legendContent = _ref.legendContent;\n var legendItem = findChildByType(children, Legend);\n if (!legendItem) {\n return null;\n }\n var legendData;\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce(function (result, _ref2) {\n var item = _ref2.item,\n props = _ref2.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function (_ref3) {\n var item = _ref3.item;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n name = _item$props.name,\n legendType = _item$props.legendType,\n hide = _item$props.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n // @ts-expect-error property strokeDasharray is required in Payload but optional in props\n payload: item.props\n };\n });\n }\n return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as d3Scales from 'victory-vendor/d3-scale';\nimport { stack as shapeStack, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderNone } from 'victory-vendor/d3-shape';\nimport max from 'lodash/max';\nimport min from 'lodash/min';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport get from 'lodash/get';\nimport flatMap from 'lodash/flatMap';\nimport isNan from 'lodash/isNaN';\nimport upperFirst from 'lodash/upperFirst';\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport { ErrorBar } from '../cartesian/ErrorBar';\nimport { findEntryInArray, getPercentValue, isNumber, isNumOrStr, mathSign, uniqueId } from './DataUtils';\nimport { filterProps, findAllByType, getDisplayName } from './ReactUtils';\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { getLegendProps } from './getLegendProps';\n\n// Exported for backwards compatibility\nexport { getLegendProps };\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (isNil(obj) || isNil(dataKey)) {\n return defaultValue;\n }\n if (isNumOrStr(dataKey)) {\n return get(obj, dataKey, defaultValue);\n }\n if (isFunction(dataKey)) {\n return dataKey(obj);\n }\n return defaultValue;\n}\n/**\n * Get domain of data by key.\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n if (type === 'number') {\n // @ts-expect-error parseFloat type only accepts strings\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [min(domain), max(domain)] : [Infinity, -Infinity];\n }\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !isNil(entry);\n }) : flattenData;\n\n // Supports x-axis of Date type\n return validateData.map(function (entry) {\n return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n // if there are 1 or less ticks ticks then the active tick is at index 0\n if (len <= 1) {\n return 0;\n }\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range;\n // ticks are distributed in a circle\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var minValue = Math.min(before, after);\n var maxValue = Math.max(before, after);\n if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n return index;\n};\n\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n default:\n result = fill;\n break;\n }\n return result;\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\nexport var getBarSizeList = function getBarSizeList(_ref2) {\n var globalSize = _ref2.barSize,\n totalSize = _ref2.totalSize,\n _ref2$stackGroups = _ref2.stackGroups,\n stackGroups = _ref2$stackGroups === void 0 ? {} : _ref2$stackGroups;\n if (!stackGroups) {\n return {};\n }\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n if (!result[cateId]) {\n result[cateId] = [];\n }\n var barSize = isNil(selfSize) ? globalSize : selfSize;\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: isNil(barSize) ? undefined : getPercentValue(barSize, totalSize, 0)\n });\n }\n }\n }\n return result;\n};\n/**\n * Calculate the size of each bar and offset between start of band and the bar\n *\n * @param {number} bandSize is the size of area where bars can render\n * @param {number | string} barGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {number | string} barCategoryGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {Array} sizeList Sizes of all groups\n * @param {number} maxBarSize The maximum size of each bar\n * @return {Array} The size and offset of each bar\n */\nexport var getBarPosition = function getBarPosition(_ref3) {\n var barGap = _ref3.barGap,\n barCategoryGap = _ref3.barCategoryGap,\n bandSize = _ref3.bandSize,\n _ref3$sizeList = _ref3.sizeList,\n sizeList = _ref3$sizeList === void 0 ? [] : _ref3$sizeList,\n maxBarSize = _ref3.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result;\n var initialValue = [];\n\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n // @ts-expect-error the type check above does not check for type number explicitly\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newPosition = {\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n // @ts-expect-error the type check above does not check for type number explicitly\n size: useFull ? fullBarSize : entry.barSize\n }\n };\n var newRes = [].concat(_toConsumableArray(res), [newPosition]);\n prev = newRes[newRes.length - 1].position;\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n return newRes;\n }, initialValue);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n return newRes;\n }, initialValue);\n }\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, _unused, props, legendBox) {\n var children = props.children,\n width = props.width,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n if (legendProps) {\n var _ref4 = legendBox || {},\n boxWidth = _ref4.width,\n boxHeight = _ref4.height;\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'middle') && align !== 'center' && isNumber(offset[align])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, offset[align] + (boxWidth || 0)));\n }\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && verticalAlign !== 'middle' && isNumber(offset[verticalAlign])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, offset[verticalAlign] + (boxHeight || 0)));\n }\n }\n return offset;\n};\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n if (isNil(axisType)) {\n return true;\n }\n if (layout === 'horizontal') {\n return axisType === 'yAxis';\n }\n if (layout === 'vertical') {\n return axisType === 'xAxis';\n }\n if (direction === 'x') {\n return axisType === 'xAxis';\n }\n if (direction === 'y') {\n return axisType === 'yAxis';\n }\n return true;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, ErrorBar).filter(function (errorBarChild) {\n return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n });\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey);\n if (isNil(entryValue)) return result;\n var mainValue = Array.isArray(entryValue) ? [min(entryValue), max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n }).filter(function (entry) {\n return !isNil(entry);\n });\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\n\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {LayoutType} layout The type of layout\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(\n // @ts-expect-error if (type === number) means that the domain is numerical type\n // - but this link is missing in the type definition\n function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n var tag = {};\n // Get the union set of category axis\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n // @ts-expect-error Date cannot index an object\n if (!tag[entry[i]]) {\n // @ts-expect-error Date cannot index an object\n tag[entry[i]] = true;\n\n // @ts-expect-error Date cannot index an object\n result.push(entry[i]);\n }\n }\n return result;\n }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} minValue The minimun value of axis\n * @param {Number} maxValue The maximun value of axis\n * @param {boolean} syncWithTicks Synchronize grid lines with ticks or not\n * @return {Array} Coordinates\n */\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, minValue, maxValue, syncWithTicks) {\n if (syncWithTicks) {\n return ticks.map(function (entry) {\n return entry.coordinate;\n });\n }\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === minValue) {\n hasMin = true;\n }\n if (entry.coordinate === maxValue) {\n hasMax = true;\n }\n return entry.coordinate;\n });\n if (!hasMin) {\n values.push(minValue);\n }\n if (!hasMax) {\n values.push(maxValue);\n }\n return values;\n};\n\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axis.axisType === 'angleAxis' && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n // The ticks set by user should only affect the ticks adjacent to axis line\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n var result = (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n return result.filter(function (row) {\n return !isNan(row.coordinate);\n });\n }\n\n // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nvar handlerWeakMap = new WeakMap();\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, childHandler) {\n if (typeof childHandler !== 'function') {\n return defaultHandler;\n }\n if (!handlerWeakMap.has(defaultHandler)) {\n handlerWeakMap.set(defaultHandler, new WeakMap());\n }\n var childWeakMap = handlerWeakMap.get(defaultHandler);\n if (childWeakMap.has(childHandler)) {\n return childWeakMap.get(childHandler);\n }\n var combineHandler = function combineHandler() {\n defaultHandler.apply(void 0, arguments);\n childHandler.apply(void 0, arguments);\n };\n childWeakMap.set(childHandler, combineHandler);\n return combineHandler;\n};\n\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {object} The scale function and resolved name\n */\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (isString(scale)) {\n var name = \"scale\".concat(upperFirst(scale));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n return isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n if (!domain || domain.length <= 2) {\n return;\n }\n var len = domain.length;\n var range = scale.range();\n var minValue = Math.min(range[0], range[1]) - EPS;\n var maxValue = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n return null;\n};\n\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param {Array} value input that will be truncated\n * @param {Array} domain boundaries\n * @returns {Array} tuple of two numbers\n */\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n if (!isNumber(value[0]) || value[0] < minValue) {\n result[0] = minValue;\n }\n if (!isNumber(value[1]) || value[1] > maxValue) {\n result[1] = maxValue;\n }\n if (result[0] > maxValue) {\n result[0] = maxValue;\n }\n if (result[1] < minValue) {\n result[1] = minValue;\n }\n return result;\n};\n\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */\n\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n // @ts-expect-error definitelytyped types are incorrect\n expand: stackOffsetExpand,\n // @ts-expect-error definitelytyped types are incorrect\n none: stackOffsetNone,\n // @ts-expect-error definitelytyped types are incorrect\n silhouette: stackOffsetSilhouette,\n // @ts-expect-error definitelytyped types are incorrect\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var offsetAccessor = STACK_OFFSET_MAP[offsetType];\n var stack = shapeStack()\n // @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n .keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone)\n // @ts-expect-error definitelytyped types are incorrect\n .offset(offsetAccessor);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n }\n\n // reversing items to affect render order (for layering)\n var items = reverseStackOrder ? _items.reverse() : _items;\n var parentStackGroupsInitialValue = {};\n var stackGroups = items.reduce(function (result, item) {\n var _item$props2 = item.props,\n stackId = _item$props2.stackId,\n hide = _item$props2.hide;\n if (hide) {\n return result;\n }\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, parentStackGroupsInitialValue);\n var axisStackGroupsInitialValue = {};\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n if (group.hasStack) {\n var stackGroupsInitialValue = {};\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, stackGroupsInitialValue);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, axisStackGroupsInitialValue);\n};\n\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n if (!domain.length) {\n return null;\n }\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain([min(tickValues), max(tickValues)]);\n return {\n niceTicks: tickValues\n };\n }\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n return {\n niceTicks: _tickValues\n };\n }\n return null;\n};\nexport function getCateCoordinateOfLine(_ref5) {\n var axis = _ref5.axis,\n ticks = _ref5.ticks,\n bandSize = _ref5.bandSize,\n entry = _ref5.entry,\n index = _ref5.index,\n dataKey = _ref5.dataKey;\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n if (!axis.allowDuplicatedCategory && axis.dataKey && !isNil(entry[axis.dataKey])) {\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n var value = getValueByDataKey(entry, !isNil(dataKey) ? dataKey : axis.dataKey);\n return !isNil(value) ? axis.scale(value) : null;\n}\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref6) {\n var axis = _ref6.axis,\n ticks = _ref6.ticks,\n offset = _ref6.offset,\n bandSize = _ref6.bandSize,\n entry = _ref6.entry,\n index = _ref6.index;\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref7) {\n var numericAxis = _ref7.numericAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n if (minValue <= 0 && maxValue >= 0) {\n return 0;\n }\n if (maxValue < 0) {\n return maxValue;\n }\n return minValue;\n }\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n if (group) {\n var itemIndex = group.items.indexOf(item);\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n return null;\n};\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [min(entry.concat([result[0]]).filter(isNumber)), max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (isFunction(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n if (!Array.isArray(specifiedDomain)) {\n return dataDomain;\n }\n var domain = [];\n\n /* eslint-disable prefer-destructuring */\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n domain[1] = dataDomain[1] + _value;\n } else if (isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n return domain;\n};\n\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n // @ts-expect-error we need to rethink scale type\n if (axis && axis.scale && axis.scale.bandwidth) {\n // @ts-expect-error we need to rethink scale type\n var bandWidth = axis.scale.bandwidth();\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = sortBy(ticks, function (o) {\n return o.coordinate;\n });\n var bandSize = Infinity;\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n return bandSize === Infinity ? 0 : bandSize;\n }\n return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis ReactElement\n * @returns {Array} domains\n */\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n if (isEqual(specifiedDomain, get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var _graphicalItem$props = graphicalItem.props,\n dataKey = _graphicalItem$props.dataKey,\n name = _graphicalItem$props.name,\n unit = _graphicalItem$props.unit,\n formatter = _graphicalItem$props.formatter,\n tooltipType = _graphicalItem$props.tooltipType,\n chartType = _graphicalItem$props.chartType,\n hide = _graphicalItem$props.hide;\n return _objectSpread(_objectSpread({}, filterProps(graphicalItem, false)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType,\n hide: hide\n });\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport isNil from 'lodash/isNil';\nimport { isValidElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n if (isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n var _range2 = _slicedToArray(_range, 2);\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n if (radius === 0) {\n return true;\n }\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n var formatAngle = angle;\n var inRange;\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n return null;\n};\nexport var getTickClassName = function getTickClassName(tick) {\n return ! /*#__PURE__*/isValidElement(tick) && !isFunction(tick) && typeof tick !== 'boolean' ? tick.className : '';\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"offset\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport clsx from 'clsx';\nimport { Text } from './Text';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = isNil(props.children) ? value : props.children;\n if (isFunction(formatter)) {\n return formatter(label);\n }\n return label;\n};\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: clsx('recharts-radial-bar-label', className)\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n var r = (innerRadius + outerRadius) / 2;\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n parentViewBox = props.parentViewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n // Define vertical offsets and position inverts based on the value being positive or negative\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end';\n\n // Define horizontal offsets and position inverts based on the value being positive or negative\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return _objectSpread({\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\nvar isPolar = function isPolar(viewBox) {\n return 'cx' in viewBox && isNumber(viewBox.cx);\n};\nexport function Label(_ref4) {\n var _ref4$offset = _ref4.offset,\n offset = _ref4$offset === void 0 ? 5 : _ref4$offset,\n restProps = _objectWithoutProperties(_ref4, _excluded);\n var props = _objectSpread({\n offset: offset\n }, restProps);\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n textBreakAll = props.textBreakAll;\n if (!viewBox || isNil(value) && isNil(children) && ! /*#__PURE__*/isValidElement(content) && !isFunction(content)) {\n return null;\n }\n if ( /*#__PURE__*/isValidElement(content)) {\n return /*#__PURE__*/cloneElement(content, props);\n }\n var label;\n if (isFunction(content)) {\n label = /*#__PURE__*/createElement(content, props);\n if ( /*#__PURE__*/isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/React.createElement(Text, _extends({\n className: clsx('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise,\n labelViewBox = props.labelViewBox;\n if (labelViewBox) {\n return labelViewBox;\n }\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n if (props.viewBox) {\n return props.viewBox;\n }\n return {};\n};\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n if (isNumOrStr(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n if ( /*#__PURE__*/isValidElement(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (isFunction(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (isObject(label)) {\n return /*#__PURE__*/React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n return null;\n};\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = findAllByType(children, Label).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n // eslint-disable-next-line react/no-array-index-key\n key: \"label-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"valueAccessor\"],\n _excluded2 = [\"data\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { cloneElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isObject from 'lodash/isObject';\nimport isFunction from 'lodash/isFunction';\nimport last from 'lodash/last';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nvar defaultAccessor = function defaultAccessor(entry) {\n return Array.isArray(entry.value) ? last(entry.value) : entry.value;\n};\nexport function LabelList(_ref) {\n var _ref$valueAccessor = _ref.valueAccessor,\n valueAccessor = _ref$valueAccessor === void 0 ? defaultAccessor : _ref$valueAccessor,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var data = restProps.data,\n dataKey = restProps.dataKey,\n clockWise = restProps.clockWise,\n id = restProps.id,\n textBreakAll = restProps.textBreakAll,\n others = _objectWithoutProperties(restProps, _excluded2);\n if (!data || !data.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: Label.parseViewBox(isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n ,\n index: index\n }));\n }));\n}\nLabelList.displayName = 'LabelList';\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n if ( /*#__PURE__*/React.isValidElement(label) || isFunction(label)) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n if (isObject(label)) {\n return /*#__PURE__*/React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n return null;\n}\nfunction renderCallByParent(parentProps, data) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var explicitChildren = findAllByType(children, LabelList).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n data: data,\n // eslint-disable-next-line react/no-array-index-key\n key: \"labelList-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChildren));\n}\nLabelList.renderCallByParent = renderCallByParent;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Sector\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle);\n\n // When the angle of sector equals to 360, star point and end point coincide\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n return path;\n};\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n return path;\n};\nvar defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nexport var Sector = function Sector(sectorProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), sectorProps);\n var cx = props.cx,\n cy = props.cy,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n cornerRadius = props.cornerRadius,\n forceCornerRadius = props.forceCornerRadius,\n cornerIsExternal = props.cornerIsExternal,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n className = props.className;\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n var layerClass = clsx('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: path,\n role: \"img\"\n }));\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'victory-vendor/d3-shape';\nimport upperFirst from 'lodash/upperFirst';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveBumpX: curveBumpX,\n curveBumpY: curveBumpY,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\nvar getX = function getX(p) {\n return p.x;\n};\nvar getY = function getY(p) {\n return p.y;\n};\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (isFunction(type)) {\n return type;\n }\n var name = \"curve\".concat(upperFirst(type));\n if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n return CURVE_FACTORIES[name] || curveLinear;\n};\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */\nexport var getPath = function getPath(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'linear' : _ref$type,\n _ref$points = _ref.points,\n points = _ref$points === void 0 ? [] : _ref$points,\n baseLine = _ref.baseLine,\n layout = _ref.layout,\n _ref$connectNulls = _ref.connectNulls,\n connectNulls = _ref$connectNulls === void 0 ? false : _ref$connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n if (Array.isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n};\nexport var Curve = function Curve(props) {\n var className = props.className,\n points = props.points,\n path = props.path,\n pathRef = props.pathRef;\n if ((!points || !points.length) && !path) {\n return null;\n }\n var realPath = points && points.length ? getPath(props) : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n className: clsx('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n};","var getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n return function isEqual(a, b, state) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n return function isCircular(a, b, state) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n var cache = state.cache;\n var cachedA = cache.get(a);\n var cachedB = cache.get(b);\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n cache.set(a, b);\n cache.set(b, a);\n var result = areItemsEqual(a, b, state);\n cache.delete(a);\n cache.delete(b);\n return result;\n };\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nvar hasOwn = Object.hasOwn ||\n (function (object, property) {\n return hasOwnProperty.call(object, property);\n });\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n\nvar OWNER = '_owner';\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, keys = Object.keys;\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.entries();\n var index = 0;\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.entries();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n var _a = aResult.value, aKey = _a[0], aValue = _a[1];\n var _b = bResult.value, bKey = _b[0], bValue = _b[1];\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch =\n state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n state.equals(aValue, bValue, aKey, bKey, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n index++;\n }\n return true;\n}\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n var properties = keys(a);\n var index = properties.length;\n if (keys(b).length !== index) {\n return false;\n }\n var property;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property) ||\n !state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n var properties = getStrictProperties(a);\n var index = properties.length;\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n var property;\n var descriptorA;\n var descriptorB;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property)) {\n return false;\n }\n if (!state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n if ((descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.values();\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.values();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n return true;\n}\n\nvar ARGUMENTS_TAG = '[object Arguments]';\nvar BOOLEAN_TAG = '[object Boolean]';\nvar DATE_TAG = '[object Date]';\nvar MAP_TAG = '[object Map]';\nvar NUMBER_TAG = '[object Number]';\nvar OBJECT_TAG = '[object Object]';\nvar REG_EXP_TAG = '[object RegExp]';\nvar SET_TAG = '[object Set]';\nvar STRING_TAG = '[object String]';\nvar isArray = Array.isArray;\nvar isTypedArray = typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nvar assign = Object.assign;\nvar getTag = Object.prototype.toString.call.bind(Object.prototype.toString);\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator(_a) {\n var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, arePrimitiveWrappersEqual = _a.arePrimitiveWrappersEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, areTypedArraysEqual = _a.areTypedArraysEqual;\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a, b, state) {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n // If the items are not non-nullish objects, then the only possibility\n // of them being equal but not strictly is if they are both `NaN`. Since\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\n // both objects, which is faster than `isNaN()`.\n if (a == null ||\n b == null ||\n typeof a !== 'object' ||\n typeof b !== 'object') {\n return a !== a && b !== b;\n }\n var constructor = a.constructor;\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n // capturing the string tag or comparing against all possible constructors.\n if (isTypedArray != null && isTypedArray(a)) {\n return areTypedArraysEqual(a, b, state);\n }\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n var tag = getTag(a);\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return (typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state));\n }\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig(_a) {\n var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;\n var config = {\n areArraysEqual: strict\n ? areObjectsEqualStrict\n : areArraysEqual,\n areDatesEqual: areDatesEqual,\n areMapsEqual: strict\n ? combineComparators(areMapsEqual, areObjectsEqualStrict)\n : areMapsEqual,\n areObjectsEqual: strict\n ? areObjectsEqualStrict\n : areObjectsEqual,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n areRegExpsEqual: areRegExpsEqual,\n areSetsEqual: strict\n ? combineComparators(areSetsEqual, areObjectsEqualStrict)\n : areSetsEqual,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrict\n : areTypedArraysEqual,\n };\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n if (circular) {\n var areArraysEqual$1 = createIsCircular(config.areArraysEqual);\n var areMapsEqual$1 = createIsCircular(config.areMapsEqual);\n var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);\n var areSetsEqual$1 = createIsCircular(config.areSetsEqual);\n config = assign({}, config, {\n areArraysEqual: areArraysEqual$1,\n areMapsEqual: areMapsEqual$1,\n areObjectsEqual: areObjectsEqual$1,\n areSetsEqual: areSetsEqual$1,\n });\n }\n return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n return compare(a, b, state);\n };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual(_a) {\n var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;\n if (createState) {\n return function isEqual(a, b) {\n var _a = createState(), _b = _a.cache, cache = _b === void 0 ? circular ? new WeakMap() : undefined : _b, meta = _a.meta;\n return comparator(a, b, {\n cache: cache,\n equals: equals,\n meta: meta,\n strict: strict,\n });\n };\n }\n if (circular) {\n return function isEqual(a, b) {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals: equals,\n meta: undefined,\n strict: strict,\n });\n };\n }\n var state = {\n cache: undefined,\n equals: equals,\n meta: undefined,\n strict: strict,\n };\n return function isEqual(a, b) {\n return comparator(a, b, state);\n };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nvar deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nvar strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nvar circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nvar shallowEqual = createCustomEqual({\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nvar strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nvar circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options) {\n if (options === void 0) { options = {}; }\n var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;\n var config = createEqualityComparatorConfig(options);\n var comparator = createEqualityComparator(config);\n var equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n return createIsEqual({ circular: circular, comparator: comparator, createState: createState, equals: equals, strict: strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictShallowEqual };\n//# sourceMappingURL=index.mjs.map\n","function safeRequestAnimationFrame(callback) {\n if (typeof requestAnimationFrame !== 'undefined') requestAnimationFrame(callback);\n}\nexport default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n safeRequestAnimationFrame(shouldUpdate);\n }\n };\n requestAnimationFrame(shouldUpdate);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n var handleChange = function handleChange() {\n return null;\n };\n var shouldStop = false;\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n var styles = _style;\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n if (typeof _style === 'function') {\n _style();\n }\n };\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-console: 0 */\n\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n return a.filter(function (c) {\n return b.includes(c);\n });\n });\n};\nexport var identity = function identity(param) {\n return param;\n};\n\n/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\nexport var log = function log() {\n var _console;\n (_console = console).log.apply(_console, arguments);\n};\n\n/*\n * @description: log the value of a varible\n * string => any => any\n */\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)), [0]);\n return multyTime(newParams, t);\n };\n};\n\n// calculate cubic-bezier using Newton's method\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n default:\n {\n var easing = args[0].split('(');\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + \"oneOf 'linear', 'ease', 'ease-in', 'ease-out', \" + \"'ease-in-out','cubic-bezier(x1,y1,x2,y2)', instead received %s\", args);\n }\n }\n }\n }\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n }\n if (value < 0) {\n return 0;\n }\n return value;\n };\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n x = rangeValue(x - evalT / derVal);\n }\n return curveY(x);\n };\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n return [newX, newV];\n };\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var easing = args[0];\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n case 'spring':\n return configSpring();\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n warn(false, \"[configEasing]: first argument should be one of 'ease', 'ease-in', \" + \"'ease-out', 'ease-in-out','cubic-bezier(x1,y1,x2,y2)', 'linear' and 'spring', instead received %s\", args);\n }\n }\n if (typeof easing === 'function') {\n return easing;\n }\n warn(false, '[configEasing]: first argument type should be function or string, instead received %s', args);\n return null;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getIntersectionKeys, mapObject } from './util';\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n return val;\n }, preVals);\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread(_objectSpread({}, val), {}, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n return val;\n }, preVals);\n }\n return calStepperVals(easing, nextStepVals, steps - 1);\n};\n\n// configure update function\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n var update = function update() {\n return null;\n };\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n var shouldStopAnimation = function shouldStopAnimation() {\n return !Object.values(stepperStyle).filter(needContinue).length;\n };\n\n // stepper timing function like spring\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps);\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n preTime = now;\n if (!shouldStopAnimation()) {\n cafId = requestAnimationFrame(update);\n }\n };\n\n // t => val timing function like cubic-bezier\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle);\n\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n if (t < 1) {\n cafId = requestAnimationFrame(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n }\n };\n update = easing.isStepper ? stepperUpdate : timingUpdate;\n\n // return start animation method\n return function () {\n requestAnimationFrame(update);\n\n // return stop animation method\n return function () {\n cancelAnimationFrame(cafId);\n };\n };\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity } from './util';\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n _inherits(Animate, _PureComponent);\n var _super = _createSuper(Animate);\n function Animate(props, context) {\n var _this;\n _classCallCheck(this, Animate);\n _this = _super.call(this, props, context);\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children,\n duration = _this$props.duration;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n if (!isActive || duration <= 0) {\n _this.state = {\n style: {}\n };\n\n // if children is a function and animation is not active, set style to 'to'\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n return _possibleConstructorReturn(_this);\n }\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n return _this;\n }\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n if (!isActive || !canBegin) {\n return;\n }\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate,\n to = _this$props3.to,\n currentFrom = _this$props3.from;\n var style = this.state.style;\n if (!canBegin) {\n return;\n }\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, to) : to\n };\n if (this.state && style) {\n if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n return;\n }\n if (deepEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n if (this.manager) {\n this.manager.stop();\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n if (this.state && style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n if (attributeName && style[attributeName] !== from || !attributeName && style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\n }\n this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n var onAnimationEnd = this.props.onAnimationEnd;\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n if (typeof easing === 'function' || easing === 'spring') {\n return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n var transition = getTransitionVal(properties, duration, easing);\n var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n transition: transition\n });\n return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n };\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, _excluded);\n var count = Children.count(children);\n // eslint-disable-next-line react/destructuring-assignment\n var stateStyle = this.state.style;\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n if (!isActive || count === 0 || duration <= 0) {\n return children;\n }\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n style: _objectSpread(_objectSpread({}, style), stateStyle),\n className: className\n }));\n return res;\n };\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n return Animate;\n}(PureComponent);\nAnimate.displayName = 'Animate';\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nexport default Animate;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","var _excluded = [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n if (Number.isFinite(duration)) {\n return duration;\n }\n return 0;\n};\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n _inherits(AnimateGroupChild, _Component);\n var _super = _createSuper(AnimateGroupChild);\n function AnimateGroupChild() {\n var _this;\n _classCallCheck(this, AnimateGroupChild);\n _this = _super.call(this);\n _defineProperty(_assertThisInitialized(_this), \"handleEnter\", function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n });\n _defineProperty(_assertThisInitialized(_this), \"handleExit\", function () {\n var leaveOptions = _this.props.leaveOptions;\n _this.handleStyleActive(leaveOptions);\n });\n _this.state = {\n isActive: false\n };\n return _this;\n }\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread(_objectSpread({}, style), {}, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, _excluded);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n return AnimateGroupChild;\n}(Component);\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return /*#__PURE__*/React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index) // eslint-disable-line\n }, child);\n }));\n}\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n return path;\n};\nexport var isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n var px = point.x,\n py = point.y;\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n return false;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport var Rectangle = function Rectangle(rectangleProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), rectangleProps);\n var pathRef = useRef();\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n totalLength = _useState2[0],\n setTotalLength = _useState2[1];\n useEffect(function () {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n radius = props.radius,\n className = props.className;\n var animationEasing = props.animationEasing,\n animationDuration = props.animationDuration,\n animationBegin = props.animationBegin,\n isAnimationActive = props.isAnimationActive,\n isUpdateAnimationActive = props.isUpdateAnimationActive;\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n var layerClass = clsx('recharts-rectangle', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: pathRef\n })));\n });\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Dot\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nexport var Dot = function Dot(props) {\n var cx = props.cx,\n cy = props.cy,\n r = props.r,\n className = props.className;\n var layerClass = clsx('recharts-dot', className);\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n return null;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"x\", \"y\", \"top\", \"left\", \"width\", \"height\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Cross\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getPath = function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nexport var Cross = function Cross(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$top = _ref.top,\n top = _ref$top === void 0 ? 0 : _ref$top,\n _ref$left = _ref.left,\n left = _ref$left === void 0 ? 0 : _ref$left,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? 0 : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? 0 : _ref$height,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread({\n x: x,\n y: y,\n top: top,\n left: left,\n width: width,\n height: height\n }, rest);\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: clsx('recharts-cross', className),\n d: getPath(x, y, width, height, top, left)\n }));\n};","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getTrapezoidPath = function getTrapezoidPath(x, y, upperWidth, lowerWidth, height) {\n var widthGap = upperWidth - lowerWidth;\n var path;\n path = \"M \".concat(x, \",\").concat(y);\n path += \"L \".concat(x + upperWidth, \",\").concat(y);\n path += \"L \".concat(x + upperWidth - widthGap / 2, \",\").concat(y + height);\n path += \"L \".concat(x + upperWidth - widthGap / 2 - lowerWidth, \",\").concat(y + height);\n path += \"L \".concat(x, \",\").concat(y, \" Z\");\n return path;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n upperWidth: 0,\n lowerWidth: 0,\n height: 0,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport var Trapezoid = function Trapezoid(props) {\n var trapezoidProps = _objectSpread(_objectSpread({}, defaultProps), props);\n var pathRef = useRef();\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n totalLength = _useState2[0],\n setTotalLength = _useState2[1];\n useEffect(function () {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = trapezoidProps.x,\n y = trapezoidProps.y,\n upperWidth = trapezoidProps.upperWidth,\n lowerWidth = trapezoidProps.lowerWidth,\n height = trapezoidProps.height,\n className = trapezoidProps.className;\n var animationEasing = trapezoidProps.animationEasing,\n animationDuration = trapezoidProps.animationDuration,\n animationBegin = trapezoidProps.animationBegin,\n isUpdateAnimationActive = trapezoidProps.isUpdateAnimationActive;\n if (x !== +x || y !== +y || upperWidth !== +upperWidth || lowerWidth !== +lowerWidth || height !== +height || upperWidth === 0 && lowerWidth === 0 || height === 0) {\n return null;\n }\n var layerClass = clsx('recharts-trapezoid', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(x, y, upperWidth, lowerWidth, height)\n })));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n upperWidth: 0,\n lowerWidth: 0,\n height: height,\n x: x,\n y: y\n },\n to: {\n upperWidth: upperWidth,\n lowerWidth: lowerWidth,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currUpperWidth = _ref.upperWidth,\n currLowerWidth = _ref.lowerWidth,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight),\n ref: pathRef\n })));\n });\n};","var _excluded = [\"option\", \"shapeType\", \"propTransformer\", \"activeClassName\", \"isActive\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { isValidElement, cloneElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isBoolean from 'lodash/isBoolean';\nimport isEqual from 'lodash/isEqual';\nimport { Rectangle } from '../shape/Rectangle';\nimport { Trapezoid } from '../shape/Trapezoid';\nimport { Sector } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { Symbols } from '../shape/Symbols';\n\n/**\n * This is an abstraction for rendering a user defined prop for a customized shape in several forms.\n *\n * is the root and will handle taking in:\n * - an object of svg properties\n * - a boolean\n * - a render prop(inline function that returns jsx)\n * - a react element\n *\n * is a subcomponent of and used to match a component\n * to the value of props.shapeType that is passed to the root.\n *\n */\n\nfunction defaultPropTransformer(option, props) {\n return _objectSpread(_objectSpread({}, props), option);\n}\nfunction isSymbolsProps(shapeType, _elementProps) {\n return shapeType === 'symbols';\n}\nfunction ShapeSelector(_ref) {\n var shapeType = _ref.shapeType,\n elementProps = _ref.elementProps;\n switch (shapeType) {\n case 'rectangle':\n return /*#__PURE__*/React.createElement(Rectangle, elementProps);\n case 'trapezoid':\n return /*#__PURE__*/React.createElement(Trapezoid, elementProps);\n case 'sector':\n return /*#__PURE__*/React.createElement(Sector, elementProps);\n case 'symbols':\n if (isSymbolsProps(shapeType, elementProps)) {\n return /*#__PURE__*/React.createElement(Symbols, elementProps);\n }\n break;\n default:\n return null;\n }\n}\nexport function getPropsFromShapeOption(option) {\n if ( /*#__PURE__*/isValidElement(option)) {\n return option.props;\n }\n return option;\n}\nexport function Shape(_ref2) {\n var option = _ref2.option,\n shapeType = _ref2.shapeType,\n _ref2$propTransformer = _ref2.propTransformer,\n propTransformer = _ref2$propTransformer === void 0 ? defaultPropTransformer : _ref2$propTransformer,\n _ref2$activeClassName = _ref2.activeClassName,\n activeClassName = _ref2$activeClassName === void 0 ? 'recharts-active-shape' : _ref2$activeClassName,\n isActive = _ref2.isActive,\n props = _objectWithoutProperties(_ref2, _excluded);\n var shape;\n if ( /*#__PURE__*/isValidElement(option)) {\n shape = /*#__PURE__*/cloneElement(option, _objectSpread(_objectSpread({}, props), getPropsFromShapeOption(option)));\n } else if (isFunction(option)) {\n shape = option(props);\n } else if (isPlainObject(option) && !isBoolean(option)) {\n var nextProps = propTransformer(option, props);\n shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: nextProps\n });\n } else {\n var elementProps = props;\n shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: elementProps\n });\n }\n if (isActive) {\n return /*#__PURE__*/React.createElement(Layer, {\n className: activeClassName\n }, shape);\n }\n return shape;\n}\n\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */\n\nexport function isFunnel(graphicalItem, _item) {\n return _item != null && 'trapezoids' in graphicalItem.props;\n}\nexport function isPie(graphicalItem, _item) {\n return _item != null && 'sectors' in graphicalItem.props;\n}\nexport function isScatter(graphicalItem, _item) {\n return _item != null && 'points' in graphicalItem.props;\n}\nexport function compareFunnel(shapeData, activeTooltipItem) {\n var _activeTooltipItem$la, _activeTooltipItem$la2;\n var xMatches = shapeData.x === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la === void 0 ? void 0 : _activeTooltipItem$la.x) || shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la2 = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la2 === void 0 ? void 0 : _activeTooltipItem$la2.y) || shapeData.y === activeTooltipItem.y;\n return xMatches && yMatches;\n}\nexport function comparePie(shapeData, activeTooltipItem) {\n var startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n var endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n return startAngleMatches && endAngleMatches;\n}\nexport function compareScatter(shapeData, activeTooltipItem) {\n var xMatches = shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === activeTooltipItem.y;\n var zMatches = shapeData.z === activeTooltipItem.z;\n return xMatches && yMatches && zMatches;\n}\nfunction getComparisonFn(graphicalItem, activeItem) {\n var comparison;\n if (isFunnel(graphicalItem, activeItem)) {\n comparison = compareFunnel;\n } else if (isPie(graphicalItem, activeItem)) {\n comparison = comparePie;\n } else if (isScatter(graphicalItem, activeItem)) {\n comparison = compareScatter;\n }\n return comparison;\n}\nfunction getShapeDataKey(graphicalItem, activeItem) {\n var shapeKey;\n if (isFunnel(graphicalItem, activeItem)) {\n shapeKey = 'trapezoids';\n } else if (isPie(graphicalItem, activeItem)) {\n shapeKey = 'sectors';\n } else if (isScatter(graphicalItem, activeItem)) {\n shapeKey = 'points';\n }\n return shapeKey;\n}\nfunction getActiveShapeTooltipPayload(graphicalItem, activeItem) {\n if (isFunnel(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa;\n return (_activeItem$tooltipPa = activeItem.tooltipPayload) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa[0]) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa.payload) === null || _activeItem$tooltipPa === void 0 ? void 0 : _activeItem$tooltipPa.payload;\n }\n if (isPie(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa2;\n return (_activeItem$tooltipPa2 = activeItem.tooltipPayload) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2[0]) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2.payload) === null || _activeItem$tooltipPa2 === void 0 ? void 0 : _activeItem$tooltipPa2.payload;\n }\n if (isScatter(graphicalItem, activeItem)) {\n return activeItem.payload;\n }\n return {};\n}\n/**\n *\n * @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip\n * @returns {number}\n *\n * To handle possible duplicates in the data set,\n * match both the data value of the active item to a data value on a graph item,\n * and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.\n * This assumes equal lengths of shape objects to data items.\n */\nexport function getActiveShapeIndexForTooltip(_ref3) {\n var activeTooltipItem = _ref3.activeTooltipItem,\n graphicalItem = _ref3.graphicalItem,\n itemData = _ref3.itemData;\n var shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n var tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n var activeItemMatches = itemData.filter(function (datum, dataIndex) {\n var valuesMatch = isEqual(tooltipPayload, datum);\n var mouseCoordinateMatches = graphicalItem.props[shapeKey].filter(function (shapeData) {\n var comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n return comparison(shapeData, activeTooltipItem);\n });\n\n // get the last index in case of multiple matches\n var indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(mouseCoordinateMatches[mouseCoordinateMatches.length - 1]);\n var coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n return valuesMatch && coordinatesMatch;\n });\n\n // get the last index in case of multiple matches\n var activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n return activeIndex;\n}","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport clsx from 'clsx';\nimport { scalePoint } from 'victory-vendor/d3-scale';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar createScale = function createScale(_ref) {\n var data = _ref.data,\n startIndex = _ref.startIndex,\n endIndex = _ref.endIndex,\n x = _ref.x,\n width = _ref.width,\n travellerWidth = _ref.travellerWidth;\n if (!data || !data.length) {\n return {};\n }\n var len = data.length;\n var scale = scalePoint().domain(range(0, len)).range([x, x + width - travellerWidth]);\n var scaleValues = scale.domain().map(function (entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n isTravellerFocused: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n _inherits(Brush, _PureComponent);\n function Brush(props) {\n var _this;\n _classCallCheck(this, Brush);\n _this = _callSuper(this, Brush, [props]);\n _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleDragEnd\", function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n }, function () {\n var _this$props = _this.props,\n endIndex = _this$props.endIndex,\n onDragEnd = _this$props.onDragEnd,\n startIndex = _this$props.startIndex;\n onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n endIndex: endIndex,\n startIndex: startIndex\n });\n });\n _this.detachDragEndListener();\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveWrapper\", function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleEnterSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: false\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleSlideDragStart\", function (e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n _this.attachDragEndListener();\n });\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n };\n _this.state = {};\n return _this;\n }\n _createClass(Brush, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n this.detachDragEndListener();\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX,\n endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props2 = this.props,\n gap = _this$props2.gap,\n data = _this$props2.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props3 = this.props,\n data = _this$props3.data,\n tickFormatter = _this$props3.tickFormatter,\n dataKey = _this$props3.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n }\n }, {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener('mouseup', this.handleDragEnd, true);\n window.addEventListener('touchend', this.handleDragEnd, true);\n window.addEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener('mouseup', this.handleDragEnd, true);\n window.removeEventListener('touchend', this.handleDragEnd, true);\n window.removeEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n startIndex = _this$props4.startIndex,\n endIndex = _this$props4.endIndex,\n onChange = _this$props4.onChange;\n var delta = e.pageX - slideMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props5 = this.props,\n x = _this$props5.x,\n width = _this$props5.width,\n travellerWidth = _this$props5.travellerWidth,\n onChange = _this$props5.onChange,\n gap = _this$props5.gap,\n data = _this$props5.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n return false;\n };\n this.setState(_defineProperty(_defineProperty({}, movingTravellerId, prevValue + delta), \"brushMoveStartX\", e.pageX), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"handleTravellerMoveKeyboard\",\n value: function handleTravellerMoveKeyboard(direction, id) {\n var _this2 = this;\n // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n var _this$state3 = this.state,\n scaleValues = _this$state3.scaleValues,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n // currentScaleValue refers to which coordinate the current traveller should be placed at.\n var currentScaleValue = this.state[id];\n var currentIndex = scaleValues.indexOf(currentScaleValue);\n if (currentIndex === -1) {\n return;\n }\n var newIndex = currentIndex + direction;\n if (newIndex === -1 || newIndex >= scaleValues.length) {\n return;\n }\n var newScaleValue = scaleValues[newIndex];\n\n // Prevent travellers from being on top of each other or overlapping\n if (id === 'startX' && newScaleValue >= endX || id === 'endX' && newScaleValue <= startX) {\n return;\n }\n this.setState(_defineProperty({}, id, newScaleValue), function () {\n _this2.props.onChange(_this2.getIndex({\n startX: _this2.state.startX,\n endX: _this2.state.endX\n }));\n });\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n fill = _this$props6.fill,\n stroke = _this$props6.stroke;\n return /*#__PURE__*/React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props7 = this.props,\n x = _this$props7.x,\n y = _this$props7.y,\n width = _this$props7.width,\n height = _this$props7.height,\n data = _this$props7.data,\n children = _this$props7.children,\n padding = _this$props7.padding;\n var chartElement = Children.only(children);\n if (!chartElement) {\n return null;\n }\n return /*#__PURE__*/React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _data$startIndex,\n _data$endIndex,\n _this3 = this;\n var _this$props8 = this.props,\n y = _this$props8.y,\n travellerWidth = _this$props8.travellerWidth,\n height = _this$props8.height,\n traveller = _this$props8.traveller,\n ariaLabel = _this$props8.ariaLabel,\n data = _this$props8.data,\n startIndex = _this$props8.startIndex,\n endIndex = _this$props8.endIndex;\n var x = Math.max(travellerX, this.props.x);\n var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props, false)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n var ariaLabelBrush = ariaLabel || \"Min value: \".concat((_data$startIndex = data[startIndex]) === null || _data$startIndex === void 0 ? void 0 : _data$startIndex.name, \", Max value: \").concat((_data$endIndex = data[endIndex]) === null || _data$endIndex === void 0 ? void 0 : _data$endIndex.name);\n return /*#__PURE__*/React.createElement(Layer, {\n tabIndex: 0,\n role: \"slider\",\n \"aria-label\": ariaLabelBrush,\n \"aria-valuenow\": travellerX,\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n onKeyDown: function onKeyDown(e) {\n if (!['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n _this3.handleTravellerMoveKeyboard(e.key === 'ArrowRight' ? 1 : -1, id);\n },\n onFocus: function onFocus() {\n _this3.setState({\n isTravellerFocused: true\n });\n },\n onBlur: function onBlur() {\n _this3.setState({\n isTravellerFocused: false\n });\n },\n style: {\n cursor: 'col-resize'\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props9 = this.props,\n y = _this$props9.y,\n height = _this$props9.height,\n stroke = _this$props9.stroke,\n travellerWidth = _this$props9.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props10 = this.props,\n startIndex = _this$props10.startIndex,\n endIndex = _this$props10.endIndex,\n y = _this$props10.y,\n height = _this$props10.height,\n travellerWidth = _this$props10.travellerWidth,\n stroke = _this$props10.stroke;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props,\n data = _this$props11.data,\n className = _this$props11.className,\n children = _this$props11.children,\n x = _this$props11.x,\n y = _this$props11.y,\n width = _this$props11.width,\n height = _this$props11.height,\n alwaysShowText = _this$props11.alwaysShowText;\n var _this$state5 = this.state,\n startX = _this$state5.startX,\n endX = _this$state5.endX,\n isTextActive = _this$state5.isTextActive,\n isSlideMoving = _this$state5.isSlideMoving,\n isTravellerMoving = _this$state5.isTravellerMoving,\n isTravellerFocused = _this$state5.isTravellerFocused;\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n var layerClass = clsx('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n return rectangle;\n }\n }, {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data,\n width = nextProps.width,\n x = nextProps.x,\n travellerWidth = nextProps.travellerWidth,\n updateId = nextProps.updateId,\n startIndex = nextProps.startIndex,\n endIndex = nextProps.endIndex;\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([x, x + width - travellerWidth]);\n var scaleValues = prevState.scale.domain().map(function (entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n return null;\n }\n }, {\n key: \"getIndexInRange\",\n value: function getIndexInRange(valueRange, x) {\n var len = valueRange.length;\n var start = 0;\n var end = len - 1;\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n if (valueRange[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n return x >= valueRange[end] ? end : start;\n }\n }]);\n return Brush;\n}(PureComponent);\n_defineProperty(Brush, \"displayName\", 'Brush');\n_defineProperty(Brush, \"defaultProps\", {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n});","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n return ifOverflow === value;\n};","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","var _excluded = [\"x\", \"y\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Shape } from './ActiveShapeUtils';\n\n// Rectangle props is expecting x, y, height, width as numbers, name as a string, and radius as a custom type\n// When props are being spread in from a user defined component in Bar,\n// the prop types of an SVGElement have these typed as something else.\n// This function will return the passed in props\n// along with x, y, height as numbers, name as a string, and radius as number | [number, number, number, number]\nfunction typeguardBarRectangleProps(_ref, props) {\n var xProp = _ref.x,\n yProp = _ref.y,\n option = _objectWithoutProperties(_ref, _excluded);\n var xValue = \"\".concat(xProp);\n var x = parseInt(xValue, 10);\n var yValue = \"\".concat(yProp);\n var y = parseInt(yValue, 10);\n var heightValue = \"\".concat(props.height || option.height);\n var height = parseInt(heightValue, 10);\n var widthValue = \"\".concat(props.width || option.width);\n var width = parseInt(widthValue, 10);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), option), x ? {\n x: x\n } : {}), y ? {\n y: y\n } : {}), {}, {\n height: height,\n width: width,\n name: props.name,\n radius: props.radius\n });\n}\nexport function BarRectangle(props) {\n return /*#__PURE__*/React.createElement(Shape, _extends({\n shapeType: \"rectangle\",\n propTransformer: typeguardBarRectangleProps,\n activeClassName: \"recharts-active-bar\"\n }, props));\n}\n/**\n * Safely gets minPointSize from from the minPointSize prop if it is a function\n * @param minPointSize minPointSize as passed to the Bar component\n * @param defaultValue default minPointSize\n * @returns minPointSize\n */\nexport var minPointSizeCallback = function minPointSizeCallback(minPointSize) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return function (value, index) {\n if (typeof minPointSize === 'number') return minPointSize;\n var isValueNumber = typeof value === 'number';\n if (isValueNumber) {\n return minPointSize(value, index);\n }\n !isValueNumber ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"minPointSize callback function received a value with type of \".concat(_typeof(value), \". Currently only numbers are supported.\")) : invariant(false) : void 0;\n return defaultValue;\n };\n};","var _excluded = [\"value\", \"background\"];\nvar _Bar;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { filterProps, findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar, getTooltipItem } from '../util/ChartUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { BarRectangle, minPointSizeCallback } from '../util/BarUtils';\nexport var Bar = /*#__PURE__*/function (_PureComponent) {\n _inherits(Bar, _PureComponent);\n function Bar() {\n var _this;\n _classCallCheck(this, Bar);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Bar, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: false\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-bar-'));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (onAnimationStart) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Bar, [{\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n var _this$props = this.props,\n shape = _this$props.shape,\n dataKey = _this$props.dataKey,\n activeIndex = _this$props.activeIndex,\n activeBar = _this$props.activeBar;\n var baseProps = filterProps(this.props, false);\n return data && data.map(function (entry, i) {\n var isActive = i === activeIndex;\n var option = isActive ? activeBar : shape;\n var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n isActive: isActive,\n option: option,\n index: i,\n dataKey: dataKey,\n onAnimationStart: _this2.handleAnimationStart,\n onAnimationEnd: _this2.handleAnimationEnd\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"rectangle-\".concat(entry === null || entry === void 0 ? void 0 : entry.x, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.y, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.value)\n }), /*#__PURE__*/React.createElement(BarRectangle, props));\n });\n }\n }, {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n var _this$props2 = this.props,\n data = _this$props2.data,\n layout = _this$props2.layout,\n isAnimationActive = _this$props2.isAnimationActive,\n animationBegin = _this$props2.animationBegin,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n animationId = _this$props2.animationId;\n var prevData = this.state.prevData;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = data.map(function (entry, index) {\n var prev = prevData && prevData[index];\n if (prev) {\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n if (layout === 'horizontal') {\n var _interpolatorHeight = interpolateNumber(0, entry.height);\n var h = _interpolatorHeight(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n var interpolator = interpolateNumber(0, entry.width);\n var w = interpolator(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n width: w\n });\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n }, {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props3 = this.props,\n data = _this$props3.data,\n isAnimationActive = _this$props3.isAnimationActive;\n var prevData = this.state.prevData;\n if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n return this.renderRectanglesStatically(data);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n var _this$props4 = this.props,\n data = _this$props4.data,\n dataKey = _this$props4.dataKey,\n activeIndex = _this$props4.activeIndex;\n var backgroundProps = filterProps(this.props.background, false);\n return data.map(function (entry, i) {\n var value = entry.value,\n background = entry.background,\n rest = _objectWithoutProperties(entry, _excluded);\n if (!background) {\n return null;\n }\n var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n fill: '#eee'\n }, background), backgroundProps), adaptEventsOfChild(_this4.props, entry, i)), {}, {\n onAnimationStart: _this4.handleAnimationStart,\n onAnimationEnd: _this4.handleAnimationEnd,\n dataKey: dataKey,\n index: i,\n key: \"background-bar-\".concat(i),\n className: 'recharts-bar-background-rectangle'\n });\n return /*#__PURE__*/React.createElement(BarRectangle, _extends({\n option: _this4.props.background,\n isActive: i === activeIndex\n }, props));\n });\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props5 = this.props,\n data = _this$props5.data,\n xAxis = _this$props5.xAxis,\n yAxis = _this$props5.yAxis,\n layout = _this$props5.layout,\n children = _this$props5.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n /**\n * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n * */\n var value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: value,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"error-bar-\".concat(clipPathId, \"-\").concat(item.props.dataKey),\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n data = _this$props6.data,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n left = _this$props6.left,\n top = _this$props6.top,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n background = _this$props6.background,\n id = _this$props6.id;\n if (hide || !data || !data.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = clsx('recharts-bar', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n }))) : null, /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curData: nextProps.data,\n prevData: prevState.curData\n };\n }\n if (nextProps.data !== prevState.curData) {\n return {\n curData: nextProps.data\n };\n }\n return null;\n }\n }]);\n return Bar;\n}(PureComponent);\n_Bar = Bar;\n_defineProperty(Bar, \"displayName\", 'Bar');\n_defineProperty(Bar, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n data: [],\n layout: 'vertical',\n activeBar: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease'\n});\n/**\n * Compose the data of each group\n * @param {Object} props Props for the component\n * @param {Object} item An instance of Bar\n * @param {Array} barPosition The offset and size of each bar\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {Array} stackedData The stacked data of a bar item\n * @return{Array} Composed data\n */\n_defineProperty(Bar, \"getComposedData\", function (_ref2) {\n var props = _ref2.props,\n item = _ref2.item,\n barPosition = _ref2.barPosition,\n bandSize = _ref2.bandSize,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var pos = findPositionOfBar(barPosition, item);\n if (!pos) {\n return null;\n }\n var layout = props.layout;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n children = _item$props.children,\n minPointSizeProp = _item$props.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = getBaseValueOfBar({\n numericAxis: numericAxis\n });\n var cells = findAllByType(children, Cell);\n var rects = displayedData.map(function (entry, index) {\n var value, x, y, width, height, background;\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [baseValue, value];\n }\n }\n var minPointSize = minPointSizeCallback(minPointSizeProp, _Bar.defaultProps.minPointSize)(value[1], index);\n if (layout === 'horizontal') {\n var _ref4;\n var _ref3 = [yAxis.scale(value[0]), yAxis.scale(value[1])],\n baseValueScale = _ref3[0],\n currentValueScale = _ref3[1];\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = (_ref4 = currentValueScale !== null && currentValueScale !== void 0 ? currentValueScale : baseValueScale) !== null && _ref4 !== void 0 ? _ref4 : undefined;\n width = pos.size;\n var computedHeight = baseValueScale - currentValueScale;\n height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n var _ref5 = [xAxis.scale(value[0]), xAxis.scale(value[1])],\n _baseValueScale = _ref5[0],\n _currentValueScale = _ref5[1];\n x = _baseValueScale;\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = _currentValueScale - _baseValueScale;\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n width += _delta;\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props), {}, {\n tooltipPayload: [getTooltipItem(item, entry)],\n tooltipPosition: {\n x: x + width / 2,\n y: y + height / 2\n }\n });\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport mapValues from 'lodash/mapValues';\nimport every from 'lodash/every';\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\nimport { Bar } from '../cartesian/Bar';\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout,\n children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!findChildByType(children, Bar);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var calculatedPadding, range, x, y, needSpace;\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort();\n sortedValues.forEach(function (value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n if (Number.isFinite(smallestDistanceBetweenValues)) {\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n if (axis.padding === 'gap') {\n calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n }\n if (axis.padding === 'no-gap') {\n var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n }\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n } else {\n range = axis.range;\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n var _parseScale = parseScale(axis, chartName, hasBar),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n this.scale = scale;\n }\n _createClass(ScaleHelper, [{\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }, {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n if (value === undefined) {\n return undefined;\n }\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n return this.scale(value) + _offset;\n }\n default:\n {\n return this.scale(value);\n }\n }\n }\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + _offset2;\n }\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }], [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n return ScaleHelper;\n}();\n_defineProperty(ScaleHelper, \"EPS\", 1e-4);\nexport var createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware,\n position = _ref5.position;\n return mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};\n\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */\nexport function normalizeAngle(angle) {\n return (angle % 180 + 180) % 180;\n}\n\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */\nexport var getAngledRectangleWidth = function getAngledRectangleWidth(_ref6) {\n var width = _ref6.width,\n height = _ref6.height;\n var angle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Ensure angle is >= 0 && < 180\n var normalizedAngle = normalizeAngle(angle);\n var angleRadians = normalizedAngle * Math.PI / 180;\n\n /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n * width. This threshold defines when each formula should kick in. */\n var angleThreshold = Math.atan(height / width);\n var angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);\n return Math.abs(angledWidth);\n};","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","import memoize from 'lodash/memoize';\n/**\n * This is memoized because the viewBox is unlikely to change often\n * - but because it is computed from offset, any change to it would re-render all children.\n *\n * And because we have many readers of the viewBox, and update it only rarely,\n * then let's optimize with memoization.\n */\nexport var calculateViewBox = memoize(function (offset) {\n return {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n };\n}, function (offset) {\n return ['l', offset.left, 't', offset.top, 'w', offset.width, 'h', offset.height].join('');\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport React, { createContext, useContext } from 'react';\nimport invariant from 'tiny-invariant';\nimport find from 'lodash/find';\nimport every from 'lodash/every';\nimport { calculateViewBox } from '../util/calculateViewBox';\nimport { getAnyElementOfObject } from '../util/DataUtils';\nexport var XAxisContext = /*#__PURE__*/createContext(undefined);\nexport var YAxisContext = /*#__PURE__*/createContext(undefined);\nexport var ViewBoxContext = /*#__PURE__*/createContext(undefined);\nexport var OffsetContext = /*#__PURE__*/createContext({});\nexport var ClipPathIdContext = /*#__PURE__*/createContext(undefined);\nexport var ChartHeightContext = /*#__PURE__*/createContext(0);\nexport var ChartWidthContext = /*#__PURE__*/createContext(0);\n\n/**\n * Will add all the properties required to render all individual Recharts components into a React Context.\n *\n * If you want to read these properties, see the collection of hooks exported from this file.\n *\n * @param {object} props CategoricalChartState, plus children\n * @returns {ReactElement} React Context Provider\n */\nexport var ChartLayoutContextProvider = function ChartLayoutContextProvider(props) {\n var _props$state = props.state,\n xAxisMap = _props$state.xAxisMap,\n yAxisMap = _props$state.yAxisMap,\n offset = _props$state.offset,\n clipPathId = props.clipPathId,\n children = props.children,\n width = props.width,\n height = props.height;\n\n /**\n * Perhaps we should compute this property when reading? Let's see what is more often used\n */\n var viewBox = calculateViewBox(offset);\n\n /*\n * This pretends to be a single context but actually is split into multiple smaller ones.\n * Why?\n * Because one React Context only allows to set one value.\n * But we need to set multiple values.\n * If we do that with one context, then we force re-render on components that might not even be interested\n * in the part of the state that has changed.\n *\n * By splitting into smaller contexts, we allow each components to be optimized and only re-render when its dependencies change.\n *\n * To actually achieve the optimal re-render, it is necessary to use React.memo().\n * See the test file for details.\n */\n return /*#__PURE__*/React.createElement(XAxisContext.Provider, {\n value: xAxisMap\n }, /*#__PURE__*/React.createElement(YAxisContext.Provider, {\n value: yAxisMap\n }, /*#__PURE__*/React.createElement(OffsetContext.Provider, {\n value: offset\n }, /*#__PURE__*/React.createElement(ViewBoxContext.Provider, {\n value: viewBox\n }, /*#__PURE__*/React.createElement(ClipPathIdContext.Provider, {\n value: clipPathId\n }, /*#__PURE__*/React.createElement(ChartHeightContext.Provider, {\n value: height\n }, /*#__PURE__*/React.createElement(ChartWidthContext.Provider, {\n value: width\n }, children)))))));\n};\nexport var useClipPathId = function useClipPathId() {\n return useContext(ClipPathIdContext);\n};\nfunction getKeysForDebug(object) {\n var keys = Object.keys(object);\n if (keys.length === 0) {\n return 'There are no available ids.';\n }\n return \"Available ids are: \".concat(keys, \".\");\n}\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param xAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as \n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useXAxisOrThrow = function useXAxisOrThrow(xAxisId) {\n var xAxisMap = useContext(XAxisContext);\n !(xAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n var xAxis = xAxisMap[xAxisId];\n !(xAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find xAxis by id \\\"\".concat(xAxisId, \"\\\" [\").concat(_typeof(xAxisId), \"]. \").concat(getKeysForDebug(xAxisMap))) : invariant(false) : void 0;\n return xAxis;\n};\n\n/**\n * This will find an arbitrary first XAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific XAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns X axisOptions, or undefined - if there are no X axes\n */\nexport var useArbitraryXAxis = function useArbitraryXAxis() {\n var xAxisMap = useContext(XAxisContext);\n return getAnyElementOfObject(xAxisMap);\n};\n\n/**\n * This will find an arbitrary first YAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific YAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns Y axisOptions, or undefined - if there are no Y axes\n */\nexport var useArbitraryYAxis = function useArbitraryYAxis() {\n var yAxisMap = useContext(YAxisContext);\n return getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This hooks will:\n * 1st attempt to find an YAxis that has all elements in its domain finite\n * If no such axis exists, it will return an arbitrary YAxis\n * if there are no Y axes then it returns undefined\n *\n * @returns Either Y axisOptions, or undefined if there are no Y axes\n */\nexport var useYAxisWithFiniteDomainOrRandom = function useYAxisWithFiniteDomainOrRandom() {\n var yAxisMap = useContext(YAxisContext);\n var yAxisWithFiniteDomain = find(yAxisMap, function (axis) {\n return every(axis.domain, Number.isFinite);\n });\n return yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param yAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as \n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useYAxisOrThrow = function useYAxisOrThrow(yAxisId) {\n var yAxisMap = useContext(YAxisContext);\n !(yAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n var yAxis = yAxisMap[yAxisId];\n !(yAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find yAxis by id \\\"\".concat(yAxisId, \"\\\" [\").concat(_typeof(yAxisId), \"]. \").concat(getKeysForDebug(yAxisMap))) : invariant(false) : void 0;\n return yAxis;\n};\nexport var useViewBox = function useViewBox() {\n var viewBox = useContext(ViewBoxContext);\n return viewBox;\n};\nexport var useOffset = function useOffset() {\n return useContext(OffsetContext);\n};\nexport var useChartWidth = function useChartWidth() {\n return useContext(ChartWidthContext);\n};\nexport var useChartHeight = function useChartHeight() {\n return useContext(ChartHeightContext);\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport some from 'lodash/some';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { useClipPathId, useViewBox, useXAxisOrThrow, useYAxisOrThrow } from '../context/chartLayoutContext';\n\n/**\n * This excludes `viewBox` prop from svg for two reasons:\n * 1. The components wants viewBox of object type, and svg wants string\n * - so there's a conflict, and the component will throw if it gets string\n * 2. Internally the component calls `filterProps` which filters the viewBox away anyway\n */\n\nvar renderLine = function renderLine(option, props) {\n var line;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n line = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n return line;\n};\n// TODO: ScaleHelper\nexport var getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, viewBox, position, xAxisOrientation, yAxisOrientation, props) {\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n if (isFixedY) {\n var yCoord = props.y;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return yAxisOrientation === 'left' ? points.reverse() : points;\n }\n if (isFixedX) {\n var xCoord = props.x;\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return xAxisOrientation === 'top' ? _points.reverse() : _points;\n }\n if (isSegment) {\n var segment = props.segment;\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n if (ifOverflowMatches(props, 'discard') && some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n return _points2;\n }\n return null;\n};\nexport function ReferenceLine(props) {\n var fixedX = props.x,\n fixedY = props.y,\n segment = props.segment,\n xAxisId = props.xAxisId,\n yAxisId = props.yAxisId,\n shape = props.shape,\n className = props.className,\n alwaysShow = props.alwaysShow;\n var clipPathId = useClipPathId();\n var xAxis = useXAxisOrThrow(xAxisId);\n var yAxis = useYAxisOrThrow(yAxisId);\n var viewBox = useViewBox();\n if (!clipPathId || !viewBox) {\n return null;\n }\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, viewBox, props.position, xAxis.orientation, yAxis.orientation, props);\n if (!endPoints) {\n return null;\n }\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-line', className)\n }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x,\n y = props.y,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n return result;\n};\nexport function ReferenceDot(props) {\n var x = props.x,\n y = props.y,\n r = props.r,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n if (!isX || !isY) {\n return null;\n }\n var coordinate = getCoordinate(props);\n if (!coordinate) {\n return null;\n }\n var cx = coordinate.x,\n cy = coordinate.y;\n var shape = props.shape,\n className = props.className;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n cx: cx,\n cy: cy\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n}\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n};\nReferenceDot.renderDot = function (option, props) {\n var dot;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dot = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n return dot;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/ReactUtils';\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1,\n xValue2 = props.x2,\n yValue1 = props.y1,\n yValue2 = props.y2,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n if (!xAxis || !yAxis) return null;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: 'start'\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: 'start'\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: 'end'\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: 'end'\n }) : scales.y.rangeMax\n };\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n return rectWithPoints(p1, p2);\n};\nexport function ReferenceArea(props) {\n var x1 = props.x1,\n x2 = props.x2,\n y1 = props.y1,\n y2 = props.y2,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = props.shape;\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n if (!rect && !shape) {\n return null;\n }\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), rect)), Label.renderCallByParent(props, rect));\n}\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n};\nReferenceArea.renderRect = function (option, props) {\n var rect;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rect = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n return rect;\n};","/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */\nexport function getEveryNthWithCondition(array, n, isValid) {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n var result = [];\n for (var i = 0; i < array.length; i += n) {\n if (isValid === undefined || isValid(array[i]) === true) {\n result.push(array[i]);\n } else {\n return undefined;\n }\n }\n return result;\n}","import { getAngledRectangleWidth } from './CartesianUtils';\nimport { getEveryNthWithCondition } from './getEveryNthWithCondition';\nexport function getAngledTickWidth(contentSize, unitSize, angle) {\n var size = {\n width: contentSize.width + unitSize.width,\n height: contentSize.height + unitSize.height\n };\n return getAngledRectangleWidth(size, angle);\n}\nexport function getTickBoundaries(viewBox, sign, sizeKey) {\n var isWidth = sizeKey === 'width';\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n if (sign === 1) {\n return {\n start: isWidth ? x : y,\n end: isWidth ? x + width : y + height\n };\n }\n return {\n start: isWidth ? x + width : y + height,\n end: isWidth ? x : y\n };\n}\nexport function isVisible(sign, tickPosition, getSize, start, end) {\n /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n * the tick's size. */\n if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n return false;\n }\n var size = getSize();\n return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;\n}\nexport function getNumberIntervalTicks(ticks, interval) {\n return getEveryNthWithCondition(ticks, interval + 1);\n}","import { isVisible } from '../util/TickUtils';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nexport function getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var initialStart = boundaries.start,\n end = boundaries.end;\n var index = 0;\n // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n // For now, start from every tick\n var stepsize = 1;\n var start = initialStart;\n var _loop = function _loop() {\n // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n // If it can not, then increase the stepsize by 1, and try again.\n\n var entry = ticks === null || ticks === void 0 ? void 0 : ticks[index];\n\n // Break condition - If we have evaluate all the ticks, then we are done.\n if (entry === undefined) {\n return {\n v: getEveryNthWithCondition(ticks, stepsize)\n };\n }\n\n // Check if the element collides with the next element\n var i = index;\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n var tickCoord = entry.coordinate;\n // We will always show the first tick.\n var isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);\n if (!isShow) {\n // Start all over with a larger stepsize\n index = 0;\n start = initialStart;\n stepsize += 1;\n }\n if (isShow) {\n // If it can be shown, update the start\n start = tickCoord + sign * (getSize() / 2 + minTickGap);\n index += stepsize;\n }\n },\n _ret;\n while (stepsize <= result.length) {\n _ret = _loop();\n if (_ret) return _ret.v;\n }\n return [];\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport isFunction from 'lodash/isFunction';\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { isVisible, getTickBoundaries, getNumberIntervalTicks, getAngledTickWidth } from '../util/TickUtils';\nimport { getEquidistantTicks } from './getEquidistantTicks';\nfunction getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start;\n var end = boundaries.end;\n var _loop = function _loop(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * getSize() / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = len - 1; i >= 0; i--) {\n _loop(i);\n }\n return result;\n}\nfunction getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, preserveEnd) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start,\n end = boundaries.end;\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailSize = getTickSize(tail, len - 1);\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = isVisible(sign, tail.tickCoord, function () {\n return tailSize;\n }, start, end);\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n var count = preserveEnd ? len - 1 : len;\n var _loop2 = function _loop2(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * getSize() / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = 0; i < count; i++) {\n _loop2(i);\n }\n return result;\n}\nexport function getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit,\n angle = props.angle;\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n if (isNumber(interval) || Global.isSsr) {\n return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n var candidates = [];\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var getTickSize = function getTickSize(content, index) {\n var value = isFunction(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n // Recharts only supports angles when sizeKey === 'width'\n return sizeKey === 'width' ? getAngledTickWidth(getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n };\n var sign = ticks.length >= 2 ? mathSign(ticks[1].coordinate - ticks[0].coordinate) : 1;\n var boundaries = getTickBoundaries(viewBox, sign, sizeKey);\n if (interval === 'equidistantPreserveStart') {\n return getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === 'preserveStartEnd');\n } else {\n candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n return candidates.filter(function (entry) {\n return entry.isShow;\n });\n}","var _excluded = [\"viewBox\"],\n _excluded2 = [\"viewBox\"],\n _excluded3 = [\"ticks\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { isNumber } from '../util/DataUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\n\n/** The orientation of the axis in correspondence to the chart */\n\n/** A unit to be appended to a value */\n\n/** The formatter function of tick */\n\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n _inherits(CartesianAxis, _Component);\n function CartesianAxis(props) {\n var _this;\n _classCallCheck(this, CartesianAxis);\n _this = _callSuper(this, CartesianAxis, [props]);\n _this.state = {\n fontSize: '',\n letterSpacing: ''\n };\n return _this;\n }\n _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, _excluded);\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror,\n axisLine = _this$props5.axisLine;\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props, false)), filterProps(axisLine, false)), {}, {\n fill: 'none'\n });\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: clsx('recharts-cartesian-axis-line', get(axisLine, 'className'))\n }));\n }\n }, {\n key: \"renderTicks\",\n value:\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */\n function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props, false);\n var customTickProps = filterProps(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine, false));\n var items = finalTicks.map(function (entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n lineCoord = _this2$getTickLineCoo.line,\n tickCoord = _this2$getTickLineCoo.tick;\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(entry.value, \"-\").concat(entry.coordinate, \"-\").concat(entry.tickCoord)\n }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: clsx('recharts-cartesian-axis-tick-line', get(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n if (hide) {\n return null;\n }\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n var finalTicks = ticks;\n if (isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-cartesian-axis', className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n return CartesianAxis;\n}(Component);\n_defineProperty(CartesianAxis, \"displayName\", 'CartesianAxis');\n_defineProperty(CartesianAxis, \"defaultProps\", {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n});","var _excluded = [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"],\n _excluded2 = [\"offset\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Cartesian Grid\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { warn } from '../util/LogUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { getCoordinatesOfGrid, getTicksOfAxis } from '../util/ChartUtils';\nimport { getTicks } from './getTicks';\nimport { CartesianAxis } from './CartesianAxis';\nimport { useArbitraryXAxis, useChartHeight, useChartWidth, useOffset, useYAxisWithFiniteDomainOrRandom } from '../context/chartLayoutContext';\n\n/**\n * The = 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\nimport clsx from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType, filterProps, isDotProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nexport var Line = /*#__PURE__*/function (_PureComponent) {\n _inherits(Line, _PureComponent);\n function Line() {\n var _this;\n _classCallCheck(this, Line);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Line, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: true,\n totalLength: 0\n });\n _defineProperty(_assertThisInitialized(_this), \"generateSimpleStrokeDasharray\", function (totalLength, length) {\n return \"\".concat(length, \"px \").concat(totalLength - length, \"px\");\n });\n _defineProperty(_assertThisInitialized(_this), \"getStrokeDasharray\", function (length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n\n // if lineLength is 0 return the default when no strokeDasharray is provided\n if (!lineLength) {\n return _this.generateSimpleStrokeDasharray(totalLength, length);\n }\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n for (var i = 0, sum = 0; i < lines.length; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-line-'));\n _defineProperty(_assertThisInitialized(_this), \"pathRef\", function (node) {\n _this.mainCurve = node;\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n _this.setState({\n isAnimationFinished: true\n });\n if (_this.props.onAnimationEnd) {\n _this.props.onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n _this.setState({\n isAnimationFinished: false\n });\n if (_this.props.onAnimationStart) {\n _this.props.onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Line, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength !== this.state.totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n points = _this$props.points,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n layout = _this$props.layout,\n children = _this$props.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"bar-\".concat(item.props.dataKey),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var lineProps = filterProps(this.props, false);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps), customDotProps), {}, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n var _this$props3 = this.props,\n type = _this$props3.type,\n layout = _this$props3.layout,\n connectNulls = _this$props3.connectNulls,\n ref = _this$props3.ref,\n others = _objectWithoutProperties(_this$props3, _excluded);\n var curveProps = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, true)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props), {}, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n return /*#__PURE__*/React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props4 = this.props,\n points = _this$props4.points,\n strokeDasharray = _this$props4.strokeDasharray,\n isAnimationActive = _this$props4.isAnimationActive,\n animationBegin = _this$props4.animationBegin,\n animationDuration = _this$props4.animationDuration,\n animationEasing = _this$props4.animationEasing,\n animationId = _this$props4.animationId,\n animateNewValues = _this$props4.animateNewValues,\n width = _this$props4.width,\n height = _this$props4.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n // magic number of faking previous x and y location\n if (animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = _this2.generateSimpleStrokeDasharray(totalLength, curLength);\n }\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props5 = this.props,\n points = _this$props5.points,\n isAnimationActive = _this$props5.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n dot = _this$props6.dot,\n points = _this$props6.points,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n top = _this$props6.top,\n left = _this$props6.left,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n id = _this$props6.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = clsx('recharts-line', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n var _ref2 = (_filterProps = filterProps(dot, false)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n },\n _ref2$r = _ref2.r,\n r = _ref2$r === void 0 ? 3 : _ref2$r,\n _ref2$strokeWidth = _ref2.strokeWidth,\n strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = isDotProps(dot) ? dot : {},\n _ref3$clipDot = _ref3.clipDot,\n clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(needClip, clipPathId), (hasSinglePoint || dot) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n return null;\n }\n }, {\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n for (var i = 0; i < count; ++i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = clsx('recharts-line-dot', typeof option !== 'boolean' ? option.className : '');\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n return dotItem;\n }\n }]);\n return Line;\n}(PureComponent);\n_defineProperty(Line, \"displayName\", 'Line');\n_defineProperty(Line, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n label: false\n});\n/**\n * Compose the data of each group\n * @param {Object} props The props from the component\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */\n_defineProperty(Line, \"getComposedData\", function (_ref4) {\n var props = _ref4.props,\n xAxis = _ref4.xAxis,\n yAxis = _ref4.yAxis,\n xAxisTicks = _ref4.xAxisTicks,\n yAxisTicks = _ref4.yAxisTicks,\n dataKey = _ref4.dataKey,\n bandSize = _ref4.bandSize,\n displayedData = _ref4.displayedData,\n offset = _ref4.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n return {\n x: isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n});","var _excluded = [\"layout\", \"type\", \"stroke\", \"connectNulls\", \"isRange\", \"ref\"];\nvar _Area;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Area\n */\nimport React, { PureComponent } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport max from 'lodash/max';\nimport isNil from 'lodash/isNil';\nimport isNan from 'lodash/isNaN';\nimport isEqual from 'lodash/isEqual';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { Global } from '../util/Global';\nimport { isNumber, uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps, isDotProps } from '../util/ReactUtils';\nexport var Area = /*#__PURE__*/function (_PureComponent) {\n _inherits(Area, _PureComponent);\n function Area() {\n var _this;\n _classCallCheck(this, Area);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Area, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: true\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-area-'));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Area, [{\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n if (isAnimationActive && !isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n dot = _this$props.dot,\n points = _this$props.points,\n dataKey = _this$props.dataKey;\n var areaProps = filterProps(this.props, false);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, areaProps), customDotProps), {}, {\n index: i,\n cx: entry.x,\n cy: entry.y,\n dataKey: dataKey,\n value: entry.value,\n payload: entry.payload,\n points: points\n });\n return Area.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-area-dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderHorizontalRect\",\n value: function renderHorizontalRect(alpha) {\n var _this$props2 = this.props,\n baseLine = _this$props2.baseLine,\n points = _this$props2.points,\n strokeWidth = _this$props2.strokeWidth;\n var startX = points[0].x;\n var endX = points[points.length - 1].x;\n var width = alpha * Math.abs(startX - endX);\n var maxY = max(points.map(function (entry) {\n return entry.y || 0;\n }));\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxY = Math.max(baseLine, maxY);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxY = Math.max(max(baseLine.map(function (entry) {\n return entry.y || 0;\n })), maxY);\n }\n if (isNumber(maxY)) {\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: startX < endX ? startX : startX - width,\n y: 0,\n width: width,\n height: Math.floor(maxY + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1))\n });\n }\n return null;\n }\n }, {\n key: \"renderVerticalRect\",\n value: function renderVerticalRect(alpha) {\n var _this$props3 = this.props,\n baseLine = _this$props3.baseLine,\n points = _this$props3.points,\n strokeWidth = _this$props3.strokeWidth;\n var startY = points[0].y;\n var endY = points[points.length - 1].y;\n var height = alpha * Math.abs(startY - endY);\n var maxX = max(points.map(function (entry) {\n return entry.x || 0;\n }));\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxX = Math.max(baseLine, maxX);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxX = Math.max(max(baseLine.map(function (entry) {\n return entry.x || 0;\n })), maxX);\n }\n if (isNumber(maxX)) {\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: 0,\n y: startY < endY ? startY : startY - height,\n width: maxX + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1),\n height: Math.floor(height)\n });\n }\n return null;\n }\n }, {\n key: \"renderClipRect\",\n value: function renderClipRect(alpha) {\n var layout = this.props.layout;\n if (layout === 'vertical') {\n return this.renderVerticalRect(alpha);\n }\n return this.renderHorizontalRect(alpha);\n }\n }, {\n key: \"renderAreaStatically\",\n value: function renderAreaStatically(points, baseLine, needClip, clipPathId) {\n var _this$props4 = this.props,\n layout = _this$props4.layout,\n type = _this$props4.type,\n stroke = _this$props4.stroke,\n connectNulls = _this$props4.connectNulls,\n isRange = _this$props4.isRange,\n ref = _this$props4.ref,\n others = _objectWithoutProperties(_this$props4, _excluded);\n return /*#__PURE__*/React.createElement(Layer, {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(others, true), {\n points: points,\n connectNulls: connectNulls,\n type: type,\n baseLine: baseLine,\n layout: layout,\n stroke: \"none\",\n className: \"recharts-area-area\"\n })), stroke !== 'none' && /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(this.props, false), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: points\n })), stroke !== 'none' && isRange && /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(this.props, false), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: baseLine\n })));\n }\n }, {\n key: \"renderAreaWithAnimation\",\n value: function renderAreaWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props5 = this.props,\n points = _this$props5.points,\n baseLine = _this$props5.baseLine,\n isAnimationActive = _this$props5.isAnimationActive,\n animationBegin = _this$props5.animationBegin,\n animationDuration = _this$props5.animationDuration,\n animationEasing = _this$props5.animationEasing,\n animationId = _this$props5.animationId;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n prevBaseLine = _this$state.prevBaseLine;\n // const clipPathId = isNil(id) ? this.id : id;\n\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"area-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n // update animtaion\n var stepPoints = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n var stepBaseLine;\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n var interpolator = interpolateNumber(prevBaseLine, baseLine);\n stepBaseLine = interpolator(t);\n } else if (isNil(baseLine) || isNan(baseLine)) {\n var _interpolator = interpolateNumber(prevBaseLine, 0);\n stepBaseLine = _interpolator(t);\n } else {\n stepBaseLine = baseLine.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevBaseLine[prevPointIndex]) {\n var prev = prevBaseLine[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n }\n return _this2.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n }\n return /*#__PURE__*/React.createElement(Layer, null, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"animationClipPath-\".concat(clipPathId)\n }, _this2.renderClipRect(t))), /*#__PURE__*/React.createElement(Layer, {\n clipPath: \"url(#animationClipPath-\".concat(clipPathId, \")\")\n }, _this2.renderAreaStatically(points, baseLine, needClip, clipPathId)));\n });\n }\n }, {\n key: \"renderArea\",\n value: function renderArea(needClip, clipPathId) {\n var _this$props6 = this.props,\n points = _this$props6.points,\n baseLine = _this$props6.baseLine,\n isAnimationActive = _this$props6.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n prevBaseLine = _this$state2.prevBaseLine,\n totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !isEqual(prevPoints, points) || !isEqual(prevBaseLine, baseLine))) {\n return this.renderAreaWithAnimation(needClip, clipPathId);\n }\n return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props7 = this.props,\n hide = _this$props7.hide,\n dot = _this$props7.dot,\n points = _this$props7.points,\n className = _this$props7.className,\n top = _this$props7.top,\n left = _this$props7.left,\n xAxis = _this$props7.xAxis,\n yAxis = _this$props7.yAxis,\n width = _this$props7.width,\n height = _this$props7.height,\n isAnimationActive = _this$props7.isAnimationActive,\n id = _this$props7.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = clsx('recharts-area', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n var _ref2 = (_filterProps = filterProps(dot, false)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n },\n _ref2$r = _ref2.r,\n r = _ref2$r === void 0 ? 3 : _ref2$r,\n _ref2$strokeWidth = _ref2.strokeWidth,\n strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = isDotProps(dot) ? dot : {},\n _ref3$clipDot = _ref3.clipDot,\n clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint ? this.renderArea(needClip, clipPathId) : null, (dot || hasSinglePoint) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine,\n prevPoints: prevState.curPoints,\n prevBaseLine: prevState.curBaseLine\n };\n }\n if (nextProps.points !== prevState.curPoints || nextProps.baseLine !== prevState.curBaseLine) {\n return {\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine\n };\n }\n return null;\n }\n }]);\n return Area;\n}(PureComponent);\n_Area = Area;\n_defineProperty(Area, \"displayName\", 'Area');\n_defineProperty(Area, \"defaultProps\", {\n stroke: '#3182bd',\n fill: '#3182bd',\n fillOpacity: 0.6,\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'line',\n connectNulls: false,\n // points of area\n points: [],\n dot: false,\n activeDot: true,\n hide: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n});\n_defineProperty(Area, \"getBaseValue\", function (props, item, xAxis, yAxis) {\n var layout = props.layout,\n chartBaseValue = props.baseValue;\n var itemBaseValue = item.props.baseValue;\n\n // The baseValue can be defined both on the AreaChart as well as on the Area.\n // The value for the item takes precedence.\n var baseValue = itemBaseValue !== null && itemBaseValue !== void 0 ? itemBaseValue : chartBaseValue;\n if (isNumber(baseValue) && typeof baseValue === 'number') {\n return baseValue;\n }\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var domainMax = Math.max(domain[0], domain[1]);\n var domainMin = Math.min(domain[0], domain[1]);\n if (baseValue === 'dataMin') {\n return domainMin;\n }\n if (baseValue === 'dataMax') {\n return domainMax;\n }\n return domainMax < 0 ? domainMax : Math.max(Math.min(domain[0], domain[1]), 0);\n }\n if (baseValue === 'dataMin') {\n return domain[0];\n }\n if (baseValue === 'dataMax') {\n return domain[1];\n }\n return domain[0];\n});\n_defineProperty(Area, \"getComposedData\", function (_ref4) {\n var props = _ref4.props,\n item = _ref4.item,\n xAxis = _ref4.xAxis,\n yAxis = _ref4.yAxis,\n xAxisTicks = _ref4.xAxisTicks,\n yAxisTicks = _ref4.yAxisTicks,\n bandSize = _ref4.bandSize,\n dataKey = _ref4.dataKey,\n stackedData = _ref4.stackedData,\n dataStartIndex = _ref4.dataStartIndex,\n displayedData = _ref4.displayedData,\n offset = _ref4.offset;\n var layout = props.layout;\n var hasStack = stackedData && stackedData.length;\n var baseValue = _Area.getBaseValue(props, item, xAxis, yAxis);\n var isHorizontalLayout = layout === 'horizontal';\n var isRange = false;\n var points = displayedData.map(function (entry, index) {\n var value;\n if (hasStack) {\n value = stackedData[dataStartIndex + index];\n } else {\n value = getValueByDataKey(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [baseValue, value];\n } else {\n isRange = true;\n }\n }\n var isBreakPoint = value[1] == null || hasStack && getValueByDataKey(entry, dataKey) == null;\n if (isHorizontalLayout) {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: isBreakPoint ? null : yAxis.scale(value[1]),\n value: value,\n payload: entry\n };\n }\n return {\n x: isBreakPoint ? null : xAxis.scale(value[1]),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n var baseLine;\n if (hasStack || isRange) {\n baseLine = points.map(function (entry) {\n var x = Array.isArray(entry.value) ? entry.value[0] : null;\n if (isHorizontalLayout) {\n return {\n x: entry.x,\n y: x != null && entry.y != null ? yAxis.scale(x) : null\n };\n }\n return {\n x: x != null ? xAxis.scale(x) : null,\n y: entry.y\n };\n });\n } else {\n baseLine = isHorizontalLayout ? yAxis.scale(baseValue) : xAxis.scale(baseValue);\n }\n return _objectSpread({\n points: points,\n baseLine: baseLine,\n layout: layout,\n isRange: isRange\n }, offset);\n});\n_defineProperty(Area, \"renderDotItem\", function (option, props) {\n var dotItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = clsx('recharts-area-dot', typeof option !== 'boolean' ? option.className : '');\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n return dotItem;\n});","/**\n * @fileOverview Z Axis\n */\n\nexport var ZAxis = function ZAxis() {\n return null;\n};\nZAxis.displayName = 'ZAxis';\nZAxis.defaultProps = {\n zAxisId: 0,\n range: [64, 64],\n scale: 'auto',\n type: 'number'\n};","var _excluded = [\"option\", \"isActive\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport { Symbols } from '../shape/Symbols';\nimport { Shape } from './ActiveShapeUtils';\nexport function ScatterSymbol(_ref) {\n var option = _ref.option,\n isActive = _ref.isActive,\n props = _objectWithoutProperties(_ref, _excluded);\n if (typeof option === 'string') {\n return /*#__PURE__*/React.createElement(Shape, _extends({\n option: /*#__PURE__*/React.createElement(Symbols, _extends({\n type: option\n }, props)),\n isActive: isActive,\n shapeType: \"symbols\"\n }, props));\n }\n return /*#__PURE__*/React.createElement(Shape, _extends({\n option: option,\n isActive: isActive,\n shapeType: \"symbols\"\n }, props));\n}","var _Scatter;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render a group of scatters\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { ZAxis } from './ZAxis';\nimport { Curve } from '../shape/Curve';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { uniqueId, interpolateNumber, getLinearRegression } from '../util/DataUtils';\nimport { getValueByDataKey, getCateCoordinateOfLine } from '../util/ChartUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { ScatterSymbol } from '../util/ScatterUtils';\nexport var Scatter = /*#__PURE__*/function (_PureComponent) {\n _inherits(Scatter, _PureComponent);\n function Scatter() {\n var _this;\n _classCallCheck(this, Scatter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Scatter, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: false\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n _this.setState({\n isAnimationFinished: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n _this.setState({\n isAnimationFinished: false\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-scatter-'));\n return _this;\n }\n _createClass(Scatter, [{\n key: \"renderSymbolsStatically\",\n value: function renderSymbolsStatically(points) {\n var _this2 = this;\n var _this$props = this.props,\n shape = _this$props.shape,\n activeShape = _this$props.activeShape,\n activeIndex = _this$props.activeIndex;\n var baseProps = filterProps(this.props, false);\n return points.map(function (entry, i) {\n var isActive = activeIndex === i;\n var option = isActive ? activeShape : shape;\n var props = _objectSpread(_objectSpread({\n key: \"symbol-\".concat(i)\n }, baseProps), entry);\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-scatter-symbol\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n // eslint-disable-next-line react/no-array-index-key\n key: \"symbol-\".concat(entry === null || entry === void 0 ? void 0 : entry.cx, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.cy, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.size, \"-\").concat(i),\n role: \"img\"\n }), /*#__PURE__*/React.createElement(ScatterSymbol, _extends({\n option: option,\n isActive: isActive\n }, props)));\n });\n }\n }, {\n key: \"renderSymbolsWithAnimation\",\n value: function renderSymbolsWithAnimation() {\n var _this3 = this;\n var _this$props2 = this.props,\n points = _this$props2.points,\n isAnimationActive = _this$props2.isAnimationActive,\n animationBegin = _this$props2.animationBegin,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n animationId = _this$props2.animationId;\n var prevPoints = this.state.prevPoints;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"pie-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = points.map(function (entry, index) {\n var prev = prevPoints && prevPoints[index];\n if (prev) {\n var interpolatorCx = interpolateNumber(prev.cx, entry.cx);\n var interpolatorCy = interpolateNumber(prev.cy, entry.cy);\n var interpolatorSize = interpolateNumber(prev.size, entry.size);\n return _objectSpread(_objectSpread({}, entry), {}, {\n cx: interpolatorCx(t),\n cy: interpolatorCy(t),\n size: interpolatorSize(t)\n });\n }\n var interpolator = interpolateNumber(0, entry.size);\n return _objectSpread(_objectSpread({}, entry), {}, {\n size: interpolator(t)\n });\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderSymbolsStatically(stepData));\n });\n }\n }, {\n key: \"renderSymbols\",\n value: function renderSymbols() {\n var _this$props3 = this.props,\n points = _this$props3.points,\n isAnimationActive = _this$props3.isAnimationActive;\n var prevPoints = this.state.prevPoints;\n if (isAnimationActive && points && points.length && (!prevPoints || !isEqual(prevPoints, points))) {\n return this.renderSymbolsWithAnimation();\n }\n return this.renderSymbolsStatically(points);\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props4 = this.props,\n points = _this$props4.points,\n xAxis = _this$props4.xAxis,\n yAxis = _this$props4.yAxis,\n children = _this$props4.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n return errorBarItems.map(function (item, i) {\n var _item$props = item.props,\n direction = _item$props.direction,\n errorDataKey = _item$props.dataKey;\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"\".concat(direction, \"-\").concat(errorDataKey, \"-\").concat(points[i]),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: direction === 'x' ? 'vertical' : 'horizontal',\n dataPointFormatter: function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.cx,\n y: dataPoint.cy,\n value: direction === 'x' ? +dataPoint.node.x : +dataPoint.node.y,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n });\n });\n }\n }, {\n key: \"renderLine\",\n value: function renderLine() {\n var _this$props5 = this.props,\n points = _this$props5.points,\n line = _this$props5.line,\n lineType = _this$props5.lineType,\n lineJointType = _this$props5.lineJointType;\n var scatterProps = filterProps(this.props, false);\n var customLineProps = filterProps(line, false);\n var linePoints, lineItem;\n if (lineType === 'joint') {\n linePoints = points.map(function (entry) {\n return {\n x: entry.cx,\n y: entry.cy\n };\n });\n } else if (lineType === 'fitting') {\n var _getLinearRegression = getLinearRegression(points),\n xmin = _getLinearRegression.xmin,\n xmax = _getLinearRegression.xmax,\n a = _getLinearRegression.a,\n b = _getLinearRegression.b;\n var linearExp = function linearExp(x) {\n return a * x + b;\n };\n linePoints = [{\n x: xmin,\n y: linearExp(xmin)\n }, {\n x: xmax,\n y: linearExp(xmax)\n }];\n }\n var lineProps = _objectSpread(_objectSpread(_objectSpread({}, scatterProps), {}, {\n fill: 'none',\n stroke: scatterProps && scatterProps.fill\n }, customLineProps), {}, {\n points: linePoints\n });\n if ( /*#__PURE__*/React.isValidElement(line)) {\n lineItem = /*#__PURE__*/React.cloneElement(line, lineProps);\n } else if (isFunction(line)) {\n lineItem = line(lineProps);\n } else {\n lineItem = /*#__PURE__*/React.createElement(Curve, _extends({}, lineProps, {\n type: lineJointType\n }));\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-scatter-line\",\n key: \"recharts-scatter-line\"\n }, lineItem);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n points = _this$props6.points,\n line = _this$props6.line,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n left = _this$props6.left,\n top = _this$props6.top,\n width = _this$props6.width,\n height = _this$props6.height,\n id = _this$props6.id,\n isAnimationActive = _this$props6.isAnimationActive;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = clsx('recharts-scatter', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass,\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n }))) : null, line && this.renderLine(), this.renderErrorBar(), /*#__PURE__*/React.createElement(Layer, {\n key: \"recharts-scatter-symbols\"\n }, this.renderSymbols()), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n return null;\n }\n }]);\n return Scatter;\n}(PureComponent);\n_Scatter = Scatter;\n_defineProperty(Scatter, \"displayName\", 'Scatter');\n_defineProperty(Scatter, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n zAxisId: 0,\n legendType: 'circle',\n lineType: 'joint',\n lineJointType: 'linear',\n data: [],\n shape: 'circle',\n hide: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'linear'\n});\n/**\n * Compose the data of each group\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */\n_defineProperty(Scatter, \"getComposedData\", function (_ref2) {\n var xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n zAxis = _ref2.zAxis,\n item = _ref2.item,\n displayedData = _ref2.displayedData,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n offset = _ref2.offset;\n var tooltipType = item.props.tooltipType;\n var cells = findAllByType(item.props.children, Cell);\n var xAxisDataKey = isNil(xAxis.dataKey) ? item.props.dataKey : xAxis.dataKey;\n var yAxisDataKey = isNil(yAxis.dataKey) ? item.props.dataKey : yAxis.dataKey;\n var zAxisDataKey = zAxis && zAxis.dataKey;\n var defaultRangeZ = zAxis ? zAxis.range : ZAxis.defaultProps.range;\n var defaultZ = defaultRangeZ && defaultRangeZ[0];\n var xBandSize = xAxis.scale.bandwidth ? xAxis.scale.bandwidth() : 0;\n var yBandSize = yAxis.scale.bandwidth ? yAxis.scale.bandwidth() : 0;\n var points = displayedData.map(function (entry, index) {\n var x = getValueByDataKey(entry, xAxisDataKey);\n var y = getValueByDataKey(entry, yAxisDataKey);\n var z = !isNil(zAxisDataKey) && getValueByDataKey(entry, zAxisDataKey) || '-';\n var tooltipPayload = [{\n name: isNil(xAxis.dataKey) ? item.props.name : xAxis.name || xAxis.dataKey,\n unit: xAxis.unit || '',\n value: x,\n payload: entry,\n dataKey: xAxisDataKey,\n type: tooltipType\n }, {\n name: isNil(yAxis.dataKey) ? item.props.name : yAxis.name || yAxis.dataKey,\n unit: yAxis.unit || '',\n value: y,\n payload: entry,\n dataKey: yAxisDataKey,\n type: tooltipType\n }];\n if (z !== '-') {\n tooltipPayload.push({\n name: zAxis.name || zAxis.dataKey,\n unit: zAxis.unit || '',\n value: z,\n payload: entry,\n dataKey: zAxisDataKey,\n type: tooltipType\n });\n }\n var cx = getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: xBandSize,\n entry: entry,\n index: index,\n dataKey: xAxisDataKey\n });\n var cy = getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: yBandSize,\n entry: entry,\n index: index,\n dataKey: yAxisDataKey\n });\n var size = z !== '-' ? zAxis.scale(z) : defaultZ;\n var radius = Math.sqrt(Math.max(size, 0) / Math.PI);\n return _objectSpread(_objectSpread({}, entry), {}, {\n cx: cx,\n cy: cy,\n x: cx - radius,\n y: cy - radius,\n xAxis: xAxis,\n yAxis: yAxis,\n zAxis: zAxis,\n width: 2 * radius,\n height: 2 * radius,\n size: size,\n node: {\n x: x,\n y: y,\n z: z\n },\n tooltipPayload: tooltipPayload,\n tooltipPosition: {\n x: cx,\n y: cy\n },\n payload: entry\n }, cells && cells[index] && cells[index].props);\n });\n return _objectSpread({\n points: points\n }, offset);\n});","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview X Axis\n */\n\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useXAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\n/** Define of XAxis props */\n\nexport var XAxis = function XAxis(_ref) {\n var xAxisId = _ref.xAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useXAxisOrThrow(xAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n};\nXAxis.displayName = 'XAxis';\nXAxis.defaultProps = {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Y Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useYAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\nexport var YAxis = function YAxis(_ref) {\n var yAxisId = _ref.yAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useYAxisOrThrow(yAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n};\nYAxis.displayName = 'YAxis';\nYAxis.defaultProps = {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine);\n var dots = findAllByType(children, ReferenceDot);\n var elements = [].concat(_toConsumableArray(lines), _toConsumableArray(dots));\n var areas = findAllByType(children, ReferenceArea);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n return result;\n }, finalDomain);\n }\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n return result;\n }, finalDomain);\n }\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n return result;\n }, finalDomain);\n }\n return finalDomain;\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","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport var AccessibilityManager = /*#__PURE__*/function () {\n function AccessibilityManager() {\n _classCallCheck(this, AccessibilityManager);\n _defineProperty(this, \"activeIndex\", 0);\n _defineProperty(this, \"coordinateList\", []);\n _defineProperty(this, \"layout\", 'horizontal');\n }\n _createClass(AccessibilityManager, [{\n key: \"setDetails\",\n value: function setDetails(_ref) {\n var _ref2;\n var _ref$coordinateList = _ref.coordinateList,\n coordinateList = _ref$coordinateList === void 0 ? null : _ref$coordinateList,\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? null : _ref$container,\n _ref$layout = _ref.layout,\n layout = _ref$layout === void 0 ? null : _ref$layout,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? null : _ref$offset,\n _ref$mouseHandlerCall = _ref.mouseHandlerCallback,\n mouseHandlerCallback = _ref$mouseHandlerCall === void 0 ? null : _ref$mouseHandlerCall;\n this.coordinateList = (_ref2 = coordinateList !== null && coordinateList !== void 0 ? coordinateList : this.coordinateList) !== null && _ref2 !== void 0 ? _ref2 : [];\n this.container = container !== null && container !== void 0 ? container : this.container;\n this.layout = layout !== null && layout !== void 0 ? layout : this.layout;\n this.offset = offset !== null && offset !== void 0 ? offset : this.offset;\n this.mouseHandlerCallback = mouseHandlerCallback !== null && mouseHandlerCallback !== void 0 ? mouseHandlerCallback : this.mouseHandlerCallback;\n\n // Keep activeIndex in the bounds between 0 and the last coordinate index\n this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.spoofMouse();\n }\n }, {\n key: \"keyboardEvent\",\n value: function keyboardEvent(e) {\n // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n // if there are no tooltips, since that will cause unexpected behavior of users.\n if (this.coordinateList.length === 0) {\n return;\n }\n switch (e.key) {\n case 'ArrowRight':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n this.spoofMouse();\n break;\n }\n case 'ArrowLeft':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.max(this.activeIndex - 1, 0);\n this.spoofMouse();\n break;\n }\n default:\n {\n break;\n }\n }\n }\n }, {\n key: \"setIndex\",\n value: function setIndex(newIndex) {\n this.activeIndex = newIndex;\n }\n }, {\n key: \"spoofMouse\",\n value: function spoofMouse() {\n var _window, _window2;\n if (this.layout !== 'horizontal') {\n return;\n }\n\n // This can happen when the tooltips suddenly stop existing as children of the component\n // That update doesn't otherwise fire events, so we have to double check here.\n if (this.coordinateList.length === 0) {\n return;\n }\n var _this$container$getBo = this.container.getBoundingClientRect(),\n x = _this$container$getBo.x,\n y = _this$container$getBo.y,\n height = _this$container$getBo.height;\n var coordinate = this.coordinateList[this.activeIndex].coordinate;\n var scrollOffsetX = ((_window = window) === null || _window === void 0 ? void 0 : _window.scrollX) || 0;\n var scrollOffsetY = ((_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.scrollY) || 0;\n var pageX = x + coordinate + scrollOffsetX;\n var pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n this.mouseHandlerCallback({\n pageX: pageX,\n pageY: pageY\n });\n }\n }]);\n return AccessibilityManager;\n}();","import { isNumber } from './DataUtils';\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param {AxisDomain} domain The potential domain from props\n * @param {Boolean} allowDataOverflow from props\n * @param {String} axisType from props\n * @returns {Boolean} `true` if domain is specified by user\n */\nexport function isDomainSpecifiedByUser(domain, allowDataOverflow, axisType) {\n if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n var domainStart = domain === null || domain === void 0 ? void 0 : domain[0];\n var domainEnd = domain === null || domain === void 0 ? void 0 : domain[1];\n\n /*\n * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n * In such case, we have to compute the domain from the data.\n */\n if (!!domainStart && !!domainEnd && isNumber(domainStart) && isNumber(domainEnd)) {\n return true;\n }\n }\n return false;\n}","export function getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize) {\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n}","import { polarToCartesian } from '../PolarUtils';\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */\nexport function getRadialCursorPoints(activeCoordinate) {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(cx, cy, radius, startAngle);\n var endPoint = polarToCartesian(cx, cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: cx,\n cy: cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}","import { polarToCartesian } from '../PolarUtils';\nimport { getRadialCursorPoints } from './getRadialCursorPoints';\nexport function getCursorPoints(layout, activeCoordinate, offset) {\n var x1, y1, x2, y2;\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n return getRadialCursorPoints(activeCoordinate);\n }\n }\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { cloneElement, createElement, isValidElement } from 'react';\nimport clsx from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { getCursorRectangle } from '../util/cursor/getCursorRectangle';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getRadialCursorPoints } from '../util/cursor/getRadialCursorPoints';\nimport { Sector } from '../shape/Sector';\nimport { getCursorPoints } from '../util/cursor/getCursorPoints';\nimport { filterProps } from '../util/ReactUtils';\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */\nexport function Cursor(props) {\n var element = props.element,\n tooltipEventType = props.tooltipEventType,\n isActive = props.isActive,\n activeCoordinate = props.activeCoordinate,\n activePayload = props.activePayload,\n offset = props.offset,\n activeTooltipIndex = props.activeTooltipIndex,\n tooltipAxisBandSize = props.tooltipAxisBandSize,\n layout = props.layout,\n chartName = props.chartName;\n if (!element || !element.props.cursor || !isActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n var restProps;\n var cursorComp = Curve;\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize);\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _getRadialCursorPoint = getRadialCursorPoints(activeCoordinate),\n cx = _getRadialCursorPoint.cx,\n cy = _getRadialCursorPoint.cy,\n radius = _getRadialCursorPoint.radius,\n startAngle = _getRadialCursorPoint.startAngle,\n endAngle = _getRadialCursorPoint.endAngle;\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: getCursorPoints(layout, activeCoordinate, offset)\n };\n cursorComp = Curve;\n }\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(element.props.cursor, false)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n className: clsx('recharts-tooltip-cursor', element.props.cursor.className)\n });\n return /*#__PURE__*/isValidElement(element.props.cursor) ? /*#__PURE__*/cloneElement(element.props.cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n}","var _excluded = [\"item\"],\n _excluded2 = [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\", \"title\", \"desc\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component, cloneElement, isValidElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport get from 'lodash/get';\nimport sortBy from 'lodash/sortBy';\nimport throttle from 'lodash/throttle';\nimport clsx from 'clsx';\n// eslint-disable-next-line no-restricted-imports\n\nimport invariant from 'tiny-invariant';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle } from '../shape/Rectangle';\nimport { filterProps, findAllByType, findChildByType, getDisplayName, getReactEventByType, isChildrenEqual, parseChildIndex, renderByOrder, validateWidthHeight } from '../util/ReactUtils';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset } from '../util/DOMUtils';\nimport { findEntryInArray, getAnyElementOfObject, hasDuplicate, isNumber, uniqueId } from '../util/DataUtils';\nimport { appendOffsetOfLegend, calculateActiveTickIndex, combineEventHandlers, getBandSizeOfAxis, getBarPosition, getBarSizeList, getDomainOfDataByKey, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getLegendProps, getMainColorOfGraphicItem, getStackedDataOfItem, getStackGroupsByAxisId, getTicksOfAxis, getTooltipItem, isCategoricalAxis, parseDomainOfCategoryAxis, parseErrorBarsOfAxis, parseSpecifiedDomain } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { adaptEventHandlers } from '../util/types';\nimport { AccessibilityManager } from './AccessibilityManager';\nimport { isDomainSpecifiedByUser } from '../util/isDomainSpecifiedByUser';\nimport { getActiveShapeIndexForTooltip, isFunnel, isPie, isScatter } from '../util/ActiveShapeUtils';\nimport { Cursor } from '../component/Cursor';\nimport { ChartLayoutContextProvider } from '../context/chartLayoutContext';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar FULL_WIDTH_AND_HEIGHT = {\n width: '100%',\n height: '100%'\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n\n/**\n * This function exists as a temporary workaround.\n *\n * Why? generateCategoricalChart does not render `{children}` directly;\n * instead it passes them through `renderByOrder` function which reads their handlers.\n *\n * So, this is a handler that does nothing.\n * Once we get rid of `renderByOrder` and switch to JSX only, we can get rid of this handler too.\n *\n * @param {JSX} element as is in JSX\n * @returns {JSX} the same element\n */\nfunction renderAsIs(element) {\n return element;\n}\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n return rangeObj.radius;\n};\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n return originCoordinate;\n};\nvar getDisplayedData = function getDisplayedData(data, _ref) {\n var graphicalItems = _ref.graphicalItems,\n dataStartIndex = _ref.dataStartIndex,\n dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems !== null && graphicalItems !== void 0 ? graphicalItems : []).reduce(function (result, child) {\n var itemData = child.props.data;\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n return result;\n }, []);\n if (itemsData.length > 0) {\n return itemsData;\n }\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n return [];\n};\nfunction getDefaultDomainByAxisType(axisType) {\n return axisType === 'number' ? [0, 'auto'] : undefined;\n}\n\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems,\n tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n }\n // get data by activeIndex when the axis don't allow duplicated category\n return graphicalItems.reduce(function (result, child) {\n var _child$props$data;\n /**\n * Fixes: https://github.com/recharts/recharts/issues/3669\n * Defaulting to chartData below to fix an edge case where the tooltip does not include data from all charts\n * when a separate dataset is passed to chart prop data and specified on Line/Area/etc prop data\n */\n var data = (_child$props$data = child.props.data) !== null && _child$props$data !== void 0 ? _child$props$data : chartData;\n if (data && state.dataStartIndex + state.dataEndIndex !== 0) {\n data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n }\n var payload;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n if (!payload) {\n return result;\n }\n return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n }, []);\n};\n\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks,\n axis = state.tooltipAxis,\n tooltipTicks = state.tooltipTicks;\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n return null;\n};\n\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nexport var getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes,\n graphicalItems = _ref2.graphicalItems,\n axisType = _ref2.axisType,\n axisIdKey = _ref2.axisIdKey,\n stackGroups = _ref2.stackGroups,\n dataStartIndex = _ref2.dataStartIndex,\n dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorical = isCategoricalAxis(layout, axisType);\n\n // Eliminate duplicated axes\n return axes.reduce(function (result, child) {\n var _child$props$domain2;\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks,\n includeHidden = _child$props.includeHidden;\n var axisId = child.props[axisIdKey];\n if (result[axisId]) {\n return result;\n }\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var domain, duplicateDomain, categoricalDomain;\n\n /*\n * This is a hack to short-circuit the domain creation here to enhance performance.\n * Usually, the data is used to determine the domain, but when the user specifies\n * a domain upfront (via props), there is no need to calculate the domain start and end,\n * which is very expensive for a larger amount of data.\n * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n * because the axis is supposed to ignore the specified domain that way.\n */\n if (isDomainSpecifiedByUser(child.props.domain, allowDataOverflow, type)) {\n domain = parseSpecifiedDomain(child.props.domain, null, allowDataOverflow);\n /* The chart can be categorical and have the domain specified in numbers\n * we still need to calculate the categorical domain\n * TODO: refactor this more\n */\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n }\n\n // if the domain is defaulted we need this for `originalDomain` as well\n var defaultDomain = getDefaultDomainByAxisType(type);\n\n // we didn't create the domain from user's props above, so we need to calculate it\n if (!domain || domain.length === 0) {\n var _child$props$domain;\n var childDomain = (_child$props$domain = child.props.domain) !== null && _child$props$domain !== void 0 ? _child$props$domain : defaultDomain;\n if (dataKey) {\n // has dataKey in \n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is categorical axis\n var duplicate = hasDuplicate(domain);\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain;\n // When category axis has duplicated text, serial numbers are used to generate scale\n domain = range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !isNil(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), dataKey, axisType, layout);\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), type, layout, true);\n }\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n if (childDomain) {\n domain = parseSpecifiedDomain(childDomain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && childDomain) {\n var axisDomain = childDomain;\n var isDomainValid = domain.every(function (entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n if (isDomainValid) {\n domain = axisDomain;\n }\n }\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: (_child$props$domain2 = child.props.domain) !== null && _child$props$domain2 !== void 0 ? _child$props$domain2 : defaultDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }, {});\n};\n\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems,\n Axis = _ref3.Axis,\n axisType = _ref3.axisType,\n axisIdKey = _ref3.axisIdKey,\n stackGroups = _ref3.stackGroups,\n dataStartIndex = _ref3.dataStartIndex,\n dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = isCategoricalAxis(layout, axisType);\n var index = -1;\n\n // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n return graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n var originalDomain = getDefaultDomainByAxisType('number');\n if (!result[axisId]) {\n index++;\n var domain;\n if (isCategorical) {\n domain = range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(originalDomain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: originalDomain,\n isCategorical: isCategorical,\n layout: layout\n // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n })));\n }\n return result;\n }, {});\n};\n\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {React.ComponentType} [AxisComp] Axis Component\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType,\n axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n AxisComp = _ref4.AxisComp,\n graphicalItems = _ref4.graphicalItems,\n stackGroups = _ref4.stackGroups,\n dataStartIndex = _ref4.dataStartIndex,\n dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\");\n // Get all the instance of Axis\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n return axisMap;\n};\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n };\n};\n\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\nexport var createDefaultState = function createDefaultState(props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush);\n var startIndex = 0;\n var endIndex = 0;\n if (props.data && props.data.length !== 0) {\n endIndex = props.data.length - 1;\n }\n if (brushItem && brushItem.props) {\n if (brushItem.props.startIndex >= 0) {\n startIndex = brushItem.props.startIndex;\n }\n if (brushItem.props.endIndex >= 0) {\n endIndex = brushItem.props.endIndex;\n }\n }\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: Boolean(defaultShowTooltip)\n };\n};\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} params.props Latest props\n * @param {Array} params.graphicalItems The instances of item\n * @param {Object} params.xAxisMap The configuration of x-axis\n * @param {Object} params.yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox The boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props,\n graphicalItems = _ref5.graphicalItems,\n _ref5$xAxisMap = _ref5.xAxisMap,\n xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n _ref5$yAxisMap = _ref5.yAxisMap,\n yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush);\n var legendItem = findChildByType(children, Legend);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, get(result, \"\".concat(orientation)) + entry.height));\n }\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n var brushBottom = offset.bottom;\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n if (legendItem && prevLegendBBox) {\n // @ts-expect-error margin is optional in props but required in appendOffsetOfLegend\n offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n }\n var offsetWidth = width - offset.left - offset.right;\n var offsetHeight = height - offset.top - offset.bottom;\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n // never return negative values for height and width\n width: Math.max(offsetWidth, 0),\n height: Math.max(offsetHeight, 0)\n });\n};\n// Determine the size of the axis, used for calculation of relative bar sizes\nvar getCartesianAxisSize = function getCartesianAxisSize(axisObj, axisName) {\n if (axisName === 'xAxis') {\n return axisObj[axisName].width;\n }\n if (axisName === 'yAxis') {\n return axisObj[axisName].height;\n }\n // This is only supported for Bar charts (i.e. charts with cartesian axes), so we should never get here\n return undefined;\n};\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var _CategoricalChartWrapper;\n var chartName = _ref6.chartName,\n GraphicalChild = _ref6.GraphicalChild,\n _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n axisComponents = _ref6.axisComponents,\n legendContent = _ref6.legendContent,\n formatAxisMap = _ref6.formatAxisMap,\n defaultProps = _ref6.defaultProps;\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n var _getAxisNameByLayout = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout.numericAxisName,\n cateAxisName = _getAxisNameByLayout.cateAxisName;\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var formattedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: [item],\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n childMaxBarSize = _item$props.maxBarSize;\n // axisId of the numerical axis\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n // axisId of the categorical axis\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObjInitialValue = {};\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _item$type$displayNam, _item$type;\n // map of axisId to axis for a specific axis type\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n // axisId of axis we are currently computing\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n\n /**\n * tell the user in dev mode that their configuration is incorrect if we cannot find a match between\n * axisId on the chart and axisId on the axis. zAxis does not get passed in the map for ComposedChart,\n * leave it out of the check for now.\n */\n !(axisMap && axisMap[id] || entry.axisType === 'zAxis') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Specifying a(n) \".concat(entry.axisType, \"Id requires a corresponding \").concat(entry.axisType\n // @ts-expect-error we should stop reading data from ReactElements\n , \"Id on the targeted graphical component \").concat((_item$type$displayNam = item === null || item === void 0 || (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) !== null && _item$type$displayNam !== void 0 ? _item$type$displayNam : '')) : invariant(false) : void 0;\n\n // the axis we are currently formatting\n var axis = axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty(_defineProperty({}, entry.axisType, axis), \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)));\n }, axisObjInitialValue);\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var barPosition = [];\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups,\n totalSize: getCartesianAxisSize(axisObj, cateAxisName)\n });\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n // If it is bar, calculate the position of bar\n var maxBarSize = isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function (pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n // @ts-expect-error we should stop reading data from ReactElements\n var composedFn = item && item.type && item.type.getComposedData;\n if (composedFn) {\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, _defineProperty(_defineProperty(_defineProperty({\n key: item.key || \"item-\".concat(index)\n }, numericAxisName, axisObj[numericAxisName]), cateAxisName, axisObj[cateAxisName]), \"animationId\", updateId)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\n };\n\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */\n var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout2.numericAxisName,\n cateAxisName = _getAxisNameByLayout2.cateAxisName;\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n return _CategoricalChartWrapper = /*#__PURE__*/function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n function CategoricalChartWrapper(_props) {\n var _props$id, _props$throttleDelay;\n var _this;\n _classCallCheck(this, CategoricalChartWrapper);\n _this = _callSuper(this, CategoricalChartWrapper, [_props]);\n _defineProperty(_assertThisInitialized(_this), \"eventEmitterSymbol\", Symbol('rechartsEventEmitter'));\n _defineProperty(_assertThisInitialized(_this), \"accessibilityManager\", new AccessibilityManager());\n _defineProperty(_assertThisInitialized(_this), \"handleLegendBBoxUpdate\", function (box) {\n if (box) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleReceiveSyncEvent\", function (cId, data, emitter) {\n if (_this.props.syncId === cId) {\n if (emitter === _this.eventEmitterSymbol && typeof _this.props.syncMethod !== 'function') {\n return;\n }\n _this.applySyncEvent(data);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleBrushChange\", function (_ref9) {\n var startIndex = _ref9.startIndex,\n endIndex = _ref9.endIndex;\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n });\n /**\n * The handler of mouse entering chart\n * @param {Object} e Event object\n * @return {Null} null\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseEnter\", function (e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState);\n _this.triggerSyncEvent(_nextState);\n var onMouseEnter = _this.props.onMouseEnter;\n if (isFunction(onMouseEnter)) {\n onMouseEnter(_nextState, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"triggeredAfterMouseMove\", function (e) {\n var mouse = _this.getMouseInfo(e);\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseMove = _this.props.onMouseMove;\n if (isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n });\n /**\n * The handler of mouse entering a scatter\n * @param {Object} el The active scatter\n * @return {Object} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleItemMouseEnter\", function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n });\n /**\n * The handler of mouse leaving a scatter\n * @return {Object} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleItemMouseLeave\", function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n });\n /**\n * The handler of mouse moving in chart\n * @param {React.MouseEvent} e Event object\n * @return {void} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseMove\", function (e) {\n e.persist();\n _this.throttleTriggeredAfterMouseMove(e);\n });\n /**\n * The handler if mouse leaving chart\n * @param {Object} e Event object\n * @return {Null} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseLeave\", function (e) {\n _this.throttleTriggeredAfterMouseMove.cancel();\n var nextState = {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseLeave = _this.props.onMouseLeave;\n if (isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleOuterEvent\", function (e) {\n var eventName = getReactEventByType(e);\n var event = get(_this.props, \"\".concat(eventName));\n if (eventName && isFunction(event)) {\n var _mouse;\n var mouse;\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n event((_mouse = mouse) !== null && _mouse !== void 0 ? _mouse : {}, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleClick\", function (e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState2);\n _this.triggerSyncEvent(_nextState2);\n var onClick = _this.props.onClick;\n if (isFunction(onClick)) {\n onClick(_nextState2, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseDown\", function (e) {\n var onMouseDown = _this.props.onMouseDown;\n if (isFunction(onMouseDown)) {\n var _nextState3 = _this.getMouseInfo(e);\n onMouseDown(_nextState3, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseUp\", function (e) {\n var onMouseUp = _this.props.onMouseUp;\n if (isFunction(onMouseUp)) {\n var _nextState4 = _this.getMouseInfo(e);\n onMouseUp(_nextState4, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchStart\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchEnd\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"triggerSyncEvent\", function (data) {\n if (_this.props.syncId !== undefined) {\n eventCenter.emit(SYNC_EVENT, _this.props.syncId, data, _this.eventEmitterSymbol);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"applySyncEvent\", function (data) {\n var _this$props = _this.props,\n layout = _this$props.layout,\n syncMethod = _this$props.syncMethod;\n var updateId = _this.state.updateId;\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n _this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _this.state)));\n } else if (data.activeTooltipIndex !== undefined) {\n var chartX = data.chartX,\n chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state2 = _this.state,\n offset = _this$state2.offset,\n tooltipTicks = _this$state2.tooltipTicks;\n if (!offset) {\n return;\n }\n if (typeof syncMethod === 'function') {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === 'value') {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n for (var i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n });\n // When a categorical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(_this.state, _this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n _this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n _this.setState(data);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCursor\", function (element) {\n var _element$props$active;\n var _this$state3 = _this.state,\n isTooltipActive = _this$state3.isTooltipActive,\n activeCoordinate = _this$state3.activeCoordinate,\n activePayload = _this$state3.activePayload,\n offset = _this$state3.offset,\n activeTooltipIndex = _this$state3.activeTooltipIndex,\n tooltipAxisBandSize = _this$state3.tooltipAxisBandSize;\n var tooltipEventType = _this.getTooltipEventType();\n // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n var isActive = (_element$props$active = element.props.active) !== null && _element$props$active !== void 0 ? _element$props$active : isTooltipActive;\n var layout = _this.props.layout;\n var key = element.key || '_recharts-cursor';\n return /*#__PURE__*/React.createElement(Cursor, {\n key: key,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex,\n chartName: chartName,\n element: element,\n isActive: isActive,\n layout: layout,\n offset: offset,\n tooltipAxisBandSize: tooltipAxisBandSize,\n tooltipEventType: tooltipEventType\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarAxis\", function (element, displayName, index) {\n var axisType = get(element, 'type.axisType');\n var axisMap = get(_this.state, \"\".concat(axisType, \"Map\"));\n var axisOption = axisMap && axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: clsx(axisType, axisOption.className),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarGrid\", function (element) {\n var _element$props = element.props,\n radialLines = _element$props.radialLines,\n polarAngles = _element$props.polarAngles,\n polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state,\n radiusAxisMap = _this$state4.radiusAxisMap,\n angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n return /*#__PURE__*/cloneElement(element, {\n polarAngles: Array.isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: Array.isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n });\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */\n _defineProperty(_assertThisInitialized(_this), \"renderLegend\", function () {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props,\n children = _this$props2.children,\n width = _this$props2.width,\n height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = getLegendProps({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n if (!props) {\n return null;\n }\n var item = props.item,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n });\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */\n _defineProperty(_assertThisInitialized(_this), \"renderTooltip\", function () {\n var _tooltipItem$props$ac;\n var _this$props3 = _this.props,\n children = _this$props3.children,\n accessibilityLayer = _this$props3.accessibilityLayer;\n var tooltipItem = findChildByType(children, Tooltip);\n if (!tooltipItem) {\n return null;\n }\n var _this$state5 = _this.state,\n isTooltipActive = _this$state5.isTooltipActive,\n activeCoordinate = _this$state5.activeCoordinate,\n activePayload = _this$state5.activePayload,\n activeLabel = _this$state5.activeLabel,\n offset = _this$state5.offset;\n\n // The user can set isActive on the Tooltip,\n // and we respect the user to enable customisation.\n // The Tooltip is active if the user has set isActive, or if the tooltip is active due to a mouse event.\n var isActive = (_tooltipItem$props$ac = tooltipItem.props.active) !== null && _tooltipItem$props$ac !== void 0 ? _tooltipItem$props$ac : isTooltipActive;\n return /*#__PURE__*/cloneElement(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isActive,\n label: activeLabel,\n payload: isActive ? activePayload : [],\n coordinate: activeCoordinate,\n accessibilityLayer: accessibilityLayer\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderBrush\", function (element) {\n var _this$props4 = _this.props,\n margin = _this$props4.margin,\n data = _this$props4.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId;\n\n // TODO: update brush when children update\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderReferenceElement\", function (element, displayName, index) {\n if (!element) {\n return null;\n }\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var _element$props2 = element.props,\n xAxisId = _element$props2.xAxisId,\n yAxisId = _element$props2.yAxisId;\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderActivePoints\", function (_ref10) {\n var item = _ref10.item,\n activePoint = _ref10.activePoint,\n basePoint = _ref10.basePoint,\n childIndex = _ref10.childIndex,\n isRange = _ref10.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n dataKey = _item$item$props.dataKey;\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, filterProps(activeDot, false)), adaptEventHandlers(activeDot));\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n return result;\n });\n _defineProperty(_assertThisInitialized(_this), \"renderGraphicChild\", function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n if (!item) {\n return null;\n }\n var tooltipEventType = _this.getTooltipEventType();\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n var _item$props2 = item.props,\n points = _item$props2.points,\n isRange = _item$props2.isRange,\n baseLine = _item$props2.baseLine;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n hide = _item$item$props2.hide,\n activeBar = _item$item$props2.activeBar,\n activeShape = _item$item$props2.activeShape;\n var hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n var itemEvents = {};\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: combineEventHandlers(_this.handleItemMouseEnter, element.props.onClick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, element.props.onMouseLeave),\n onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, element.props.onMouseEnter)\n };\n }\n var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n if (hasActive) {\n if (activeTooltipIndex >= 0) {\n var activePoint, basePoint;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points === null || points === void 0 ? void 0 : points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n if (activeShape || activeBar) {\n var activeIndex = element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n return [/*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: activeIndex\n })), null, null];\n }\n if (!isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n } else {\n var _this$getItemByXY;\n /**\n * We hit this block if consumer uses a Tooltip without XAxis and/or YAxis.\n * In which case, this.state.activeTooltipIndex never gets set\n * because the mouse events that trigger that value getting set never get trigged without the axis components.\n *\n * An example usage case is a FunnelChart\n */\n var _ref11 = (_this$getItemByXY = _this.getItemByXY(_this.state.activeCoordinate)) !== null && _this$getItemByXY !== void 0 ? _this$getItemByXY : {\n graphicalItem: graphicalItem\n },\n _ref11$graphicalItem = _ref11.graphicalItem,\n _ref11$graphicalItem$ = _ref11$graphicalItem.item,\n xyItem = _ref11$graphicalItem$ === void 0 ? element : _ref11$graphicalItem$,\n childIndex = _ref11$graphicalItem.childIndex;\n var elementProps = _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: childIndex\n });\n return [/*#__PURE__*/cloneElement(xyItem, elementProps), null, null];\n }\n }\n if (isRange) {\n return [graphicalItem, null, null];\n }\n return [graphicalItem, null];\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCustomized\", function (element, displayName, index) {\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderMap\", {\n CartesianGrid: {\n handler: renderAsIs,\n once: true\n },\n ReferenceArea: {\n handler: _this.renderReferenceElement\n },\n ReferenceLine: {\n handler: renderAsIs\n },\n ReferenceDot: {\n handler: _this.renderReferenceElement\n },\n XAxis: {\n handler: renderAsIs\n },\n YAxis: {\n handler: renderAsIs\n },\n Brush: {\n handler: _this.renderBrush,\n once: true\n },\n Bar: {\n handler: _this.renderGraphicChild\n },\n Line: {\n handler: _this.renderGraphicChild\n },\n Area: {\n handler: _this.renderGraphicChild\n },\n Radar: {\n handler: _this.renderGraphicChild\n },\n RadialBar: {\n handler: _this.renderGraphicChild\n },\n Scatter: {\n handler: _this.renderGraphicChild\n },\n Pie: {\n handler: _this.renderGraphicChild\n },\n Funnel: {\n handler: _this.renderGraphicChild\n },\n Tooltip: {\n handler: _this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: _this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: _this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: _this.renderPolarAxis\n },\n Customized: {\n handler: _this.renderCustomized\n }\n });\n _this.clipPathId = \"\".concat((_props$id = _props.id) !== null && _props$id !== void 0 ? _props$id : uniqueId('recharts'), \"-clip\");\n\n // trigger 60fps\n _this.throttleTriggeredAfterMouseMove = throttle(_this.triggeredAfterMouseMove, (_props$throttleDelay = _props.throttleDelay) !== null && _props$throttleDelay !== void 0 ? _props$throttleDelay : 1000 / 60);\n _this.state = {};\n return _this;\n }\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props$margin$le, _this$props$margin$to;\n this.addListener();\n this.accessibilityManager.setDetails({\n container: this.container,\n offset: {\n left: (_this$props$margin$le = this.props.margin.left) !== null && _this$props$margin$le !== void 0 ? _this$props$margin$le : 0,\n top: (_this$props$margin$to = this.props.margin.top) !== null && _this$props$margin$to !== void 0 ? _this$props$margin$to : 0\n },\n coordinateList: this.state.tooltipTicks,\n mouseHandlerCallback: this.triggeredAfterMouseMove,\n layout: this.props.layout\n });\n this.displayDefaultTooltip();\n }\n }, {\n key: \"displayDefaultTooltip\",\n value: function displayDefaultTooltip() {\n var _this$props5 = this.props,\n children = _this$props5.children,\n data = _this$props5.data,\n height = _this$props5.height,\n layout = _this$props5.layout;\n var tooltipElem = findChildByType(children, Tooltip);\n // If the chart doesn't include a element, there's no tooltip to display\n if (!tooltipElem) {\n return;\n }\n var defaultIndex = tooltipElem.props.defaultIndex;\n\n // Protect against runtime errors\n if (typeof defaultIndex !== 'number' || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length) {\n return;\n }\n var activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n var activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n var independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n var dependentAxisCoord = (this.state.offset.top + height) / 2;\n var isHorizontal = layout === 'horizontal';\n var activeCoordinate = isHorizontal ? {\n x: independentAxisCoord,\n y: dependentAxisCoord\n } : {\n y: independentAxisCoord,\n x: dependentAxisCoord\n };\n\n // Unlike other chart types, scatter plot's tooltip positions rely on both X and Y coordinates. Only the scatter plot\n // element knows its own Y coordinates.\n // If there's a scatter plot, we'll want to grab that element for an interrogation.\n var scatterPlotElement = this.state.formattedGraphicalItems.find(function (_ref12) {\n var item = _ref12.item;\n return item.type.name === 'Scatter';\n });\n if (scatterPlotElement) {\n activeCoordinate = _objectSpread(_objectSpread({}, activeCoordinate), scatterPlotElement.props.points[defaultIndex].tooltipPosition);\n activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n }\n var nextState = {\n activeTooltipIndex: defaultIndex,\n isTooltipActive: true,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n this.setState(nextState);\n this.renderCursor(tooltipElem);\n\n // Make sure that anyone who keyboard-only users who tab to the chart will start their\n // cursors at defaultIndex\n this.accessibilityManager.setIndex(defaultIndex);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (!this.props.accessibilityLayer) {\n return null;\n }\n if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n this.accessibilityManager.setDetails({\n coordinateList: this.state.tooltipTicks\n });\n }\n if (this.props.layout !== prevProps.layout) {\n this.accessibilityManager.setDetails({\n layout: this.props.layout\n });\n }\n if (this.props.margin !== prevProps.margin) {\n var _this$props$margin$le2, _this$props$margin$to2;\n this.accessibilityManager.setDetails({\n offset: {\n left: (_this$props$margin$le2 = this.props.margin.left) !== null && _this$props$margin$le2 !== void 0 ? _this$props$margin$le2 : 0,\n top: (_this$props$margin$to2 = this.props.margin.top) !== null && _this$props$margin$to2 !== void 0 ? _this$props$margin$to2 : 0\n }\n });\n }\n\n // Something has to be returned for getSnapshotBeforeUpdate\n return null;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Check to see if the Tooltip updated. If so, re-check default tooltip position\n if (!isChildrenEqual([findChildByType(prevProps.children, Tooltip)], [findChildByType(this.props.children, Tooltip)])) {\n this.displayDefaultTooltip();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeListener();\n this.throttleTriggeredAfterMouseMove.cancel();\n }\n }, {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = findChildByType(this.props.children, Tooltip);\n if (tooltipItem && typeof tooltipItem.props.shared === 'boolean') {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n return defaultTooltipEventType;\n }\n\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {MousePointer} event The event object\n * @return {Object} Mouse data\n */\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n var element = this.container;\n var boundingRect = element.getBoundingClientRect();\n var containerOffset = getOffset(boundingRect);\n var e = {\n chartX: Math.round(event.pageX - containerOffset.left),\n chartY: Math.round(event.pageY - containerOffset.top)\n };\n var scale = boundingRect.width / element.offsetWidth || 1;\n var rangeObj = this.inRange(e.chartX, e.chartY, scale);\n if (!rangeObj) {\n return null;\n }\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n return null;\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var scale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var layout = this.props.layout;\n var scaledX = x / scale,\n scaledY = y / scale;\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = scaledX >= offset.left && scaledX <= offset.left + offset.width && scaledY >= offset.top && scaledY <= offset.top + offset.height;\n return isInRange ? {\n x: scaledX,\n y: scaledY\n } : null;\n }\n var _this$state10 = this.state,\n angleAxisMap = _this$state10.angleAxisMap,\n radiusAxisMap = _this$state10.radiusAxisMap;\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: scaledX,\n y: scaledY\n }, angleAxis);\n }\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = findChildByType(children, Tooltip);\n var tooltipEvents = {};\n if (tooltipItem && tooltipEventType === 'axis') {\n if (tooltipItem.props.trigger === 'click') {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n };\n }\n }\n\n // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var entry = formattedGraphicalItems[i];\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n return null;\n }\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n axisId = _ref14[0],\n axisProps = _ref14[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n axisId = _ref16[0],\n axisProps = _ref16[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap;\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 || (_this$state$xAxisMap = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap === void 0 ? void 0 : _this$state$xAxisMap.scale;\n }\n }, {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap;\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 || (_this$state$yAxisMap = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap === void 0 ? void 0 : _this$state$yAxisMap.scale;\n }\n }, {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var _this$state11 = this.state,\n formattedGraphicalItems = _this$state11.formattedGraphicalItems,\n activeItem = _this$state11.activeItem;\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var graphicalItem = formattedGraphicalItems[i];\n var props = graphicalItem.props,\n item = graphicalItem.item;\n var itemDisplayName = getDisplayName(item.type);\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function (entry) {\n return isInRectangle(chartXY, entry);\n });\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function (entry) {\n return inRangeOfSector(chartXY, entry);\n });\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n } else if (isFunnel(graphicalItem, activeItem) || isPie(graphicalItem, activeItem) || isScatter(graphicalItem, activeItem)) {\n var activeIndex = getActiveShapeIndexForTooltip({\n graphicalItem: graphicalItem,\n activeTooltipItem: activeItem,\n itemData: item.props.data\n });\n var childIndex = item.props.activeIndex === undefined ? activeIndex : item.props.activeIndex;\n return {\n graphicalItem: _objectSpread(_objectSpread({}, graphicalItem), {}, {\n childIndex: childIndex\n }),\n payload: isScatter(graphicalItem, activeItem) ? item.props.data[activeIndex] : graphicalItem.props.data[activeIndex]\n };\n }\n }\n }\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n if (!validateWidthHeight(this)) {\n return null;\n }\n var _this$props6 = this.props,\n children = _this$props6.children,\n className = _this$props6.className,\n width = _this$props6.width,\n height = _this$props6.height,\n style = _this$props6.style,\n compact = _this$props6.compact,\n title = _this$props6.title,\n desc = _this$props6.desc,\n others = _objectWithoutProperties(_this$props6, _excluded2);\n var attrs = filterProps(others, false);\n\n // The \"compact\" mode is mainly used as the panorama within Brush\n if (compact) {\n return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), renderByOrder(children, this.renderMap)));\n }\n if (this.props.accessibilityLayer) {\n var _this$props$tabIndex, _this$props$role;\n // Set tabIndex to 0 by default (can be overwritten)\n attrs.tabIndex = (_this$props$tabIndex = this.props.tabIndex) !== null && _this$props$tabIndex !== void 0 ? _this$props$tabIndex : 0;\n // Set role to img by default (can be overwritten)\n attrs.role = (_this$props$role = this.props.role) !== null && _this$props$role !== void 0 ? _this$props$role : 'application';\n attrs.onKeyDown = function (e) {\n _this2.accessibilityManager.keyboardEvent(e);\n // 'onKeyDown' is not currently a supported prop that can be passed through\n // if it's added, this should be added: this.props.onKeyDown(e);\n };\n attrs.onFocus = function () {\n _this2.accessibilityManager.focus();\n // 'onFocus' is not currently a supported prop that can be passed through\n // if it's added, the focus event should be forwarded to the prop\n };\n }\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this2.container = node;\n }\n }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc,\n style: FULL_WIDTH_AND_HEIGHT\n }), this.renderClipPath(), renderByOrder(children, this.renderMap)), this.renderLegend(), this.renderTooltip()));\n }\n }]);\n return CategoricalChartWrapper;\n }(Component), _defineProperty(_CategoricalChartWrapper, \"displayName\", chartName), _defineProperty(_CategoricalChartWrapper, \"defaultProps\", _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps)), _defineProperty(_CategoricalChartWrapper, \"getDerivedStateFromProps\", function (nextProps, prevState) {\n var dataKey = nextProps.dataKey,\n data = nextProps.data,\n children = nextProps.children,\n width = nextProps.width,\n height = nextProps.height,\n layout = nextProps.layout,\n stackOffset = nextProps.stackOffset,\n margin = nextProps.margin;\n var dataStartIndex = prevState.dataStartIndex,\n dataEndIndex = prevState.dataEndIndex;\n if (prevState.updateId === undefined) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (dataKey !== prevState.prevDataKey || data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps);\n\n // Fixes https://github.com/recharts/recharts/issues/2143\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (!isChildrenEqual(children, prevState.prevChildren)) {\n var _brush$props$startInd, _brush$props, _brush$props$endIndex, _brush$props2;\n // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n var brush = findChildByType(children, Brush);\n var startIndex = brush ? (_brush$props$startInd = (_brush$props = brush.props) === null || _brush$props === void 0 ? void 0 : _brush$props.startIndex) !== null && _brush$props$startInd !== void 0 ? _brush$props$startInd : dataStartIndex : dataStartIndex;\n var endIndex = brush ? (_brush$props$endIndex = (_brush$props2 = brush.props) === null || _brush$props2 === void 0 ? void 0 : _brush$props2.endIndex) !== null && _brush$props$endIndex !== void 0 ? _brush$props$endIndex : dataEndIndex : dataEndIndex;\n var hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n\n // update configuration in children\n var hasGlobalData = !isNil(data);\n var newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }), prevState)), {}, {\n prevChildren: children,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n return null;\n }), _defineProperty(_CategoricalChartWrapper, \"renderActiveDot\", function (option, props) {\n var dot;\n if ( /*#__PURE__*/isValidElement(option)) {\n dot = /*#__PURE__*/cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, props);\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }), _CategoricalChartWrapper;\n};","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * @fileOverview Composed Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Area } from '../cartesian/Area';\nimport { Bar } from '../cartesian/Bar';\nimport { Line } from '../cartesian/Line';\nimport { Scatter } from '../cartesian/Scatter';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { ZAxis } from '../cartesian/ZAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var ComposedChart = generateCategoricalChart({\n chartName: 'ComposedChart',\n GraphicalChild: [Line, Area, Bar, Scatter],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }, {\n axisType: 'zAxis',\n AxisComp: ZAxis\n }],\n formatAxisMap: formatAxisMap\n});"],"file":"assets/vendor-BCeIfVQQ.js"}