{"version":3,"file":"js/51245-d7a8b886c8ea333e54c2.js","mappings":";4GAEAA,EAAQC,WAuCR,SAAqBC,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,CAClD,EA3CAN,EAAQO,YAiDR,SAAsBL,GACpB,IAAIM,EAcAC,EAbAN,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvBO,EAAM,IAAIC,EAVhB,SAAsBT,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAQoBM,CAAYV,EAAKG,EAAUC,IAEzCO,EAAU,EAGVC,EAAMR,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAKI,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EACxBD,EACGO,EAAUb,EAAIc,WAAWP,KAAO,GAChCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,GACpCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACrCM,EAAUb,EAAIc,WAAWP,EAAI,IAC/BC,EAAIG,KAAcL,GAAO,GAAM,IAC/BE,EAAIG,KAAcL,GAAO,EAAK,IAC9BE,EAAIG,KAAmB,IAANL,EAmBnB,OAhBwB,IAApBF,IACFE,EACGO,EAAUb,EAAIc,WAAWP,KAAO,EAChCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACvCC,EAAIG,KAAmB,IAANL,GAGK,IAApBF,IACFE,EACGO,EAAUb,EAAIc,WAAWP,KAAO,GAChCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACpCM,EAAUb,EAAIc,WAAWP,EAAI,KAAO,EACvCC,EAAIG,KAAcL,GAAO,EAAK,IAC9BE,EAAIG,KAAmB,IAANL,GAGZE,CACT,EA5FAV,EAAQiB,cAkHR,SAAwBC,GAQtB,IAPA,IAAIV,EACAM,EAAMI,EAAMC,OACZC,EAAaN,EAAM,EACnBO,EAAQ,GACRC,EAAiB,MAGZb,EAAI,EAAGc,EAAOT,EAAMM,EAAYX,EAAIc,EAAMd,GAAKa,EACtDD,EAAMG,KAAKC,EAAYP,EAAOT,EAAIA,EAAIa,EAAkBC,EAAOA,EAAQd,EAAIa,IAqB7E,OAjBmB,IAAfF,GACFZ,EAAMU,EAAMJ,EAAM,GAClBO,EAAMG,KACJE,EAAOlB,GAAO,GACdkB,EAAQlB,GAAO,EAAK,IACpB,OAEsB,IAAfY,IACTZ,GAAOU,EAAMJ,EAAM,IAAM,GAAKI,EAAMJ,EAAM,GAC1CO,EAAMG,KACJE,EAAOlB,GAAO,IACdkB,EAAQlB,GAAO,EAAK,IACpBkB,EAAQlB,GAAO,EAAK,IACpB,MAIGa,EAAMM,KAAK,GACpB,EA1IA,IALA,IAAID,EAAS,GACTX,EAAY,GACZJ,EAA4B,oBAAfiB,WAA6BA,WAAaC,MAEvDC,EAAO,mEACFrB,EAAI,EAAsBA,EAAbqB,KAAwBrB,EAC5CiB,EAAOjB,GAAKqB,EAAKrB,GACjBM,EAAUe,EAAKd,WAAWP,IAAMA,EAQlC,SAASL,EAASF,GAChB,IAAIY,EAAMZ,EAAIiB,OAEd,GAAIL,EAAM,EAAI,EACZ,MAAM,IAAIiB,MAAM,kDAKlB,IAAI1B,EAAWH,EAAI8B,QAAQ,KAO3B,OANkB,IAAd3B,IAAiBA,EAAWS,GAMzB,CAACT,EAJcA,IAAaS,EAC/B,EACA,EAAKT,EAAW,EAGtB,CAmEA,SAASoB,EAAaP,EAAOe,EAAOC,GAGlC,IAFA,IAAI1B,EARoB2B,EASpBC,EAAS,GACJ3B,EAAIwB,EAAOxB,EAAIyB,EAAKzB,GAAK,EAChCD,GACIU,EAAMT,IAAM,GAAM,WAClBS,EAAMT,EAAI,IAAM,EAAK,QACP,IAAfS,EAAMT,EAAI,IACb2B,EAAOZ,KAdFE,GADiBS,EAeM3B,IAdT,GAAK,IACxBkB,EAAOS,GAAO,GAAK,IACnBT,EAAOS,GAAO,EAAI,IAClBT,EAAa,GAANS,IAaT,OAAOC,EAAOT,KAAK,GACrB,CAlGAZ,EAAU,IAAIC,WAAW,IAAM,GAC/BD,EAAU,IAAIC,WAAW,IAAM,uCCT/B,MAAMqB,EAAS,EAAQ,OACjBC,EAAU,EAAQ,KAClBC,EACe,mBAAXC,QAAkD,mBAAlBA,OAAY,IAChDA,OAAY,IAAE,8BACd,KAENxC,EAAQyC,OAASA,EACjBzC,EAAQ0C,WAyTR,SAAqBvB,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJsB,EAAOE,OAAOxB,EACvB,EA7TAnB,EAAQ4C,kBAAoB,GAE5B,MAAMC,EAAe,WAwDrB,SAASC,EAAc3B,GACrB,GAAIA,EAAS0B,EACX,MAAM,IAAIE,WAAW,cAAgB5B,EAAS,kCAGhD,MAAM6B,EAAM,IAAIpB,WAAWT,GAE3B,OADA8B,OAAOC,eAAeF,EAAKP,EAAOU,WAC3BH,CACT,CAYA,SAASP,EAAQW,EAAKC,EAAkBlC,GAEtC,GAAmB,iBAARiC,EAAkB,CAC3B,GAAgC,iBAArBC,EACT,MAAM,IAAIC,UACR,sEAGJ,OAAOC,EAAYH,EACrB,CACA,OAAOI,EAAKJ,EAAKC,EAAkBlC,EACrC,CAIA,SAASqC,EAAMC,EAAOJ,EAAkBlC,GACtC,GAAqB,iBAAVsC,EACT,OAqHJ,SAAqBC,EAAQC,GAK3B,GAJwB,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGRlB,EAAOmB,WAAWD,GACrB,MAAM,IAAIL,UAAU,qBAAuBK,GAG7C,MAAMxC,EAAwC,EAA/BlB,EAAWyD,EAAQC,GAClC,IAAIX,EAAMF,EAAa3B,GAEvB,MAAM0C,EAASb,EAAIc,MAAMJ,EAAQC,GASjC,OAPIE,IAAW1C,IAIb6B,EAAMA,EAAIe,MAAM,EAAGF,IAGdb,CACT,CA3IWgB,CAAWP,EAAOJ,GAG3B,GAAIY,YAAYC,OAAOT,GACrB,OAkJJ,SAAwBU,GACtB,GAAIC,EAAWD,EAAWvC,YAAa,CACrC,MAAMyC,EAAO,IAAIzC,WAAWuC,GAC5B,OAAOG,EAAgBD,EAAKE,OAAQF,EAAKG,WAAYH,EAAKpE,WAC5D,CACA,OAAOwE,EAAcN,EACvB,CAxJWO,CAAcjB,GAGvB,GAAa,MAATA,EACF,MAAM,IAAIH,UACR,yHACiDG,GAIrD,GAAIW,EAAWX,EAAOQ,cACjBR,GAASW,EAAWX,EAAMc,OAAQN,aACrC,OAAOK,EAAgBb,EAAOJ,EAAkBlC,GAGlD,GAAiC,oBAAtBwD,oBACNP,EAAWX,EAAOkB,oBAClBlB,GAASW,EAAWX,EAAMc,OAAQI,oBACrC,OAAOL,EAAgBb,EAAOJ,EAAkBlC,GAGlD,GAAqB,iBAAVsC,EACT,MAAM,IAAIH,UACR,yEAIJ,MAAMsB,EAAUnB,EAAMmB,SAAWnB,EAAMmB,UACvC,GAAe,MAAXA,GAAmBA,IAAYnB,EACjC,OAAOhB,EAAOe,KAAKoB,EAASvB,EAAkBlC,GAGhD,MAAM0D,EAkJR,SAAqBC,GACnB,GAAIrC,EAAOsC,SAASD,GAAM,CACxB,MAAMhE,EAA4B,EAAtBkE,EAAQF,EAAI3D,QAClB6B,EAAMF,EAAahC,GAEzB,OAAmB,IAAfkC,EAAI7B,QAIR2D,EAAIT,KAAKrB,EAAK,EAAG,EAAGlC,GAHXkC,CAKX,CAEA,YAAmBiC,IAAfH,EAAI3D,OACoB,iBAAf2D,EAAI3D,QAAuB+D,EAAYJ,EAAI3D,QAC7C2B,EAAa,GAEf2B,EAAcK,GAGN,WAAbA,EAAIK,MAAqBtD,MAAMuD,QAAQN,EAAIO,MACtCZ,EAAcK,EAAIO,WAD3B,CAGF,CAzKYC,CAAW7B,GACrB,GAAIoB,EAAG,OAAOA,EAEd,GAAsB,oBAAXrC,QAAgD,MAAtBA,OAAO+C,aACH,mBAA9B9B,EAAMjB,OAAO+C,aACtB,OAAO9C,EAAOe,KAAKC,EAAMjB,OAAO+C,aAAa,UAAWlC,EAAkBlC,GAG5E,MAAM,IAAImC,UACR,yHACiDG,EAErD,CAmBA,SAAS+B,EAAYC,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAInC,UAAU,0CACf,GAAImC,EAAO,EAChB,MAAM,IAAI1C,WAAW,cAAgB0C,EAAO,iCAEhD,CA0BA,SAASlC,EAAakC,GAEpB,OADAD,EAAWC,GACJ3C,EAAa2C,EAAO,EAAI,EAAoB,EAAhBT,EAAQS,GAC7C,CAuCA,SAAShB,EAAeiB,GACtB,MAAMvE,EAASuE,EAAMvE,OAAS,EAAI,EAA4B,EAAxB6D,EAAQU,EAAMvE,QAC9C6B,EAAMF,EAAa3B,GACzB,IAAK,IAAIV,EAAI,EAAGA,EAAIU,EAAQV,GAAK,EAC/BuC,EAAIvC,GAAgB,IAAXiF,EAAMjF,GAEjB,OAAOuC,CACT,CAUA,SAASsB,EAAiBoB,EAAOlB,EAAYrD,GAC3C,GAAIqD,EAAa,GAAKkB,EAAMzF,WAAauE,EACvC,MAAM,IAAIzB,WAAW,wCAGvB,GAAI2C,EAAMzF,WAAauE,GAAcrD,GAAU,GAC7C,MAAM,IAAI4B,WAAW,wCAGvB,IAAIC,EAYJ,OAVEA,OADiBiC,IAAfT,QAAuCS,IAAX9D,EACxB,IAAIS,WAAW8D,QACDT,IAAX9D,EACH,IAAIS,WAAW8D,EAAOlB,GAEtB,IAAI5C,WAAW8D,EAAOlB,EAAYrD,GAI1C8B,OAAOC,eAAeF,EAAKP,EAAOU,WAE3BH,CACT,CA2BA,SAASgC,EAAS7D,GAGhB,GAAIA,GAAU0B,EACZ,MAAM,IAAIE,WAAW,0DACaF,EAAa8C,SAAS,IAAM,UAEhE,OAAgB,EAATxE,CACT,CAsGA,SAASlB,EAAYyD,EAAQC,GAC3B,GAAIlB,EAAOsC,SAASrB,GAClB,OAAOA,EAAOvC,OAEhB,GAAI8C,YAAYC,OAAOR,IAAWU,EAAWV,EAAQO,aACnD,OAAOP,EAAOzD,WAEhB,GAAsB,iBAAXyD,EACT,MAAM,IAAIJ,UACR,kGAC0BI,GAI9B,MAAM5C,EAAM4C,EAAOvC,OACbyE,EAAaC,UAAU1E,OAAS,IAAsB,IAAjB0E,UAAU,GACrD,IAAKD,GAAqB,IAAR9E,EAAW,OAAO,EAGpC,IAAIgF,GAAc,EAClB,OACE,OAAQnC,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO7C,EACT,IAAK,OACL,IAAK,QACH,OAAOiF,EAAYrC,GAAQvC,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANL,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOkF,EAActC,GAAQvC,OAC/B,QACE,GAAI2E,EACF,OAAOF,GAAa,EAAIG,EAAYrC,GAAQvC,OAE9CwC,GAAY,GAAKA,GAAUsC,cAC3BH,GAAc,EAGtB,CAGA,SAASI,EAAcvC,EAAU1B,EAAOC,GACtC,IAAI4D,GAAc,EAclB,SALcb,IAAVhD,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQkE,KAAKhF,OACf,MAAO,GAOT,SAJY8D,IAAR/C,GAAqBA,EAAMiE,KAAKhF,UAClCe,EAAMiE,KAAKhF,QAGTe,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFK0B,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOyC,EAASD,KAAMlE,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOmE,EAAUF,KAAMlE,EAAOC,GAEhC,IAAK,QACH,OAAOoE,EAAWH,KAAMlE,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOqE,EAAYJ,KAAMlE,EAAOC,GAElC,IAAK,SACH,OAAOsE,EAAYL,KAAMlE,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOuE,EAAaN,KAAMlE,EAAOC,GAEnC,QACE,GAAI4D,EAAa,MAAM,IAAIxC,UAAU,qBAAuBK,GAC5DA,GAAYA,EAAW,IAAIsC,cAC3BH,GAAc,EAGtB,CAUA,SAASY,EAAM7B,EAAG8B,EAAGC,GACnB,MAAMnG,EAAIoE,EAAE8B,GACZ9B,EAAE8B,GAAK9B,EAAE+B,GACT/B,EAAE+B,GAAKnG,CACT,CA2IA,SAASoG,EAAsBtC,EAAQuC,EAAKtC,EAAYb,EAAUoD,GAEhE,GAAsB,IAAlBxC,EAAOpD,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAfqD,GACTb,EAAWa,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZU,EADJV,GAAcA,KAGZA,EAAauC,EAAM,EAAKxC,EAAOpD,OAAS,GAItCqD,EAAa,IAAGA,EAAaD,EAAOpD,OAASqD,GAC7CA,GAAcD,EAAOpD,OAAQ,CAC/B,GAAI4F,EAAK,OAAQ,EACZvC,EAAaD,EAAOpD,OAAS,CACpC,MAAO,GAAIqD,EAAa,EAAG,CACzB,IAAIuC,EACC,OAAQ,EADJvC,EAAa,CAExB,CAQA,GALmB,iBAARsC,IACTA,EAAMrE,EAAOe,KAAKsD,EAAKnD,IAIrBlB,EAAOsC,SAAS+B,GAElB,OAAmB,IAAfA,EAAI3F,QACE,EAEH6F,EAAazC,EAAQuC,EAAKtC,EAAYb,EAAUoD,GAClD,GAAmB,iBAARD,EAEhB,OADAA,GAAY,IACgC,mBAAjClF,WAAWuB,UAAUnB,QAC1B+E,EACKnF,WAAWuB,UAAUnB,QAAQiF,KAAK1C,EAAQuC,EAAKtC,GAE/C5C,WAAWuB,UAAU+D,YAAYD,KAAK1C,EAAQuC,EAAKtC,GAGvDwC,EAAazC,EAAQ,CAACuC,GAAMtC,EAAYb,EAAUoD,GAG3D,MAAM,IAAIzD,UAAU,uCACtB,CAEA,SAAS0D,EAActG,EAAKoG,EAAKtC,EAAYb,EAAUoD,GACrD,IA0BItG,EA1BA0G,EAAY,EACZC,EAAY1G,EAAIS,OAChBkG,EAAYP,EAAI3F,OAEpB,QAAiB8D,IAAbtB,IAEe,UADjBA,EAAW2D,OAAO3D,GAAUsC,gBACY,UAAbtC,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIjD,EAAIS,OAAS,GAAK2F,EAAI3F,OAAS,EACjC,OAAQ,EAEVgG,EAAY,EACZC,GAAa,EACbC,GAAa,EACb7C,GAAc,CAChB,CAGF,SAAS+C,EAAMvE,EAAKvC,GAClB,OAAkB,IAAd0G,EACKnE,EAAIvC,GAEJuC,EAAIwE,aAAa/G,EAAI0G,EAEhC,CAGA,GAAIJ,EAAK,CACP,IAAIU,GAAc,EAClB,IAAKhH,EAAI+D,EAAY/D,EAAI2G,EAAW3G,IAClC,GAAI8G,EAAK7G,EAAKD,KAAO8G,EAAKT,GAAqB,IAAhBW,EAAoB,EAAIhH,EAAIgH,IAEzD,IADoB,IAAhBA,IAAmBA,EAAahH,GAChCA,EAAIgH,EAAa,IAAMJ,EAAW,OAAOI,EAAaN,OAEtC,IAAhBM,IAAmBhH,GAAKA,EAAIgH,GAChCA,GAAc,CAGpB,MAEE,IADIjD,EAAa6C,EAAYD,IAAW5C,EAAa4C,EAAYC,GAC5D5G,EAAI+D,EAAY/D,GAAK,EAAGA,IAAK,CAChC,IAAIiH,GAAQ,EACZ,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAWM,IAC7B,GAAIJ,EAAK7G,EAAKD,EAAIkH,KAAOJ,EAAKT,EAAKa,GAAI,CACrCD,GAAQ,EACR,KACF,CAEF,GAAIA,EAAO,OAAOjH,CACpB,CAGF,OAAQ,CACV,CAcA,SAASmH,EAAU5E,EAAKU,EAAQmE,EAAQ1G,GACtC0G,EAASC,OAAOD,IAAW,EAC3B,MAAME,EAAY/E,EAAI7B,OAAS0G,EAC1B1G,GAGHA,EAAS2G,OAAO3G,IACH4G,IACX5G,EAAS4G,GAJX5G,EAAS4G,EAQX,MAAMC,EAAStE,EAAOvC,OAKtB,IAAIV,EACJ,IAJIU,EAAS6G,EAAS,IACpB7G,EAAS6G,EAAS,GAGfvH,EAAI,EAAGA,EAAIU,IAAUV,EAAG,CAC3B,MAAMwH,EAASC,SAASxE,EAAOyE,OAAW,EAAJ1H,EAAO,GAAI,IACjD,GAAIyE,EAAY+C,GAAS,OAAOxH,EAChCuC,EAAI6E,EAASpH,GAAKwH,CACpB,CACA,OAAOxH,CACT,CAEA,SAAS2H,EAAWpF,EAAKU,EAAQmE,EAAQ1G,GACvC,OAAOkH,EAAWtC,EAAYrC,EAAQV,EAAI7B,OAAS0G,GAAS7E,EAAK6E,EAAQ1G,EAC3E,CAEA,SAASmH,EAAYtF,EAAKU,EAAQmE,EAAQ1G,GACxC,OAAOkH,EAypCT,SAAuBE,GACrB,MAAMC,EAAY,GAClB,IAAK,IAAI/H,EAAI,EAAGA,EAAI8H,EAAIpH,SAAUV,EAEhC+H,EAAUhH,KAAyB,IAApB+G,EAAIvH,WAAWP,IAEhC,OAAO+H,CACT,CAhqCoBC,CAAa/E,GAASV,EAAK6E,EAAQ1G,EACvD,CAEA,SAASuH,EAAa1F,EAAKU,EAAQmE,EAAQ1G,GACzC,OAAOkH,EAAWrC,EAActC,GAASV,EAAK6E,EAAQ1G,EACxD,CAEA,SAASwH,EAAW3F,EAAKU,EAAQmE,EAAQ1G,GACvC,OAAOkH,EA0pCT,SAAyBE,EAAKK,GAC5B,IAAIC,EAAGC,EAAIC,EACX,MAAMP,EAAY,GAClB,IAAK,IAAI/H,EAAI,EAAGA,EAAI8H,EAAIpH,WACjByH,GAAS,GAAK,KADanI,EAGhCoI,EAAIN,EAAIvH,WAAWP,GACnBqI,EAAKD,GAAK,EACVE,EAAKF,EAAI,IACTL,EAAUhH,KAAKuH,GACfP,EAAUhH,KAAKsH,GAGjB,OAAON,CACT,CAxqCoBQ,CAAetF,EAAQV,EAAI7B,OAAS0G,GAAS7E,EAAK6E,EAAQ1G,EAC9E,CA8EA,SAASqF,EAAaxD,EAAKf,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQc,EAAI7B,OACtBkB,EAAOpB,cAAc+B,GAErBX,EAAOpB,cAAc+B,EAAIe,MAAM9B,EAAOC,GAEjD,CAEA,SAASmE,EAAWrD,EAAKf,EAAOC,GAC9BA,EAAM+G,KAAKC,IAAIlG,EAAI7B,OAAQe,GAC3B,MAAMiH,EAAM,GAEZ,IAAI1I,EAAIwB,EACR,KAAOxB,EAAIyB,GAAK,CACd,MAAMkH,EAAYpG,EAAIvC,GACtB,IAAI4I,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAI3I,EAAI6I,GAAoBpH,EAAK,CAC/B,IAAIqH,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHG,EAAavG,EAAIvC,EAAI,GACO,MAAV,IAAb8I,KACHG,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,EACzCG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAavG,EAAIvC,EAAI,GACrB+I,EAAYxG,EAAIvC,EAAI,GACQ,MAAV,IAAb8I,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAavG,EAAIvC,EAAI,GACrB+I,EAAYxG,EAAIvC,EAAI,GACpBgJ,EAAazG,EAAIvC,EAAI,GACO,MAAV,IAAb8I,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,IAItB,CAEkB,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbF,EAAI3H,KAAK6H,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBF,EAAI3H,KAAK6H,GACT5I,GAAK6I,CACP,CAEA,OAQF,SAAgCK,GAC9B,MAAM7I,EAAM6I,EAAWxI,OACvB,GAAIL,GAAO8I,EACT,OAAOtC,OAAOuC,aAAaC,MAAMxC,OAAQqC,GAI3C,IAAIR,EAAM,GACN1I,EAAI,EACR,KAAOA,EAAIK,GACTqI,GAAO7B,OAAOuC,aAAaC,MACzBxC,OACAqC,EAAW5F,MAAMtD,EAAGA,GAAKmJ,IAG7B,OAAOT,CACT,CAxBSY,CAAsBZ,EAC/B,CA3+BAnJ,EAAQgK,WAAanH,EAgBrBJ,EAAOwH,oBAUP,WAEE,IACE,MAAMvJ,EAAM,IAAIkB,WAAW,GACrBsI,EAAQ,CAAEC,IAAK,WAAc,OAAO,EAAG,GAG7C,OAFAlH,OAAOC,eAAegH,EAAOtI,WAAWuB,WACxCF,OAAOC,eAAexC,EAAKwJ,GACN,KAAdxJ,EAAIyJ,KACb,CAAE,MAAOC,GACP,OAAO,CACT,CACF,CArB6BC,GAExB5H,EAAOwH,qBAA0C,oBAAZK,SACb,mBAAlBA,QAAQC,OACjBD,QAAQC,MACN,iJAkBJtH,OAAOuH,eAAe/H,EAAOU,UAAW,SAAU,CAChDsH,YAAY,EACZC,IAAK,WACH,GAAKjI,EAAOsC,SAASoB,MACrB,OAAOA,KAAK5B,MACd,IAGFtB,OAAOuH,eAAe/H,EAAOU,UAAW,SAAU,CAChDsH,YAAY,EACZC,IAAK,WACH,GAAKjI,EAAOsC,SAASoB,MACrB,OAAOA,KAAK3B,UACd,IAoCF/B,EAAOkI,SAAW,KA8DlBlI,EAAOe,KAAO,SAAUC,EAAOJ,EAAkBlC,GAC/C,OAAOqC,EAAKC,EAAOJ,EAAkBlC,EACvC,EAIA8B,OAAOC,eAAeT,EAAOU,UAAWvB,WAAWuB,WACnDF,OAAOC,eAAeT,EAAQb,YA8B9Ba,EAAOE,MAAQ,SAAU8C,EAAMmF,EAAMjH,GACnC,OArBF,SAAgB8B,EAAMmF,EAAMjH,GAE1B,OADA6B,EAAWC,GACPA,GAAQ,EACH3C,EAAa2C,QAETR,IAAT2F,EAIyB,iBAAbjH,EACVb,EAAa2C,GAAMmF,KAAKA,EAAMjH,GAC9Bb,EAAa2C,GAAMmF,KAAKA,GAEvB9H,EAAa2C,EACtB,CAOS9C,CAAM8C,EAAMmF,EAAMjH,EAC3B,EAUAlB,EAAOc,YAAc,SAAUkC,GAC7B,OAAOlC,EAAYkC,EACrB,EAIAhD,EAAOoI,gBAAkB,SAAUpF,GACjC,OAAOlC,EAAYkC,EACrB,EA6GAhD,EAAOsC,SAAW,SAAmBF,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAEiG,WACpBjG,IAAMpC,EAAOU,SACjB,EAEAV,EAAOsI,QAAU,SAAkBC,EAAGnG,GAGpC,GAFIT,EAAW4G,EAAGpJ,cAAaoJ,EAAIvI,EAAOe,KAAKwH,EAAGA,EAAEnD,OAAQmD,EAAE/K,aAC1DmE,EAAWS,EAAGjD,cAAaiD,EAAIpC,EAAOe,KAAKqB,EAAGA,EAAEgD,OAAQhD,EAAE5E,cACzDwC,EAAOsC,SAASiG,KAAOvI,EAAOsC,SAASF,GAC1C,MAAM,IAAIvB,UACR,yEAIJ,GAAI0H,IAAMnG,EAAG,OAAO,EAEpB,IAAIoG,EAAID,EAAE7J,OACN+J,EAAIrG,EAAE1D,OAEV,IAAK,IAAIV,EAAI,EAAGK,EAAMmI,KAAKC,IAAI+B,EAAGC,GAAIzK,EAAIK,IAAOL,EAC/C,GAAIuK,EAAEvK,KAAOoE,EAAEpE,GAAI,CACjBwK,EAAID,EAAEvK,GACNyK,EAAIrG,EAAEpE,GACN,KACF,CAGF,OAAIwK,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACT,EAEAxI,EAAOmB,WAAa,SAAqBD,GACvC,OAAQ2D,OAAO3D,GAAUsC,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEb,EAEAxD,EAAO0I,OAAS,SAAiBC,EAAMjK,GACrC,IAAKU,MAAMuD,QAAQgG,GACjB,MAAM,IAAI9H,UAAU,+CAGtB,GAAoB,IAAhB8H,EAAKjK,OACP,OAAOsB,EAAOE,MAAM,GAGtB,IAAIlC,EACJ,QAAewE,IAAX9D,EAEF,IADAA,EAAS,EACJV,EAAI,EAAGA,EAAI2K,EAAKjK,SAAUV,EAC7BU,GAAUiK,EAAK3K,GAAGU,OAItB,MAAMoD,EAAS9B,EAAOc,YAAYpC,GAClC,IAAIkK,EAAM,EACV,IAAK5K,EAAI,EAAGA,EAAI2K,EAAKjK,SAAUV,EAAG,CAChC,IAAIuC,EAAMoI,EAAK3K,GACf,GAAI2D,EAAWpB,EAAKpB,YACdyJ,EAAMrI,EAAI7B,OAASoD,EAAOpD,QACvBsB,EAAOsC,SAAS/B,KAAMA,EAAMP,EAAOe,KAAKR,IAC7CA,EAAIqB,KAAKE,EAAQ8G,IAEjBzJ,WAAWuB,UAAUmI,IAAIrE,KACvB1C,EACAvB,EACAqI,OAGC,KAAK5I,EAAOsC,SAAS/B,GAC1B,MAAM,IAAIM,UAAU,+CAEpBN,EAAIqB,KAAKE,EAAQ8G,EACnB,CACAA,GAAOrI,EAAI7B,MACb,CACA,OAAOoD,CACT,EAiDA9B,EAAOxC,WAAaA,EA8EpBwC,EAAOU,UAAU2H,WAAY,EAQ7BrI,EAAOU,UAAUoI,OAAS,WACxB,MAAMzK,EAAMqF,KAAKhF,OACjB,GAAIL,EAAM,GAAM,EACd,MAAM,IAAIiC,WAAW,6CAEvB,IAAK,IAAItC,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5BiG,EAAKP,KAAM1F,EAAGA,EAAI,GAEpB,OAAO0F,IACT,EAEA1D,EAAOU,UAAUqI,OAAS,WACxB,MAAM1K,EAAMqF,KAAKhF,OACjB,GAAIL,EAAM,GAAM,EACd,MAAM,IAAIiC,WAAW,6CAEvB,IAAK,IAAItC,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5BiG,EAAKP,KAAM1F,EAAGA,EAAI,GAClBiG,EAAKP,KAAM1F,EAAI,EAAGA,EAAI,GAExB,OAAO0F,IACT,EAEA1D,EAAOU,UAAUsI,OAAS,WACxB,MAAM3K,EAAMqF,KAAKhF,OACjB,GAAIL,EAAM,GAAM,EACd,MAAM,IAAIiC,WAAW,6CAEvB,IAAK,IAAItC,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5BiG,EAAKP,KAAM1F,EAAGA,EAAI,GAClBiG,EAAKP,KAAM1F,EAAI,EAAGA,EAAI,GACtBiG,EAAKP,KAAM1F,EAAI,EAAGA,EAAI,GACtBiG,EAAKP,KAAM1F,EAAI,EAAGA,EAAI,GAExB,OAAO0F,IACT,EAEA1D,EAAOU,UAAUwC,SAAW,WAC1B,MAAMxE,EAASgF,KAAKhF,OACpB,OAAe,IAAXA,EAAqB,GACA,IAArB0E,UAAU1E,OAAqBkF,EAAUF,KAAM,EAAGhF,GAC/C+E,EAAa4D,MAAM3D,KAAMN,UAClC,EAEApD,EAAOU,UAAUuI,eAAiBjJ,EAAOU,UAAUwC,SAEnDlD,EAAOU,UAAUwI,OAAS,SAAiB9G,GACzC,IAAKpC,EAAOsC,SAASF,GAAI,MAAM,IAAIvB,UAAU,6BAC7C,OAAI6C,OAAStB,GACsB,IAA5BpC,EAAOsI,QAAQ5E,KAAMtB,EAC9B,EAEApC,EAAOU,UAAUyI,QAAU,WACzB,IAAIrD,EAAM,GACV,MAAMsD,EAAM7L,EAAQ4C,kBAGpB,OAFA2F,EAAMpC,KAAKR,SAAS,MAAO,EAAGkG,GAAKC,QAAQ,UAAW,OAAOC,OACzD5F,KAAKhF,OAAS0K,IAAKtD,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACIhG,IACFE,EAAOU,UAAUZ,GAAuBE,EAAOU,UAAUyI,SAG3DnJ,EAAOU,UAAU4H,QAAU,SAAkBiB,EAAQ/J,EAAOC,EAAK+J,EAAWC,GAI1E,GAHI9H,EAAW4H,EAAQpK,cACrBoK,EAASvJ,EAAOe,KAAKwI,EAAQA,EAAOnE,OAAQmE,EAAO/L,cAEhDwC,EAAOsC,SAASiH,GACnB,MAAM,IAAI1I,UACR,wFAC2B0I,GAiB/B,QAbc/G,IAAVhD,IACFA,EAAQ,QAEEgD,IAAR/C,IACFA,EAAM8J,EAASA,EAAO7K,OAAS,QAEf8D,IAAdgH,IACFA,EAAY,QAEEhH,IAAZiH,IACFA,EAAU/F,KAAKhF,QAGbc,EAAQ,GAAKC,EAAM8J,EAAO7K,QAAU8K,EAAY,GAAKC,EAAU/F,KAAKhF,OACtE,MAAM,IAAI4B,WAAW,sBAGvB,GAAIkJ,GAAaC,GAAWjK,GAASC,EACnC,OAAO,EAET,GAAI+J,GAAaC,EACf,OAAQ,EAEV,GAAIjK,GAASC,EACX,OAAO,EAQT,GAAIiE,OAAS6F,EAAQ,OAAO,EAE5B,IAAIf,GAJJiB,KAAa,IADbD,KAAe,GAMXf,GAPJhJ,KAAS,IADTD,KAAW,GASX,MAAMnB,EAAMmI,KAAKC,IAAI+B,EAAGC,GAElBiB,EAAWhG,KAAKpC,MAAMkI,EAAWC,GACjCE,EAAaJ,EAAOjI,MAAM9B,EAAOC,GAEvC,IAAK,IAAIzB,EAAI,EAAGA,EAAIK,IAAOL,EACzB,GAAI0L,EAAS1L,KAAO2L,EAAW3L,GAAI,CACjCwK,EAAIkB,EAAS1L,GACbyK,EAAIkB,EAAW3L,GACf,KACF,CAGF,OAAIwK,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACT,EA2HAxI,EAAOU,UAAUkJ,SAAW,SAAmBvF,EAAKtC,EAAYb,GAC9D,OAAoD,IAA7CwC,KAAKnE,QAAQ8E,EAAKtC,EAAYb,EACvC,EAEAlB,EAAOU,UAAUnB,QAAU,SAAkB8E,EAAKtC,EAAYb,GAC5D,OAAOkD,EAAqBV,KAAMW,EAAKtC,EAAYb,GAAU,EAC/D,EAEAlB,EAAOU,UAAU+D,YAAc,SAAsBJ,EAAKtC,EAAYb,GACpE,OAAOkD,EAAqBV,KAAMW,EAAKtC,EAAYb,GAAU,EAC/D,EA4CAlB,EAAOU,UAAUW,MAAQ,SAAgBJ,EAAQmE,EAAQ1G,EAAQwC,GAE/D,QAAesB,IAAX4C,EACFlE,EAAW,OACXxC,EAASgF,KAAKhF,OACd0G,EAAS,OAEJ,QAAe5C,IAAX9D,GAA0C,iBAAX0G,EACxClE,EAAWkE,EACX1G,EAASgF,KAAKhF,OACd0G,EAAS,MAEJ,KAAIyE,SAASzE,GAUlB,MAAM,IAAI9F,MACR,2EAVF8F,KAAoB,EAChByE,SAASnL,IACXA,KAAoB,OACH8D,IAAbtB,IAAwBA,EAAW,UAEvCA,EAAWxC,EACXA,OAAS8D,EAMb,CAEA,MAAM8C,EAAY5B,KAAKhF,OAAS0G,EAGhC,SAFe5C,IAAX9D,GAAwBA,EAAS4G,KAAW5G,EAAS4G,GAEpDrE,EAAOvC,OAAS,IAAMA,EAAS,GAAK0G,EAAS,IAAOA,EAAS1B,KAAKhF,OACrE,MAAM,IAAI4B,WAAW,0CAGlBY,IAAUA,EAAW,QAE1B,IAAImC,GAAc,EAClB,OACE,OAAQnC,GACN,IAAK,MACH,OAAOiE,EAASzB,KAAMzC,EAAQmE,EAAQ1G,GAExC,IAAK,OACL,IAAK,QACH,OAAOiH,EAAUjC,KAAMzC,EAAQmE,EAAQ1G,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOmH,EAAWnC,KAAMzC,EAAQmE,EAAQ1G,GAE1C,IAAK,SAEH,OAAOuH,EAAYvC,KAAMzC,EAAQmE,EAAQ1G,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOwH,EAAUxC,KAAMzC,EAAQmE,EAAQ1G,GAEzC,QACE,GAAI2E,EAAa,MAAM,IAAIxC,UAAU,qBAAuBK,GAC5DA,GAAY,GAAKA,GAAUsC,cAC3BH,GAAc,EAGtB,EAEArD,EAAOU,UAAUoJ,OAAS,WACxB,MAAO,CACLpH,KAAM,SACNE,KAAMxD,MAAMsB,UAAUY,MAAMkD,KAAKd,KAAKqG,MAAQrG,KAAM,GAExD,EAyFA,MAAMyD,EAAuB,KAoB7B,SAAStD,EAAYtD,EAAKf,EAAOC,GAC/B,IAAIuK,EAAM,GACVvK,EAAM+G,KAAKC,IAAIlG,EAAI7B,OAAQe,GAE3B,IAAK,IAAIzB,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EAC7BgM,GAAOnF,OAAOuC,aAAsB,IAAT7G,EAAIvC,IAEjC,OAAOgM,CACT,CAEA,SAASlG,EAAavD,EAAKf,EAAOC,GAChC,IAAIuK,EAAM,GACVvK,EAAM+G,KAAKC,IAAIlG,EAAI7B,OAAQe,GAE3B,IAAK,IAAIzB,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EAC7BgM,GAAOnF,OAAOuC,aAAa7G,EAAIvC,IAEjC,OAAOgM,CACT,CAEA,SAASrG,EAAUpD,EAAKf,EAAOC,GAC7B,MAAMpB,EAAMkC,EAAI7B,SAEXc,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMpB,KAAKoB,EAAMpB,GAExC,IAAI4L,EAAM,GACV,IAAK,IAAIjM,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EAC7BiM,GAAOC,EAAoB3J,EAAIvC,IAEjC,OAAOiM,CACT,CAEA,SAASjG,EAAczD,EAAKf,EAAOC,GACjC,MAAM0K,EAAQ5J,EAAIe,MAAM9B,EAAOC,GAC/B,IAAIiH,EAAM,GAEV,IAAK,IAAI1I,EAAI,EAAGA,EAAImM,EAAMzL,OAAS,EAAGV,GAAK,EACzC0I,GAAO7B,OAAOuC,aAAa+C,EAAMnM,GAAqB,IAAfmM,EAAMnM,EAAI,IAEnD,OAAO0I,CACT,CAiCA,SAAS0D,EAAahF,EAAQiF,EAAK3L,GACjC,GAAK0G,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAI9E,WAAW,sBAC3D,GAAI8E,EAASiF,EAAM3L,EAAQ,MAAM,IAAI4B,WAAW,wCAClD,CAyQA,SAASgK,EAAU/J,EAAKS,EAAOoE,EAAQiF,EAAKjB,EAAK3C,GAC/C,IAAKzG,EAAOsC,SAAS/B,GAAM,MAAM,IAAIM,UAAU,+CAC/C,GAAIG,EAAQoI,GAAOpI,EAAQyF,EAAK,MAAM,IAAInG,WAAW,qCACrD,GAAI8E,EAASiF,EAAM9J,EAAI7B,OAAQ,MAAM,IAAI4B,WAAW,qBACtD,CA+FA,SAASiK,EAAgBhK,EAAKS,EAAOoE,EAAQqB,EAAK2C,GAChDoB,EAAWxJ,EAAOyF,EAAK2C,EAAK7I,EAAK6E,EAAQ,GAEzC,IAAIkB,EAAKjB,OAAOrE,EAAQyJ,OAAO,aAC/BlK,EAAI6E,KAAYkB,EAChBA,IAAW,EACX/F,EAAI6E,KAAYkB,EAChBA,IAAW,EACX/F,EAAI6E,KAAYkB,EAChBA,IAAW,EACX/F,EAAI6E,KAAYkB,EAChB,IAAID,EAAKhB,OAAOrE,GAASyJ,OAAO,IAAMA,OAAO,aAQ7C,OAPAlK,EAAI6E,KAAYiB,EAChBA,IAAW,EACX9F,EAAI6E,KAAYiB,EAChBA,IAAW,EACX9F,EAAI6E,KAAYiB,EAChBA,IAAW,EACX9F,EAAI6E,KAAYiB,EACTjB,CACT,CAEA,SAASsF,EAAgBnK,EAAKS,EAAOoE,EAAQqB,EAAK2C,GAChDoB,EAAWxJ,EAAOyF,EAAK2C,EAAK7I,EAAK6E,EAAQ,GAEzC,IAAIkB,EAAKjB,OAAOrE,EAAQyJ,OAAO,aAC/BlK,EAAI6E,EAAS,GAAKkB,EAClBA,IAAW,EACX/F,EAAI6E,EAAS,GAAKkB,EAClBA,IAAW,EACX/F,EAAI6E,EAAS,GAAKkB,EAClBA,IAAW,EACX/F,EAAI6E,EAAS,GAAKkB,EAClB,IAAID,EAAKhB,OAAOrE,GAASyJ,OAAO,IAAMA,OAAO,aAQ7C,OAPAlK,EAAI6E,EAAS,GAAKiB,EAClBA,IAAW,EACX9F,EAAI6E,EAAS,GAAKiB,EAClBA,IAAW,EACX9F,EAAI6E,EAAS,GAAKiB,EAClBA,IAAW,EACX9F,EAAI6E,GAAUiB,EACPjB,EAAS,CAClB,CAkHA,SAASuF,EAAcpK,EAAKS,EAAOoE,EAAQiF,EAAKjB,EAAK3C,GACnD,GAAIrB,EAASiF,EAAM9J,EAAI7B,OAAQ,MAAM,IAAI4B,WAAW,sBACpD,GAAI8E,EAAS,EAAG,MAAM,IAAI9E,WAAW,qBACvC,CAEA,SAASsK,EAAYrK,EAAKS,EAAOoE,EAAQyF,EAAcC,GAOrD,OANA9J,GAASA,EACToE,KAAoB,EACf0F,GACHH,EAAapK,EAAKS,EAAOoE,EAAQ,GAEnCvF,EAAQwB,MAAMd,EAAKS,EAAOoE,EAAQyF,EAAc,GAAI,GAC7CzF,EAAS,CAClB,CAUA,SAAS2F,EAAaxK,EAAKS,EAAOoE,EAAQyF,EAAcC,GAOtD,OANA9J,GAASA,EACToE,KAAoB,EACf0F,GACHH,EAAapK,EAAKS,EAAOoE,EAAQ,GAEnCvF,EAAQwB,MAAMd,EAAKS,EAAOoE,EAAQyF,EAAc,GAAI,GAC7CzF,EAAS,CAClB,CAzkBApF,EAAOU,UAAUY,MAAQ,SAAgB9B,EAAOC,GAC9C,MAAMpB,EAAMqF,KAAKhF,QACjBc,IAAUA,GAGE,GACVA,GAASnB,GACG,IAAGmB,EAAQ,GACdA,EAAQnB,IACjBmB,EAAQnB,IANVoB,OAAc+C,IAAR/C,EAAoBpB,IAAQoB,GASxB,GACRA,GAAOpB,GACG,IAAGoB,EAAM,GACVA,EAAMpB,IACfoB,EAAMpB,GAGJoB,EAAMD,IAAOC,EAAMD,GAEvB,MAAMwL,EAAStH,KAAKuH,SAASzL,EAAOC,GAIpC,OAFAe,OAAOC,eAAeuK,EAAQhL,EAAOU,WAE9BsK,CACT,EAUAhL,EAAOU,UAAUwK,WACjBlL,EAAOU,UAAUyK,WAAa,SAAqB/F,EAAQ5H,EAAYsN,GACrE1F,KAAoB,EACpB5H,KAA4B,EACvBsN,GAAUV,EAAYhF,EAAQ5H,EAAYkG,KAAKhF,QAEpD,IAAI2F,EAAMX,KAAK0B,GACXgG,EAAM,EACNpN,EAAI,EACR,OAASA,EAAIR,IAAe4N,GAAO,MACjC/G,GAAOX,KAAK0B,EAASpH,GAAKoN,EAG5B,OAAO/G,CACT,EAEArE,EAAOU,UAAU2K,WACjBrL,EAAOU,UAAU4K,WAAa,SAAqBlG,EAAQ5H,EAAYsN,GACrE1F,KAAoB,EACpB5H,KAA4B,EACvBsN,GACHV,EAAYhF,EAAQ5H,EAAYkG,KAAKhF,QAGvC,IAAI2F,EAAMX,KAAK0B,IAAW5H,GACtB4N,EAAM,EACV,KAAO5N,EAAa,IAAM4N,GAAO,MAC/B/G,GAAOX,KAAK0B,IAAW5H,GAAc4N,EAGvC,OAAO/G,CACT,EAEArE,EAAOU,UAAU6K,UACjBvL,EAAOU,UAAU8K,UAAY,SAAoBpG,EAAQ0F,GAGvD,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACpCgF,KAAK0B,EACd,EAEApF,EAAOU,UAAU+K,aACjBzL,EAAOU,UAAUgL,aAAe,SAAuBtG,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACpCgF,KAAK0B,GAAW1B,KAAK0B,EAAS,IAAM,CAC7C,EAEApF,EAAOU,UAAUiL,aACjB3L,EAAOU,UAAUqE,aAAe,SAAuBK,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACnCgF,KAAK0B,IAAW,EAAK1B,KAAK0B,EAAS,EAC7C,EAEApF,EAAOU,UAAUkL,aACjB5L,EAAOU,UAAUmL,aAAe,SAAuBzG,EAAQ0F,GAI7D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,SAElCgF,KAAK0B,GACT1B,KAAK0B,EAAS,IAAM,EACpB1B,KAAK0B,EAAS,IAAM,IACD,SAAnB1B,KAAK0B,EAAS,EACrB,EAEApF,EAAOU,UAAUoL,aACjB9L,EAAOU,UAAUqL,aAAe,SAAuB3G,EAAQ0F,GAI7D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QAEpB,SAAfgF,KAAK0B,IACT1B,KAAK0B,EAAS,IAAM,GACrB1B,KAAK0B,EAAS,IAAM,EACrB1B,KAAK0B,EAAS,GAClB,EAEApF,EAAOU,UAAUsL,gBAAkBC,GAAmB,SAA0B7G,GAE9E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQzI,KAAK0B,GACbgH,EAAO1I,KAAK0B,EAAS,QACb5C,IAAV2J,QAAgC3J,IAAT4J,GACzBC,EAAYjH,EAAQ1B,KAAKhF,OAAS,GAGpC,MAAM4H,EAAK6F,EACQ,IAAjBzI,OAAO0B,GACU,MAAjB1B,OAAO0B,GACP1B,OAAO0B,GAAU,GAAK,GAElBiB,EAAK3C,OAAO0B,GACC,IAAjB1B,OAAO0B,GACU,MAAjB1B,OAAO0B,GACPgH,EAAO,GAAK,GAEd,OAAO3B,OAAOnE,IAAOmE,OAAOpE,IAAOoE,OAAO,IAC5C,IAEAzK,EAAOU,UAAU4L,gBAAkBL,GAAmB,SAA0B7G,GAE9E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQzI,KAAK0B,GACbgH,EAAO1I,KAAK0B,EAAS,QACb5C,IAAV2J,QAAgC3J,IAAT4J,GACzBC,EAAYjH,EAAQ1B,KAAKhF,OAAS,GAGpC,MAAM2H,EAAK8F,EAAQ,GAAK,GACL,MAAjBzI,OAAO0B,GACU,IAAjB1B,OAAO0B,GACP1B,OAAO0B,GAEHkB,EAAK5C,OAAO0B,GAAU,GAAK,GACd,MAAjB1B,OAAO0B,GACU,IAAjB1B,OAAO0B,GACPgH,EAEF,OAAQ3B,OAAOpE,IAAOoE,OAAO,KAAOA,OAAOnE,EAC7C,IAEAtG,EAAOU,UAAU6L,UAAY,SAAoBnH,EAAQ5H,EAAYsN,GACnE1F,KAAoB,EACpB5H,KAA4B,EACvBsN,GAAUV,EAAYhF,EAAQ5H,EAAYkG,KAAKhF,QAEpD,IAAI2F,EAAMX,KAAK0B,GACXgG,EAAM,EACNpN,EAAI,EACR,OAASA,EAAIR,IAAe4N,GAAO,MACjC/G,GAAOX,KAAK0B,EAASpH,GAAKoN,EAM5B,OAJAA,GAAO,IAEH/G,GAAO+G,IAAK/G,GAAOmC,KAAKgG,IAAI,EAAG,EAAIhP,IAEhC6G,CACT,EAEArE,EAAOU,UAAU+L,UAAY,SAAoBrH,EAAQ5H,EAAYsN,GACnE1F,KAAoB,EACpB5H,KAA4B,EACvBsN,GAAUV,EAAYhF,EAAQ5H,EAAYkG,KAAKhF,QAEpD,IAAIV,EAAIR,EACJ4N,EAAM,EACN/G,EAAMX,KAAK0B,IAAWpH,GAC1B,KAAOA,EAAI,IAAMoN,GAAO,MACtB/G,GAAOX,KAAK0B,IAAWpH,GAAKoN,EAM9B,OAJAA,GAAO,IAEH/G,GAAO+G,IAAK/G,GAAOmC,KAAKgG,IAAI,EAAG,EAAIhP,IAEhC6G,CACT,EAEArE,EAAOU,UAAUgM,SAAW,SAAmBtH,EAAQ0F,GAGrD,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACtB,IAAfgF,KAAK0B,IAC0B,GAA5B,IAAO1B,KAAK0B,GAAU,GADK1B,KAAK0B,EAE3C,EAEApF,EAAOU,UAAUiM,YAAc,SAAsBvH,EAAQ0F,GAC3D1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QAC3C,MAAM2F,EAAMX,KAAK0B,GAAW1B,KAAK0B,EAAS,IAAM,EAChD,OAAc,MAANf,EAAsB,WAANA,EAAmBA,CAC7C,EAEArE,EAAOU,UAAUkM,YAAc,SAAsBxH,EAAQ0F,GAC3D1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QAC3C,MAAM2F,EAAMX,KAAK0B,EAAS,GAAM1B,KAAK0B,IAAW,EAChD,OAAc,MAANf,EAAsB,WAANA,EAAmBA,CAC7C,EAEArE,EAAOU,UAAUmM,YAAc,SAAsBzH,EAAQ0F,GAI3D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QAEnCgF,KAAK0B,GACV1B,KAAK0B,EAAS,IAAM,EACpB1B,KAAK0B,EAAS,IAAM,GACpB1B,KAAK0B,EAAS,IAAM,EACzB,EAEApF,EAAOU,UAAUoM,YAAc,SAAsB1H,EAAQ0F,GAI3D,OAHA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QAEnCgF,KAAK0B,IAAW,GACrB1B,KAAK0B,EAAS,IAAM,GACpB1B,KAAK0B,EAAS,IAAM,EACpB1B,KAAK0B,EAAS,EACnB,EAEApF,EAAOU,UAAUqM,eAAiBd,GAAmB,SAAyB7G,GAE5E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQzI,KAAK0B,GACbgH,EAAO1I,KAAK0B,EAAS,QACb5C,IAAV2J,QAAgC3J,IAAT4J,GACzBC,EAAYjH,EAAQ1B,KAAKhF,OAAS,GAGpC,MAAM2F,EAAMX,KAAK0B,EAAS,GACL,IAAnB1B,KAAK0B,EAAS,GACK,MAAnB1B,KAAK0B,EAAS,IACbgH,GAAQ,IAEX,OAAQ3B,OAAOpG,IAAQoG,OAAO,KAC5BA,OAAO0B,EACU,IAAjBzI,OAAO0B,GACU,MAAjB1B,OAAO0B,GACP1B,OAAO0B,GAAU,GAAK,GAC1B,IAEApF,EAAOU,UAAUsM,eAAiBf,GAAmB,SAAyB7G,GAE5E8G,EADA9G,KAAoB,EACG,UACvB,MAAM+G,EAAQzI,KAAK0B,GACbgH,EAAO1I,KAAK0B,EAAS,QACb5C,IAAV2J,QAAgC3J,IAAT4J,GACzBC,EAAYjH,EAAQ1B,KAAKhF,OAAS,GAGpC,MAAM2F,GAAO8H,GAAS,IACH,MAAjBzI,OAAO0B,GACU,IAAjB1B,OAAO0B,GACP1B,OAAO0B,GAET,OAAQqF,OAAOpG,IAAQoG,OAAO,KAC5BA,OAAO/G,OAAO0B,GAAU,GAAK,GACZ,MAAjB1B,OAAO0B,GACU,IAAjB1B,OAAO0B,GACPgH,EACJ,IAEApM,EAAOU,UAAUuM,YAAc,SAAsB7H,EAAQ0F,GAG3D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACpCmB,EAAQiF,KAAKpB,KAAM0B,GAAQ,EAAM,GAAI,EAC9C,EAEApF,EAAOU,UAAUwM,YAAc,SAAsB9H,EAAQ0F,GAG3D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACpCmB,EAAQiF,KAAKpB,KAAM0B,GAAQ,EAAO,GAAI,EAC/C,EAEApF,EAAOU,UAAUyM,aAAe,SAAuB/H,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACpCmB,EAAQiF,KAAKpB,KAAM0B,GAAQ,EAAM,GAAI,EAC9C,EAEApF,EAAOU,UAAU0M,aAAe,SAAuBhI,EAAQ0F,GAG7D,OAFA1F,KAAoB,EACf0F,GAAUV,EAAYhF,EAAQ,EAAG1B,KAAKhF,QACpCmB,EAAQiF,KAAKpB,KAAM0B,GAAQ,EAAO,GAAI,EAC/C,EAQApF,EAAOU,UAAU2M,YACjBrN,EAAOU,UAAU4M,YAAc,SAAsBtM,EAAOoE,EAAQ5H,EAAYsN,GAC9E9J,GAASA,EACToE,KAAoB,EACpB5H,KAA4B,EACvBsN,GAEHR,EAAS5G,KAAM1C,EAAOoE,EAAQ5H,EADbgJ,KAAKgG,IAAI,EAAG,EAAIhP,GAAc,EACK,GAGtD,IAAI4N,EAAM,EACNpN,EAAI,EAER,IADA0F,KAAK0B,GAAkB,IAARpE,IACNhD,EAAIR,IAAe4N,GAAO,MACjC1H,KAAK0B,EAASpH,GAAMgD,EAAQoK,EAAO,IAGrC,OAAOhG,EAAS5H,CAClB,EAEAwC,EAAOU,UAAU6M,YACjBvN,EAAOU,UAAU8M,YAAc,SAAsBxM,EAAOoE,EAAQ5H,EAAYsN,GAC9E9J,GAASA,EACToE,KAAoB,EACpB5H,KAA4B,EACvBsN,GAEHR,EAAS5G,KAAM1C,EAAOoE,EAAQ5H,EADbgJ,KAAKgG,IAAI,EAAG,EAAIhP,GAAc,EACK,GAGtD,IAAIQ,EAAIR,EAAa,EACjB4N,EAAM,EAEV,IADA1H,KAAK0B,EAASpH,GAAa,IAARgD,IACVhD,GAAK,IAAMoN,GAAO,MACzB1H,KAAK0B,EAASpH,GAAMgD,EAAQoK,EAAO,IAGrC,OAAOhG,EAAS5H,CAClB,EAEAwC,EAAOU,UAAU+M,WACjBzN,EAAOU,UAAUgN,WAAa,SAAqB1M,EAAOoE,EAAQ0F,GAKhE,OAJA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,IAAM,GACtD1B,KAAK0B,GAAmB,IAARpE,EACToE,EAAS,CAClB,EAEApF,EAAOU,UAAUiN,cACjB3N,EAAOU,UAAUkN,cAAgB,SAAwB5M,EAAOoE,EAAQ0F,GAMtE,OALA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,MAAQ,GACxD1B,KAAK0B,GAAmB,IAARpE,EAChB0C,KAAK0B,EAAS,GAAMpE,IAAU,EACvBoE,EAAS,CAClB,EAEApF,EAAOU,UAAUmN,cACjB7N,EAAOU,UAAUoN,cAAgB,SAAwB9M,EAAOoE,EAAQ0F,GAMtE,OALA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,MAAQ,GACxD1B,KAAK0B,GAAWpE,IAAU,EAC1B0C,KAAK0B,EAAS,GAAc,IAARpE,EACboE,EAAS,CAClB,EAEApF,EAAOU,UAAUqN,cACjB/N,EAAOU,UAAUsN,cAAgB,SAAwBhN,EAAOoE,EAAQ0F,GAQtE,OAPA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,WAAY,GAC5D1B,KAAK0B,EAAS,GAAMpE,IAAU,GAC9B0C,KAAK0B,EAAS,GAAMpE,IAAU,GAC9B0C,KAAK0B,EAAS,GAAMpE,IAAU,EAC9B0C,KAAK0B,GAAmB,IAARpE,EACToE,EAAS,CAClB,EAEApF,EAAOU,UAAUuN,cACjBjO,EAAOU,UAAUwN,cAAgB,SAAwBlN,EAAOoE,EAAQ0F,GAQtE,OAPA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,WAAY,GAC5D1B,KAAK0B,GAAWpE,IAAU,GAC1B0C,KAAK0B,EAAS,GAAMpE,IAAU,GAC9B0C,KAAK0B,EAAS,GAAMpE,IAAU,EAC9B0C,KAAK0B,EAAS,GAAc,IAARpE,EACboE,EAAS,CAClB,EA8CApF,EAAOU,UAAUyN,iBAAmBlC,GAAmB,SAA2BjL,EAAOoE,EAAS,GAChG,OAAOmF,EAAe7G,KAAM1C,EAAOoE,EAAQqF,OAAO,GAAIA,OAAO,sBAC/D,IAEAzK,EAAOU,UAAU0N,iBAAmBnC,GAAmB,SAA2BjL,EAAOoE,EAAS,GAChG,OAAOsF,EAAehH,KAAM1C,EAAOoE,EAAQqF,OAAO,GAAIA,OAAO,sBAC/D,IAEAzK,EAAOU,UAAU2N,WAAa,SAAqBrN,EAAOoE,EAAQ5H,EAAYsN,GAG5E,GAFA9J,GAASA,EACToE,KAAoB,GACf0F,EAAU,CACb,MAAMwD,EAAQ9H,KAAKgG,IAAI,EAAI,EAAIhP,EAAc,GAE7C8M,EAAS5G,KAAM1C,EAAOoE,EAAQ5H,EAAY8Q,EAAQ,GAAIA,EACxD,CAEA,IAAItQ,EAAI,EACJoN,EAAM,EACNmD,EAAM,EAEV,IADA7K,KAAK0B,GAAkB,IAARpE,IACNhD,EAAIR,IAAe4N,GAAO,MAC7BpK,EAAQ,GAAa,IAARuN,GAAsC,IAAzB7K,KAAK0B,EAASpH,EAAI,KAC9CuQ,EAAM,GAER7K,KAAK0B,EAASpH,IAAOgD,EAAQoK,EAAQ,GAAKmD,EAAM,IAGlD,OAAOnJ,EAAS5H,CAClB,EAEAwC,EAAOU,UAAU8N,WAAa,SAAqBxN,EAAOoE,EAAQ5H,EAAYsN,GAG5E,GAFA9J,GAASA,EACToE,KAAoB,GACf0F,EAAU,CACb,MAAMwD,EAAQ9H,KAAKgG,IAAI,EAAI,EAAIhP,EAAc,GAE7C8M,EAAS5G,KAAM1C,EAAOoE,EAAQ5H,EAAY8Q,EAAQ,GAAIA,EACxD,CAEA,IAAItQ,EAAIR,EAAa,EACjB4N,EAAM,EACNmD,EAAM,EAEV,IADA7K,KAAK0B,EAASpH,GAAa,IAARgD,IACVhD,GAAK,IAAMoN,GAAO,MACrBpK,EAAQ,GAAa,IAARuN,GAAsC,IAAzB7K,KAAK0B,EAASpH,EAAI,KAC9CuQ,EAAM,GAER7K,KAAK0B,EAASpH,IAAOgD,EAAQoK,EAAQ,GAAKmD,EAAM,IAGlD,OAAOnJ,EAAS5H,CAClB,EAEAwC,EAAOU,UAAU+N,UAAY,SAAoBzN,EAAOoE,EAAQ0F,GAM9D,OALA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,KAAO,KACnDpE,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtC0C,KAAK0B,GAAmB,IAARpE,EACToE,EAAS,CAClB,EAEApF,EAAOU,UAAUgO,aAAe,SAAuB1N,EAAOoE,EAAQ0F,GAMpE,OALA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,OAAS,OACzD1B,KAAK0B,GAAmB,IAARpE,EAChB0C,KAAK0B,EAAS,GAAMpE,IAAU,EACvBoE,EAAS,CAClB,EAEApF,EAAOU,UAAUiO,aAAe,SAAuB3N,EAAOoE,EAAQ0F,GAMpE,OALA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,OAAS,OACzD1B,KAAK0B,GAAWpE,IAAU,EAC1B0C,KAAK0B,EAAS,GAAc,IAARpE,EACboE,EAAS,CAClB,EAEApF,EAAOU,UAAUkO,aAAe,SAAuB5N,EAAOoE,EAAQ0F,GAQpE,OAPA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,YAAa,YAC7D1B,KAAK0B,GAAmB,IAARpE,EAChB0C,KAAK0B,EAAS,GAAMpE,IAAU,EAC9B0C,KAAK0B,EAAS,GAAMpE,IAAU,GAC9B0C,KAAK0B,EAAS,GAAMpE,IAAU,GACvBoE,EAAS,CAClB,EAEApF,EAAOU,UAAUmO,aAAe,SAAuB7N,EAAOoE,EAAQ0F,GASpE,OARA9J,GAASA,EACToE,KAAoB,EACf0F,GAAUR,EAAS5G,KAAM1C,EAAOoE,EAAQ,EAAG,YAAa,YACzDpE,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C0C,KAAK0B,GAAWpE,IAAU,GAC1B0C,KAAK0B,EAAS,GAAMpE,IAAU,GAC9B0C,KAAK0B,EAAS,GAAMpE,IAAU,EAC9B0C,KAAK0B,EAAS,GAAc,IAARpE,EACboE,EAAS,CAClB,EAEApF,EAAOU,UAAUoO,gBAAkB7C,GAAmB,SAA0BjL,EAAOoE,EAAS,GAC9F,OAAOmF,EAAe7G,KAAM1C,EAAOoE,GAASqF,OAAO,sBAAuBA,OAAO,sBACnF,IAEAzK,EAAOU,UAAUqO,gBAAkB9C,GAAmB,SAA0BjL,EAAOoE,EAAS,GAC9F,OAAOsF,EAAehH,KAAM1C,EAAOoE,GAASqF,OAAO,sBAAuBA,OAAO,sBACnF,IAiBAzK,EAAOU,UAAUsO,aAAe,SAAuBhO,EAAOoE,EAAQ0F,GACpE,OAAOF,EAAWlH,KAAM1C,EAAOoE,GAAQ,EAAM0F,EAC/C,EAEA9K,EAAOU,UAAUuO,aAAe,SAAuBjO,EAAOoE,EAAQ0F,GACpE,OAAOF,EAAWlH,KAAM1C,EAAOoE,GAAQ,EAAO0F,EAChD,EAYA9K,EAAOU,UAAUwO,cAAgB,SAAwBlO,EAAOoE,EAAQ0F,GACtE,OAAOC,EAAYrH,KAAM1C,EAAOoE,GAAQ,EAAM0F,EAChD,EAEA9K,EAAOU,UAAUyO,cAAgB,SAAwBnO,EAAOoE,EAAQ0F,GACtE,OAAOC,EAAYrH,KAAM1C,EAAOoE,GAAQ,EAAO0F,EACjD,EAGA9K,EAAOU,UAAUkB,KAAO,SAAe2H,EAAQ6F,EAAa5P,EAAOC,GACjE,IAAKO,EAAOsC,SAASiH,GAAS,MAAM,IAAI1I,UAAU,+BAQlD,GAPKrB,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMiE,KAAKhF,QAC9B0Q,GAAe7F,EAAO7K,SAAQ0Q,EAAc7F,EAAO7K,QAClD0Q,IAAaA,EAAc,GAC5B3P,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlB+J,EAAO7K,QAAgC,IAAhBgF,KAAKhF,OAAc,OAAO,EAGrD,GAAI0Q,EAAc,EAChB,MAAM,IAAI9O,WAAW,6BAEvB,GAAId,EAAQ,GAAKA,GAASkE,KAAKhF,OAAQ,MAAM,IAAI4B,WAAW,sBAC5D,GAAIb,EAAM,EAAG,MAAM,IAAIa,WAAW,2BAG9Bb,EAAMiE,KAAKhF,SAAQe,EAAMiE,KAAKhF,QAC9B6K,EAAO7K,OAAS0Q,EAAc3P,EAAMD,IACtCC,EAAM8J,EAAO7K,OAAS0Q,EAAc5P,GAGtC,MAAMnB,EAAMoB,EAAMD,EAalB,OAXIkE,OAAS6F,GAAqD,mBAApCpK,WAAWuB,UAAU2O,WAEjD3L,KAAK2L,WAAWD,EAAa5P,EAAOC,GAEpCN,WAAWuB,UAAUmI,IAAIrE,KACvB+E,EACA7F,KAAKuH,SAASzL,EAAOC,GACrB2P,GAIG/Q,CACT,EAMA2B,EAAOU,UAAUyH,KAAO,SAAe9D,EAAK7E,EAAOC,EAAKyB,GAEtD,GAAmB,iBAARmD,EAAkB,CAS3B,GARqB,iBAAV7E,GACT0B,EAAW1B,EACXA,EAAQ,EACRC,EAAMiE,KAAKhF,QACa,iBAARe,IAChByB,EAAWzB,EACXA,EAAMiE,KAAKhF,aAEI8D,IAAbtB,GAA8C,iBAAbA,EACnC,MAAM,IAAIL,UAAU,6BAEtB,GAAwB,iBAAbK,IAA0BlB,EAAOmB,WAAWD,GACrD,MAAM,IAAIL,UAAU,qBAAuBK,GAE7C,GAAmB,IAAfmD,EAAI3F,OAAc,CACpB,MAAMW,EAAOgF,EAAI9F,WAAW,IACV,SAAb2C,GAAuB7B,EAAO,KAClB,WAAb6B,KAEFmD,EAAMhF,EAEV,CACF,KAA0B,iBAARgF,EAChBA,GAAY,IACY,kBAARA,IAChBA,EAAMgB,OAAOhB,IAIf,GAAI7E,EAAQ,GAAKkE,KAAKhF,OAASc,GAASkE,KAAKhF,OAASe,EACpD,MAAM,IAAIa,WAAW,sBAGvB,GAAIb,GAAOD,EACT,OAAOkE,KAQT,IAAI1F,EACJ,GANAwB,KAAkB,EAClBC,OAAc+C,IAAR/C,EAAoBiE,KAAKhF,OAASe,IAAQ,EAE3C4E,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAKrG,EAAIwB,EAAOxB,EAAIyB,IAAOzB,EACzB0F,KAAK1F,GAAKqG,MAEP,CACL,MAAM8F,EAAQnK,EAAOsC,SAAS+B,GAC1BA,EACArE,EAAOe,KAAKsD,EAAKnD,GACf7C,EAAM8L,EAAMzL,OAClB,GAAY,IAARL,EACF,MAAM,IAAIwC,UAAU,cAAgBwD,EAClC,qCAEJ,IAAKrG,EAAI,EAAGA,EAAIyB,EAAMD,IAASxB,EAC7B0F,KAAK1F,EAAIwB,GAAS2K,EAAMnM,EAAIK,EAEhC,CAEA,OAAOqF,IACT,EAMA,MAAM4L,EAAS,CAAC,EAChB,SAASC,EAAGC,EAAKC,EAAYC,GAC3BJ,EAAOE,GAAO,cAAwBE,EACpC,WAAAC,GACEC,QAEApP,OAAOuH,eAAerE,KAAM,UAAW,CACrC1C,MAAOyO,EAAWpI,MAAM3D,KAAMN,WAC9ByM,UAAU,EACVC,cAAc,IAIhBpM,KAAKqM,KAAO,GAAGrM,KAAKqM,SAASP,KAG7B9L,KAAKsM,aAEEtM,KAAKqM,IACd,CAEA,QAAI1Q,GACF,OAAOmQ,CACT,CAEA,QAAInQ,CAAM2B,GACRR,OAAOuH,eAAerE,KAAM,OAAQ,CAClCoM,cAAc,EACd9H,YAAY,EACZhH,QACA6O,UAAU,GAEd,CAEA,QAAA3M,GACE,MAAO,GAAGQ,KAAKqM,SAASP,OAAS9L,KAAKuM,SACxC,EAEJ,CA+BA,SAASC,EAAuB7L,GAC9B,IAAIqC,EAAM,GACN1I,EAAIqG,EAAI3F,OACZ,MAAMc,EAAmB,MAAX6E,EAAI,GAAa,EAAI,EACnC,KAAOrG,GAAKwB,EAAQ,EAAGxB,GAAK,EAC1B0I,EAAM,IAAIrC,EAAI/C,MAAMtD,EAAI,EAAGA,KAAK0I,IAElC,MAAO,GAAGrC,EAAI/C,MAAM,EAAGtD,KAAK0I,GAC9B,CAYA,SAAS8D,EAAYxJ,EAAOyF,EAAK2C,EAAK7I,EAAK6E,EAAQ5H,GACjD,GAAIwD,EAAQoI,GAAOpI,EAAQyF,EAAK,CAC9B,MAAMvC,EAAmB,iBAARuC,EAAmB,IAAM,GAC1C,IAAI0J,EAWJ,MARIA,EAFA3S,EAAa,EACH,IAARiJ,GAAaA,IAAQgE,OAAO,GACtB,OAAOvG,YAAYA,QAA2B,GAAlB1G,EAAa,KAAS0G,IAElD,SAASA,QAA2B,GAAlB1G,EAAa,GAAS,IAAI0G,iBACtB,GAAlB1G,EAAa,GAAS,IAAI0G,IAGhC,MAAMuC,IAAMvC,YAAYkF,IAAMlF,IAElC,IAAIoL,EAAOc,iBAAiB,QAASD,EAAOnP,EACpD,EAtBF,SAAsBT,EAAK6E,EAAQ5H,GACjC0O,EAAe9G,EAAQ,eACH5C,IAAhBjC,EAAI6E,SAAsD5C,IAA7BjC,EAAI6E,EAAS5H,IAC5C6O,EAAYjH,EAAQ7E,EAAI7B,QAAUlB,EAAa,GAEnD,CAkBE6S,CAAY9P,EAAK6E,EAAQ5H,EAC3B,CAEA,SAAS0O,EAAgBlL,EAAO+O,GAC9B,GAAqB,iBAAV/O,EACT,MAAM,IAAIsO,EAAOgB,qBAAqBP,EAAM,SAAU/O,EAE1D,CAEA,SAASqL,EAAarL,EAAOtC,EAAQgE,GACnC,GAAI8D,KAAK+J,MAAMvP,KAAWA,EAExB,MADAkL,EAAelL,EAAO0B,GAChB,IAAI4M,EAAOc,iBAAiB1N,GAAQ,SAAU,aAAc1B,GAGpE,GAAItC,EAAS,EACX,MAAM,IAAI4Q,EAAOkB,yBAGnB,MAAM,IAAIlB,EAAOc,iBAAiB1N,GAAQ,SACR,MAAMA,EAAO,EAAI,YAAYhE,IAC7BsC,EACpC,CAvFAuO,EAAE,4BACA,SAAUQ,GACR,OAAIA,EACK,GAAGA,gCAGL,gDACT,GAAGzP,YACLiP,EAAE,wBACA,SAAUQ,EAAM3O,GACd,MAAO,QAAQ2O,4DAA+D3O,GAChF,GAAGP,WACL0O,EAAE,oBACA,SAAUzJ,EAAKqK,EAAOM,GACpB,IAAIC,EAAM,iBAAiB5K,sBACvB6K,EAAWF,EAWf,OAVIpL,OAAOuL,UAAUH,IAAUjK,KAAKqK,IAAIJ,GAAS,GAAK,GACpDE,EAAWT,EAAsBrL,OAAO4L,IACd,iBAAVA,IAChBE,EAAW9L,OAAO4L,IACdA,EAAQhG,OAAO,IAAMA,OAAO,KAAOgG,IAAUhG,OAAO,IAAMA,OAAO,QACnEkG,EAAWT,EAAsBS,IAEnCA,GAAY,KAEdD,GAAO,eAAeP,eAAmBQ,IAClCD,CACT,GAAGpQ,YAiEL,MAAMwQ,EAAoB,oBAgB1B,SAASxN,EAAarC,EAAQkF,GAE5B,IAAIS,EADJT,EAAQA,GAAS4K,IAEjB,MAAMrS,EAASuC,EAAOvC,OACtB,IAAIsS,EAAgB,KACpB,MAAM7G,EAAQ,GAEd,IAAK,IAAInM,EAAI,EAAGA,EAAIU,IAAUV,EAAG,CAI/B,GAHA4I,EAAY3F,EAAO1C,WAAWP,GAG1B4I,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAKoK,EAAe,CAElB,GAAIpK,EAAY,MAAQ,EAEjBT,GAAS,IAAM,GAAGgE,EAAMpL,KAAK,IAAM,IAAM,KAC9C,QACF,CAAO,GAAIf,EAAI,IAAMU,EAAQ,EAEtByH,GAAS,IAAM,GAAGgE,EAAMpL,KAAK,IAAM,IAAM,KAC9C,QACF,CAGAiS,EAAgBpK,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjBT,GAAS,IAAM,GAAGgE,EAAMpL,KAAK,IAAM,IAAM,KAC9CiS,EAAgBpK,EAChB,QACF,CAGAA,EAAkE,OAArDoK,EAAgB,OAAU,GAAKpK,EAAY,MAC1D,MAAWoK,IAEJ7K,GAAS,IAAM,GAAGgE,EAAMpL,KAAK,IAAM,IAAM,KAMhD,GAHAiS,EAAgB,KAGZpK,EAAY,IAAM,CACpB,IAAKT,GAAS,GAAK,EAAG,MACtBgE,EAAMpL,KAAK6H,EACb,MAAO,GAAIA,EAAY,KAAO,CAC5B,IAAKT,GAAS,GAAK,EAAG,MACtBgE,EAAMpL,KACJ6H,GAAa,EAAM,IACP,GAAZA,EAAmB,IAEvB,MAAO,GAAIA,EAAY,MAAS,CAC9B,IAAKT,GAAS,GAAK,EAAG,MACtBgE,EAAMpL,KACJ6H,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAEvB,KAAO,MAAIA,EAAY,SASrB,MAAM,IAAItH,MAAM,sBARhB,IAAK6G,GAAS,GAAK,EAAG,MACtBgE,EAAMpL,KACJ6H,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAIvB,CACF,CAEA,OAAOuD,CACT,CA2BA,SAAS5G,EAAeuC,GACtB,OAAOlG,EAAO9B,YAxHhB,SAAsBgI,GAMpB,IAFAA,GAFAA,EAAMA,EAAImL,MAAM,KAAK,IAEX3H,OAAOD,QAAQyH,EAAmB,KAEpCpS,OAAS,EAAG,MAAO,GAE3B,KAAOoH,EAAIpH,OAAS,GAAM,GACxBoH,GAAY,IAEd,OAAOA,CACT,CA4G4BoL,CAAYpL,GACxC,CAEA,SAASF,EAAYuL,EAAKC,EAAKhM,EAAQ1G,GACrC,IAAIV,EACJ,IAAKA,EAAI,EAAGA,EAAIU,KACTV,EAAIoH,GAAUgM,EAAI1S,QAAYV,GAAKmT,EAAIzS,UADpBV,EAExBoT,EAAIpT,EAAIoH,GAAU+L,EAAInT,GAExB,OAAOA,CACT,CAKA,SAAS2D,EAAYU,EAAKK,GACxB,OAAOL,aAAeK,GACZ,MAAPL,GAAkC,MAAnBA,EAAIsN,aAA+C,MAAxBtN,EAAIsN,YAAYI,MACzD1N,EAAIsN,YAAYI,OAASrN,EAAKqN,IACpC,CACA,SAAStN,EAAaJ,GAEpB,OAAOA,GAAQA,CACjB,CAIA,MAAM6H,EAAsB,WAC1B,MAAMmH,EAAW,mBACXC,EAAQ,IAAIlS,MAAM,KACxB,IAAK,IAAIpB,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAMuT,EAAU,GAAJvT,EACZ,IAAK,IAAIkH,EAAI,EAAGA,EAAI,KAAMA,EACxBoM,EAAMC,EAAMrM,GAAKmM,EAASrT,GAAKqT,EAASnM,EAE5C,CACA,OAAOoM,CACR,CAV2B,GAa5B,SAASrF,EAAoBuF,GAC3B,MAAyB,oBAAX/G,OAAyBgH,EAAyBD,CAClE,CAEA,SAASC,IACP,MAAM,IAAInS,MAAM,uBAClB,kCC3iEA,SAASoS,EAAOrP,EAAKsP,GACjB,IAAK,MAAMC,KAAOD,EACdnR,OAAOuH,eAAe1F,EAAKuP,EAAK,CAC5B5Q,MAAO2Q,EAAMC,GACb5J,YAAY,EACZ8H,cAAc,IAItB,OAAOzN,CACX,CA4CAwP,EAAOtU,QAnCP,SAAqBuU,EAAKzS,EAAMsS,GAC5B,IAAKG,GAAsB,iBAARA,EACf,MAAM,IAAIjR,UAAU,oCAGnB8Q,IACDA,EAAQ,CAAC,GAGO,iBAATtS,IACPsS,EAAQtS,EACRA,EAAO,IAGPA,IACAsS,EAAMtS,KAAOA,GAGjB,IACI,OAAOqS,EAAOI,EAAKH,EACvB,CAAE,MAAOI,GACLJ,EAAM1B,QAAU6B,EAAI7B,QACpB0B,EAAM3B,MAAQ8B,EAAI9B,MAElB,MAAMgC,EAAW,WAAa,EAO9B,OALAA,EAAStR,UAAYF,OAAOyR,OAAOzR,OAAO0R,eAAeJ,IAG1CJ,EAAO,IAAIM,EAAYL,EAG1C,CACJ,kCC3CA,IAOIQ,EAPAC,EAAuB,iBAAZC,QAAuBA,QAAU,KAC5CC,EAAeF,GAAwB,mBAAZA,EAAE/K,MAC7B+K,EAAE/K,MACF,SAAsBkC,EAAQgJ,EAAUC,GACxC,OAAOC,SAAS/R,UAAU2G,MAAM7C,KAAK+E,EAAQgJ,EAAUC,EACzD,EAIAL,EADEC,GAA0B,mBAAdA,EAAEM,QACCN,EAAEM,QACVlS,OAAOmS,sBACC,SAAwBpJ,GACvC,OAAO/I,OAAOoS,oBAAoBrJ,GAC/Bb,OAAOlI,OAAOmS,sBAAsBpJ,GACzC,EAEiB,SAAwBA,GACvC,OAAO/I,OAAOoS,oBAAoBrJ,EACpC,EAOF,IAAIsJ,EAAcxN,OAAOyN,OAAS,SAAqB9R,GACrD,OAAOA,GAAUA,CACnB,EAEA,SAAS+R,IACPA,EAAaC,KAAKxO,KAAKd,KACzB,CACAmO,EAAOtU,QAAUwV,EACjBlB,EAAOtU,QAAQ0V,KAwYf,SAAcC,EAASnD,GACrB,OAAO,IAAIoD,SAAQ,SAAUC,EAASC,GACpC,SAASC,EAAcxB,GACrBoB,EAAQK,eAAexD,EAAMyD,GAC7BH,EAAOvB,EACT,CAEA,SAAS0B,IAC+B,mBAA3BN,EAAQK,gBACjBL,EAAQK,eAAe,QAASD,GAElCF,EAAQ,GAAG9R,MAAMkD,KAAKpB,WACxB,CAEAqQ,EAA+BP,EAASnD,EAAMyD,EAAU,CAAEP,MAAM,IACnD,UAATlD,GAMR,SAAuCmD,EAASQ,GACpB,mBAAfR,EAAQS,IACjBF,EAA+BP,EAAS,QAASQ,EAPO,CAAET,MAAM,GASpE,CATMW,CAA8BV,EAASI,EAE3C,GACF,EAxZAP,EAAaA,aAAeA,EAE5BA,EAAarS,UAAUmT,aAAUrR,EACjCuQ,EAAarS,UAAUoT,aAAe,EACtCf,EAAarS,UAAUqT,mBAAgBvR,EAIvC,IAAIwR,EAAsB,GAE1B,SAASC,EAAcC,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAIrT,UAAU,0EAA4EqT,EAEpG,CAoCA,SAASC,EAAiBC,GACxB,YAA2B5R,IAAvB4R,EAAKL,cACAhB,EAAaiB,oBACfI,EAAKL,aACd,CAkDA,SAASM,EAAa9K,EAAQ7G,EAAMwR,EAAUI,GAC5C,IAAInQ,EACAoQ,EACAC,EA1HsBC,EAgJ1B,GApBAR,EAAcC,QAGC1R,KADf+R,EAAShL,EAAOsK,UAEdU,EAAShL,EAAOsK,QAAUrT,OAAOyR,OAAO,MACxC1I,EAAOuK,aAAe,SAIKtR,IAAvB+R,EAAOG,cACTnL,EAAOoL,KAAK,cAAejS,EACfwR,EAASA,SAAWA,EAASA,SAAWA,GAIpDK,EAAShL,EAAOsK,SAElBW,EAAWD,EAAO7R,SAGHF,IAAbgS,EAEFA,EAAWD,EAAO7R,GAAQwR,IACxB3K,EAAOuK,kBAeT,GAbwB,mBAAbU,EAETA,EAAWD,EAAO7R,GAChB4R,EAAU,CAACJ,EAAUM,GAAY,CAACA,EAAUN,GAErCI,EACTE,EAASI,QAAQV,GAEjBM,EAASzV,KAAKmV,IAIhB/P,EAAIgQ,EAAiB5K,IACb,GAAKiL,EAAS9V,OAASyF,IAAMqQ,EAASK,OAAQ,CACpDL,EAASK,QAAS,EAGlB,IAAIC,EAAI,IAAIxV,MAAM,+CACEkV,EAAS9V,OAAS,IAAMmG,OAAOnC,GADjC,qEAIlBoS,EAAE/E,KAAO,8BACT+E,EAAE5B,QAAU3J,EACZuL,EAAEpS,KAAOA,EACToS,EAAEC,MAAQP,EAAS9V,OA7KG+V,EA8KHK,EA7KnBjN,SAAWA,QAAQmN,MAAMnN,QAAQmN,KAAKP,EA8KxC,CAGF,OAAOlL,CACT,CAaA,SAAS0L,IACP,IAAKvR,KAAKwR,MAGR,OAFAxR,KAAK6F,OAAOgK,eAAe7P,KAAKhB,KAAMgB,KAAKyR,QAC3CzR,KAAKwR,OAAQ,EACY,IAArB9R,UAAU1E,OACLgF,KAAKwQ,SAAS1P,KAAKd,KAAK6F,QAC1B7F,KAAKwQ,SAAS7M,MAAM3D,KAAK6F,OAAQnG,UAE5C,CAEA,SAASgS,EAAU7L,EAAQ7G,EAAMwR,GAC/B,IAAImB,EAAQ,CAAEH,OAAO,EAAOC,YAAQ3S,EAAW+G,OAAQA,EAAQ7G,KAAMA,EAAMwR,SAAUA,GACjFoB,EAAUL,EAAYM,KAAKF,GAG/B,OAFAC,EAAQpB,SAAWA,EACnBmB,EAAMF,OAASG,EACRA,CACT,CAyHA,SAASE,EAAWjM,EAAQ7G,EAAM+S,GAChC,IAAIlB,EAAShL,EAAOsK,QAEpB,QAAerR,IAAX+R,EACF,MAAO,GAET,IAAImB,EAAanB,EAAO7R,GACxB,YAAmBF,IAAfkT,EACK,GAEiB,mBAAfA,EACFD,EAAS,CAACC,EAAWxB,UAAYwB,GAAc,CAACA,GAElDD,EAsDT,SAAyBxX,GAEvB,IADA,IAAI+L,EAAM,IAAI5K,MAAMnB,EAAIS,QACfV,EAAI,EAAGA,EAAIgM,EAAItL,SAAUV,EAChCgM,EAAIhM,GAAKC,EAAID,GAAGkW,UAAYjW,EAAID,GAElC,OAAOgM,CACT,CA3DI2L,CAAgBD,GAAcE,EAAWF,EAAYA,EAAWhX,OACpE,CAmBA,SAASmX,EAAcnT,GACrB,IAAI6R,EAAS7Q,KAAKmQ,QAElB,QAAerR,IAAX+R,EAAsB,CACxB,IAAImB,EAAanB,EAAO7R,GAExB,GAA0B,mBAAfgT,EACT,OAAO,EACF,QAAmBlT,IAAfkT,EACT,OAAOA,EAAWhX,MAEtB,CAEA,OAAO,CACT,CAMA,SAASkX,EAAW3X,EAAKiG,GAEvB,IADA,IAAItC,EAAO,IAAIxC,MAAM8E,GACZlG,EAAI,EAAGA,EAAIkG,IAAKlG,EACvB4D,EAAK5D,GAAKC,EAAID,GAChB,OAAO4D,CACT,CA2CA,SAAS6R,EAA+BP,EAASnD,EAAMmE,EAAU4B,GAC/D,GAA0B,mBAAf5C,EAAQS,GACbmC,EAAM7C,KACRC,EAAQD,KAAKlD,EAAMmE,GAEnBhB,EAAQS,GAAG5D,EAAMmE,OAEd,IAAwC,mBAA7BhB,EAAQ6C,iBAYxB,MAAM,IAAIlV,UAAU,6EAA+EqS,GATnGA,EAAQ6C,iBAAiBhG,GAAM,SAASiG,EAAarV,GAG/CmV,EAAM7C,MACRC,EAAQ+C,oBAAoBlG,EAAMiG,GAEpC9B,EAASvT,EACX,GAGF,CACF,CAraAH,OAAOuH,eAAegL,EAAc,sBAAuB,CACzD/K,YAAY,EACZC,IAAK,WACH,OAAO+L,CACT,EACAnL,IAAK,SAASlI,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKkS,EAAYlS,GACpD,MAAM,IAAIL,WAAW,kGAAoGK,EAAM,KAEjIqT,EAAsBrT,CACxB,IAGFoS,EAAaC,KAAO,gBAEGxQ,IAAjBkB,KAAKmQ,SACLnQ,KAAKmQ,UAAYrT,OAAO0R,eAAexO,MAAMmQ,UAC/CnQ,KAAKmQ,QAAUrT,OAAOyR,OAAO,MAC7BvO,KAAKoQ,aAAe,GAGtBpQ,KAAKqQ,cAAgBrQ,KAAKqQ,oBAAiBvR,CAC7C,EAIAuQ,EAAarS,UAAUwV,gBAAkB,SAAyBhS,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAK2O,EAAY3O,GAChD,MAAM,IAAI5D,WAAW,gFAAkF4D,EAAI,KAG7G,OADAR,KAAKqQ,cAAgB7P,EACdR,IACT,EAQAqP,EAAarS,UAAUyV,gBAAkB,WACvC,OAAOhC,EAAiBzQ,KAC1B,EAEAqP,EAAarS,UAAUiU,KAAO,SAAcjS,GAE1C,IADA,IAAI8P,EAAO,GACFxU,EAAI,EAAGA,EAAIoF,UAAU1E,OAAQV,IAAKwU,EAAKzT,KAAKqE,UAAUpF,IAC/D,IAAIoY,EAAoB,UAAT1T,EAEX6R,EAAS7Q,KAAKmQ,QAClB,QAAerR,IAAX+R,EACF6B,EAAWA,QAA4B5T,IAAjB+R,EAAOzM,WAC1B,IAAKsO,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFI7D,EAAK9T,OAAS,IAChB2X,EAAK7D,EAAK,IACR6D,aAAc/W,MAGhB,MAAM+W,EAGR,IAAIvE,EAAM,IAAIxS,MAAM,oBAAsB+W,EAAK,KAAOA,EAAGpG,QAAU,IAAM,KAEzE,MADA6B,EAAIwE,QAAUD,EACRvE,CACR,CAEA,IAAI4B,EAAUa,EAAO7R,GAErB,QAAgBF,IAAZkR,EACF,OAAO,EAET,GAAuB,mBAAZA,EACTpB,EAAaoB,EAAShQ,KAAM8O,OAE5B,KAAInU,EAAMqV,EAAQhV,OACd6X,EAAYX,EAAWlC,EAASrV,GACpC,IAASL,EAAI,EAAGA,EAAIK,IAAOL,EACzBsU,EAAaiE,EAAUvY,GAAI0F,KAAM8O,EAHX,CAM1B,OAAO,CACT,EAgEAO,EAAarS,UAAU8V,YAAc,SAAqB9T,EAAMwR,GAC9D,OAAOG,EAAa3Q,KAAMhB,EAAMwR,GAAU,EAC5C,EAEAnB,EAAarS,UAAUiT,GAAKZ,EAAarS,UAAU8V,YAEnDzD,EAAarS,UAAU+V,gBACnB,SAAyB/T,EAAMwR,GAC7B,OAAOG,EAAa3Q,KAAMhB,EAAMwR,GAAU,EAC5C,EAoBJnB,EAAarS,UAAUuS,KAAO,SAAcvQ,EAAMwR,GAGhD,OAFAD,EAAcC,GACdxQ,KAAKiQ,GAAGjR,EAAM0S,EAAU1R,KAAMhB,EAAMwR,IAC7BxQ,IACT,EAEAqP,EAAarS,UAAUgW,oBACnB,SAA6BhU,EAAMwR,GAGjC,OAFAD,EAAcC,GACdxQ,KAAK+S,gBAAgB/T,EAAM0S,EAAU1R,KAAMhB,EAAMwR,IAC1CxQ,IACT,EAGJqP,EAAarS,UAAU6S,eACnB,SAAwB7Q,EAAMwR,GAC5B,IAAIvL,EAAM4L,EAAQoC,EAAU3Y,EAAG4Y,EAK/B,GAHA3C,EAAcC,QAGC1R,KADf+R,EAAS7Q,KAAKmQ,SAEZ,OAAOnQ,KAGT,QAAalB,KADbmG,EAAO4L,EAAO7R,IAEZ,OAAOgB,KAET,GAAIiF,IAASuL,GAAYvL,EAAKuL,WAAaA,EACb,KAAtBxQ,KAAKoQ,aACTpQ,KAAKmQ,QAAUrT,OAAOyR,OAAO,cAEtBsC,EAAO7R,GACV6R,EAAOhB,gBACT7P,KAAKiR,KAAK,iBAAkBjS,EAAMiG,EAAKuL,UAAYA,SAElD,GAAoB,mBAATvL,EAAqB,CAGrC,IAFAgO,GAAY,EAEP3Y,EAAI2K,EAAKjK,OAAS,EAAGV,GAAK,EAAGA,IAChC,GAAI2K,EAAK3K,KAAOkW,GAAYvL,EAAK3K,GAAGkW,WAAaA,EAAU,CACzD0C,EAAmBjO,EAAK3K,GAAGkW,SAC3ByC,EAAW3Y,EACX,KACF,CAGF,GAAI2Y,EAAW,EACb,OAAOjT,KAEQ,IAAbiT,EACFhO,EAAKkO,QAiIf,SAAmBlO,EAAMmO,GACvB,KAAOA,EAAQ,EAAInO,EAAKjK,OAAQoY,IAC9BnO,EAAKmO,GAASnO,EAAKmO,EAAQ,GAC7BnO,EAAKoO,KACP,CAnIUC,CAAUrO,EAAMgO,GAGE,IAAhBhO,EAAKjK,SACP6V,EAAO7R,GAAQiG,EAAK,SAEQnG,IAA1B+R,EAAOhB,gBACT7P,KAAKiR,KAAK,iBAAkBjS,EAAMkU,GAAoB1C,EAC1D,CAEA,OAAOxQ,IACT,EAEJqP,EAAarS,UAAUuW,IAAMlE,EAAarS,UAAU6S,eAEpDR,EAAarS,UAAUwW,mBACnB,SAA4BxU,GAC1B,IAAI6T,EAAWhC,EAAQvW,EAGvB,QAAewE,KADf+R,EAAS7Q,KAAKmQ,SAEZ,OAAOnQ,KAGT,QAA8BlB,IAA1B+R,EAAOhB,eAUT,OATyB,IAArBnQ,UAAU1E,QACZgF,KAAKmQ,QAAUrT,OAAOyR,OAAO,MAC7BvO,KAAKoQ,aAAe,QACMtR,IAAjB+R,EAAO7R,KACY,KAAtBgB,KAAKoQ,aACTpQ,KAAKmQ,QAAUrT,OAAOyR,OAAO,aAEtBsC,EAAO7R,IAEXgB,KAIT,GAAyB,IAArBN,UAAU1E,OAAc,CAC1B,IACIkT,EADAuF,EAAO3W,OAAO2W,KAAK5C,GAEvB,IAAKvW,EAAI,EAAGA,EAAImZ,EAAKzY,SAAUV,EAEjB,oBADZ4T,EAAMuF,EAAKnZ,KAEX0F,KAAKwT,mBAAmBtF,GAK1B,OAHAlO,KAAKwT,mBAAmB,kBACxBxT,KAAKmQ,QAAUrT,OAAOyR,OAAO,MAC7BvO,KAAKoQ,aAAe,EACbpQ,IACT,CAIA,GAAyB,mBAFzB6S,EAAYhC,EAAO7R,IAGjBgB,KAAK6P,eAAe7Q,EAAM6T,QACrB,QAAkB/T,IAAd+T,EAET,IAAKvY,EAAIuY,EAAU7X,OAAS,EAAGV,GAAK,EAAGA,IACrC0F,KAAK6P,eAAe7Q,EAAM6T,EAAUvY,IAIxC,OAAO0F,IACT,EAmBJqP,EAAarS,UAAU6V,UAAY,SAAmB7T,GACpD,OAAO8S,EAAW9R,KAAMhB,GAAM,EAChC,EAEAqQ,EAAarS,UAAU0W,aAAe,SAAsB1U,GAC1D,OAAO8S,EAAW9R,KAAMhB,GAAM,EAChC,EAEAqQ,EAAa8C,cAAgB,SAAS3C,EAASxQ,GAC7C,MAAqC,mBAA1BwQ,EAAQ2C,cACV3C,EAAQ2C,cAAcnT,GAEtBmT,EAAcrR,KAAK0O,EAASxQ,EAEvC,EAEAqQ,EAAarS,UAAUmV,cAAgBA,EAiBvC9C,EAAarS,UAAU2W,WAAa,WAClC,OAAO3T,KAAKoQ,aAAe,EAAI3B,EAAezO,KAAKmQ,SAAW,EAChE,qBCvaAhC,EAAOtU,QAAU,WACf,GAA0B,oBAAf+Z,WAA4B,OAAO,KAC9C,IAAIC,EAAO,CACTC,kBAAmBF,WAAWE,mBAAqBF,WAAWG,sBAC5DH,WAAWI,wBACbC,sBAAuBL,WAAWK,uBAChCL,WAAWM,0BAA4BN,WAAWO,4BACpDC,gBAAiBR,WAAWQ,iBAAmBR,WAAWS,oBACxDT,WAAWU,uBAEf,OAAKT,EAAKC,kBACHD,EAD6B,IAEtC,qBCbAha,EAAQuH,KAAO,SAAUhD,EAAQsD,EAAQ6S,EAAMC,EAAMC,GACnD,IAAIxQ,EAAGxD,EACHiU,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTva,EAAIia,EAAQE,EAAS,EAAK,EAC1BK,EAAIP,GAAQ,EAAI,EAChBQ,EAAI3W,EAAOsD,EAASpH,GAOxB,IALAA,GAAKwa,EAEL7Q,EAAI8Q,GAAM,IAAOF,GAAU,EAC3BE,KAAQF,EACRA,GAASH,EACFG,EAAQ,EAAG5Q,EAAS,IAAJA,EAAW7F,EAAOsD,EAASpH,GAAIA,GAAKwa,EAAGD,GAAS,GAKvE,IAHApU,EAAIwD,GAAM,IAAO4Q,GAAU,EAC3B5Q,KAAQ4Q,EACRA,GAASL,EACFK,EAAQ,EAAGpU,EAAS,IAAJA,EAAWrC,EAAOsD,EAASpH,GAAIA,GAAKwa,EAAGD,GAAS,GAEvE,GAAU,IAAN5Q,EACFA,EAAI,EAAI2Q,MACH,IAAI3Q,IAAM0Q,EACf,OAAOlU,EAAIuU,IAAsB3H,KAAd0H,GAAK,EAAI,GAE5BtU,GAAQqC,KAAKgG,IAAI,EAAG0L,GACpBvQ,GAAQ2Q,CACV,CACA,OAAQG,GAAK,EAAI,GAAKtU,EAAIqC,KAAKgG,IAAI,EAAG7E,EAAIuQ,EAC5C,EAEA3a,EAAQ8D,MAAQ,SAAUS,EAAQd,EAAOoE,EAAQ6S,EAAMC,EAAMC,GAC3D,IAAIxQ,EAAGxD,EAAGiC,EACNgS,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBM,EAAe,KAATT,EAAc1R,KAAKgG,IAAI,GAAI,IAAMhG,KAAKgG,IAAI,GAAI,IAAM,EAC1DxO,EAAIia,EAAO,EAAKE,EAAS,EACzBK,EAAIP,EAAO,GAAK,EAChBQ,EAAIzX,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQwF,KAAKqK,IAAI7P,GAEb8R,MAAM9R,IAAUA,IAAU+P,KAC5B5M,EAAI2O,MAAM9R,GAAS,EAAI,EACvB2G,EAAI0Q,IAEJ1Q,EAAInB,KAAK+J,MAAM/J,KAAKoS,IAAI5X,GAASwF,KAAKqS,KAClC7X,GAASoF,EAAII,KAAKgG,IAAI,GAAI7E,IAAM,IAClCA,IACAvB,GAAK,IAGLpF,GADE2G,EAAI2Q,GAAS,EACNK,EAAKvS,EAELuS,EAAKnS,KAAKgG,IAAI,EAAG,EAAI8L,IAEpBlS,GAAK,IACfuB,IACAvB,GAAK,GAGHuB,EAAI2Q,GAASD,GACflU,EAAI,EACJwD,EAAI0Q,GACK1Q,EAAI2Q,GAAS,GACtBnU,GAAMnD,EAAQoF,EAAK,GAAKI,KAAKgG,IAAI,EAAG0L,GACpCvQ,GAAQ2Q,IAERnU,EAAInD,EAAQwF,KAAKgG,IAAI,EAAG8L,EAAQ,GAAK9R,KAAKgG,IAAI,EAAG0L,GACjDvQ,EAAI,IAIDuQ,GAAQ,EAAGpW,EAAOsD,EAASpH,GAAS,IAAJmG,EAAUnG,GAAKwa,EAAGrU,GAAK,IAAK+T,GAAQ,GAI3E,IAFAvQ,EAAKA,GAAKuQ,EAAQ/T,EAClBiU,GAAQF,EACDE,EAAO,EAAGtW,EAAOsD,EAASpH,GAAS,IAAJ2J,EAAU3J,GAAKwa,EAAG7Q,GAAK,IAAKyQ,GAAQ,GAE1EtW,EAAOsD,EAASpH,EAAIwa,IAAU,IAAJC,CAC5B,qBCpF6B,mBAAlBjY,OAAOyR,OAEhBJ,EAAOtU,QAAU,SAAkBub,EAAMC,GACnCA,IACFD,EAAKE,OAASD,EACdD,EAAKpY,UAAYF,OAAOyR,OAAO8G,EAAUrY,UAAW,CAClDiP,YAAa,CACX3O,MAAO8X,EACP9Q,YAAY,EACZ6H,UAAU,EACVC,cAAc,KAItB,EAGA+B,EAAOtU,QAAU,SAAkBub,EAAMC,GACvC,GAAIA,EAAW,CACbD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASvY,UAAYqY,EAAUrY,UAC/BoY,EAAKpY,UAAY,IAAIuY,EACrBH,EAAKpY,UAAUiP,YAAcmJ,CAC/B,CACF,oBCrBF,IAAIL,EAAI,IACJtU,EAAQ,GAAJsU,EACJS,EAAQ,GAAJ/U,EACJqU,EAAQ,GAAJU,EACJpE,EAAQ,EAAJ0D,EAsJR,SAASW,EAAOC,EAAIC,EAAOnV,EAAG6L,GAC5B,IAAIuJ,EAAWD,GAAa,IAAJnV,EACxB,OAAOsC,KAAK+S,MAAMH,EAAKlV,GAAK,IAAM6L,GAAQuJ,EAAW,IAAM,GAC7D,CAxIAzH,EAAOtU,QAAU,SAAS8G,EAAKmV,GAC7BA,EAAUA,GAAW,CAAC,EACtB,IA8GeJ,EACXC,EA/GA3W,SAAc2B,EAClB,GAAa,WAAT3B,GAAqB2B,EAAI3F,OAAS,EACpC,OAkBJ,SAAeoH,GAEb,MADAA,EAAMjB,OAAOiB,IACLpH,OAAS,KAAjB,CAGA,IAAI+a,EAAQ,mIAAmIC,KAC7I5T,GAEF,GAAK2T,EAAL,CAGA,IAAIvV,EAAIyV,WAAWF,EAAM,IAEzB,QADYA,EAAM,IAAM,MAAMjW,eAE5B,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAzDEgV,SAyDKtU,EACT,IAAK,QACL,IAAK,OACL,IAAK,IACH,OAAOA,EAAI4Q,EACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAO5Q,EAAIsU,EACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOtU,EAAIgV,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOhV,EAAIC,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOD,EAAIuU,EACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOvU,EACT,QACE,OA3CJ,CANA,CAmDF,CAzEW0V,CAAMvV,GACR,GAAa,WAAT3B,GAAqBmH,SAASxF,GACvC,OAAOmV,EAAQK,MA0GFT,EA1GiB/U,GA2G5BgV,EAAQ7S,KAAKqK,IAAIuI,KACRZ,EACJW,EAAOC,EAAIC,EAAOb,EAAG,OAE1Ba,GAASH,EACJC,EAAOC,EAAIC,EAAOH,EAAG,QAE1BG,GAASlV,EACJgV,EAAOC,EAAIC,EAAOlV,EAAG,UAE1BkV,GAASZ,EACJU,EAAOC,EAAIC,EAAOZ,EAAG,UAEvBW,EAAK,OAvCd,SAAkBA,GAChB,IAAIC,EAAQ7S,KAAKqK,IAAIuI,GACrB,OAAIC,GAASb,EACJhS,KAAK+S,MAAMH,EAAKZ,GAAK,IAE1Ba,GAASH,EACJ1S,KAAK+S,MAAMH,EAAKF,GAAK,IAE1BG,GAASlV,EACJqC,KAAK+S,MAAMH,EAAKjV,GAAK,IAE1BkV,GAASZ,EACJjS,KAAK+S,MAAMH,EAAKX,GAAK,IAEvBW,EAAK,IACd,CAhGyCU,CAASzV,GAEhD,MAAM,IAAI/E,MACR,wDACEya,KAAKC,UAAU3V,GAErB,qBCpCA,IAOI4V,EACAC,EARAC,EAAUtI,EAAOtU,QAAU,CAAC,EAUhC,SAAS6c,IACL,MAAM,IAAI9a,MAAM,kCACpB,CACA,SAAS+a,IACL,MAAM,IAAI/a,MAAM,oCACpB,CAqBA,SAASgb,EAAWC,GAChB,GAAIN,IAAqBO,WAErB,OAAOA,WAAWD,EAAK,GAG3B,IAAKN,IAAqBG,IAAqBH,IAAqBO,WAEhE,OADAP,EAAmBO,WACZA,WAAWD,EAAK,GAE3B,IAEI,OAAON,EAAiBM,EAAK,EACjC,CAAE,MAAM5S,GACJ,IAEI,OAAOsS,EAAiBzV,KAAK,KAAM+V,EAAK,EAC5C,CAAE,MAAM5S,GAEJ,OAAOsS,EAAiBzV,KAAKd,KAAM6W,EAAK,EAC5C,CACJ,CAGJ,EA5CC,WACG,IAEQN,EADsB,mBAAfO,WACYA,WAEAJ,CAE3B,CAAE,MAAOzS,GACLsS,EAAmBG,CACvB,CACA,IAEQF,EADwB,mBAAjBO,aACcA,aAEAJ,CAE7B,CAAE,MAAO1S,GACLuS,EAAqBG,CACzB,CACJ,CAnBA,GAwEA,IAEIK,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAahc,OACbic,EAAQD,EAAahS,OAAOiS,GAE5BE,GAAc,EAEdF,EAAMjc,QACNqc,IAER,CAEA,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAII,EAAUV,EAAWQ,GACzBF,GAAW,EAGX,IADA,IAAIvc,EAAMsc,EAAMjc,OACVL,GAAK,CAGP,IAFAqc,EAAeC,EACfA,EAAQ,KACCE,EAAaxc,GACdqc,GACAA,EAAaG,GAAYI,MAGjCJ,GAAc,EACdxc,EAAMsc,EAAMjc,MAChB,CACAgc,EAAe,KACfE,GAAW,EAnEf,SAAyBM,GACrB,GAAIhB,IAAuBO,aAEvB,OAAOA,aAAaS,GAGxB,IAAKhB,IAAuBG,IAAwBH,IAAuBO,aAEvE,OADAP,EAAqBO,aACdA,aAAaS,GAExB,IAEI,OAAOhB,EAAmBgB,EAC9B,CAAE,MAAOvT,GACL,IAEI,OAAOuS,EAAmB1V,KAAK,KAAM0W,EACzC,CAAE,MAAOvT,GAGL,OAAOuS,EAAmB1V,KAAKd,KAAMwX,EACzC,CACJ,CAIJ,CA0CIC,CAAgBH,EAlBhB,CAmBJ,CAgBA,SAASI,EAAKb,EAAKtX,GACfS,KAAK6W,IAAMA,EACX7W,KAAKT,MAAQA,CACjB,CAWA,SAASoY,IAAQ,CA5BjBlB,EAAQmB,SAAW,SAAUf,GACzB,IAAI/H,EAAO,IAAIpT,MAAMgE,UAAU1E,OAAS,GACxC,GAAI0E,UAAU1E,OAAS,EACnB,IAAK,IAAIV,EAAI,EAAGA,EAAIoF,UAAU1E,OAAQV,IAClCwU,EAAKxU,EAAI,GAAKoF,UAAUpF,GAGhC2c,EAAM5b,KAAK,IAAIqc,EAAKb,EAAK/H,IACJ,IAAjBmI,EAAMjc,QAAiBkc,GACvBN,EAAWS,EAEnB,EAOAK,EAAK1a,UAAUua,IAAM,WACjBvX,KAAK6W,IAAIlT,MAAM,KAAM3D,KAAKT,MAC9B,EACAkX,EAAQoB,MAAQ,UAChBpB,EAAQqB,SAAU,EAClBrB,EAAQsB,IAAM,CAAC,EACftB,EAAQuB,KAAO,GACfvB,EAAQwB,QAAU,GAClBxB,EAAQyB,SAAW,CAAC,EAIpBzB,EAAQxG,GAAK0H,EACblB,EAAQ3D,YAAc6E,EACtBlB,EAAQlH,KAAOoI,EACflB,EAAQlD,IAAMoE,EACdlB,EAAQ5G,eAAiB8H,EACzBlB,EAAQjD,mBAAqBmE,EAC7BlB,EAAQxF,KAAO0G,EACflB,EAAQ1D,gBAAkB4E,EAC1BlB,EAAQzD,oBAAsB2E,EAE9BlB,EAAQ5D,UAAY,SAAUxG,GAAQ,MAAO,EAAG,EAEhDoK,EAAQ0B,QAAU,SAAU9L,GACxB,MAAM,IAAIzQ,MAAM,mCACpB,EAEA6a,EAAQ2B,IAAM,WAAc,MAAO,GAAI,EACvC3B,EAAQ4B,MAAQ,SAAUzX,GACtB,MAAM,IAAIhF,MAAM,iCACpB,EACA6a,EAAQ6B,MAAQ,WAAa,OAAO,CAAG,yBCtLvC,IAAIC,EAEJpK,EAAOtU,QAAoC,mBAAnB2e,eACpBA,eAAe3G,KAAuB,oBAAX4G,OAAyBA,OAAS,EAAAC,GAE7DC,IAAOJ,IAAYA,EAAU9I,QAAQC,YACpCkJ,KAAKD,GACLE,OAAMzK,GAAO0I,YAAW,KAAQ,MAAM1I,IAAO,yCCJlD,IAAI0K,EAAY,MAUZxc,EAAS,gBACTyc,EAAS,EAAAL,EAAOK,QAAU,EAAAL,EAAOM,SAEjCD,GAAUA,EAAOE,gBACnB9K,EAAOtU,QAKT,SAAsByF,EAAMqZ,GAE1B,GAAIrZ,EAjBW,WAiBQ,MAAM,IAAI1C,WAAW,mCAE5C,IAAI6J,EAAQnK,EAAOc,YAAYkC,GAE/B,GAAIA,EAAO,EACT,GAAIA,EAAOwZ,EAET,IAAK,IAAII,EAAY,EAAGA,EAAY5Z,EAAM4Z,GAAaJ,EAGrDC,EAAOE,gBAAgBxS,EAAM7I,MAAMsb,EAAWA,EAAYJ,SAG5DC,EAAOE,gBAAgBxS,GAI3B,MAAkB,mBAAPkS,EACFlC,QAAQmB,UAAS,WACtBe,EAAG,KAAMlS,EACX,IAGKA,CACT,EA7BE0H,EAAOtU,QAVT,WACE,MAAM,IAAI+B,MAAM,iHAClB,kCCRA,IAAIud,EAAQ,CAAC,EAEb,SAASC,EAAgBzd,EAAM4Q,EAASP,GACjCA,IACHA,EAAOpQ,OAWT,IAAIyd,EAEJ,SAAUC,GAnBZ,IAAwBC,EAAUC,EAsB9B,SAASH,EAAUI,EAAMC,EAAMC,GAC7B,OAAOL,EAAMxY,KAAKd,KAdtB,SAAoByZ,EAAMC,EAAMC,GAC9B,MAAuB,iBAAZpN,EACFA,EAEAA,EAAQkN,EAAMC,EAAMC,EAE/B,CAQ4B5N,CAAW0N,EAAMC,EAAMC,KAAU3Z,IAC3D,CAEA,OA1B8BwZ,EAoBJF,GApBNC,EAoBLF,GApBsCrc,UAAYF,OAAOyR,OAAOiL,EAAWxc,WAAYuc,EAASvc,UAAUiP,YAAcsN,EAAUA,EAASK,UAAYJ,EA0B/JH,CACT,CARA,CAQErN,GAEFqN,EAAUrc,UAAUqP,KAAOL,EAAKK,KAChCgN,EAAUrc,UAAUrB,KAAOA,EAC3Bwd,EAAMxd,GAAQ0d,CAChB,CAGA,SAASQ,EAAMC,EAAUC,GACvB,GAAIre,MAAMuD,QAAQ6a,GAAW,CAC3B,IAAInf,EAAMmf,EAAS9e,OAKnB,OAJA8e,EAAWA,EAASE,KAAI,SAAU1f,GAChC,OAAO6G,OAAO7G,EAChB,IAEIK,EAAM,EACD,UAAUqK,OAAO+U,EAAO,KAAK/U,OAAO8U,EAASlc,MAAM,EAAGjD,EAAM,GAAGa,KAAK,MAAO,SAAWse,EAASnf,EAAM,GAC3F,IAARA,EACF,UAAUqK,OAAO+U,EAAO,KAAK/U,OAAO8U,EAAS,GAAI,QAAQ9U,OAAO8U,EAAS,IAEzE,MAAM9U,OAAO+U,EAAO,KAAK/U,OAAO8U,EAAS,GAEpD,CACE,MAAO,MAAM9U,OAAO+U,EAAO,KAAK/U,OAAO7D,OAAO2Y,GAElD,CA6BAV,EAAgB,yBAAyB,SAAU/M,EAAM/O,GACvD,MAAO,cAAgBA,EAAQ,4BAA8B+O,EAAO,GACtE,GAAGlP,WACHic,EAAgB,wBAAwB,SAAU/M,EAAMyN,EAAUpc,GAEhE,IAAIuc,EA/BmBC,EAwCnBlN,EA1BY5K,EAAatG,EA4B7B,GATwB,iBAAbge,IAjCYI,EAiCkC,OAAVJ,EAhCpC9X,OAAyB,EAAUkY,KAAmBA,IAiC/DD,EAAa,cACbH,EAAWA,EAASnU,QAAQ,QAAS,KAErCsU,EAAa,UAhCjB,SAAkB7X,EAAK8X,EAAQC,GAK7B,YAJiBrb,IAAbqb,GAA0BA,EAAW/X,EAAIpH,UAC3Cmf,EAAW/X,EAAIpH,QAGVoH,EAAIgY,UAAUD,EAAWD,EAAeC,KAAcD,CAC/D,CA+BMG,CAAShO,EAAM,aAEjBW,EAAM,OAAOhI,OAAOqH,EAAM,KAAKrH,OAAOiV,EAAY,KAAKjV,OAAO6U,EAAMC,EAAU,aACzE,CACL,IAAI9a,GA/Be,iBAAVlD,IACTA,EAAQ,GAGNA,EAAQoe,GALI9X,EAgCMiK,GA3BUrR,SAGS,IAAhCoH,EAAIvG,QAwBe,IAxBCC,GAwBmB,WAAb,YACjCkR,EAAM,QAAShI,OAAOqH,EAAM,MAAOrH,OAAOhG,EAAM,KAAKgG,OAAOiV,EAAY,KAAKjV,OAAO6U,EAAMC,EAAU,QACtG,CAGA,OADA9M,EAAO,mBAAmBhI,cAActH,EAE1C,GAAGP,WACHic,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAU/M,GACtD,MAAO,OAASA,EAAO,4BACzB,IACA+M,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAU/M,GAChD,MAAO,eAAiBA,EAAO,+BACjC,IACA+M,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuCjc,WACjFic,EAAgB,wBAAwB,SAAUnc,GAChD,MAAO,qBAAuBA,CAChC,GAAGE,WACHic,EAAgB,qCAAsC,oCACtDjL,EAAOtU,QAAQ,EAAQsf,sCCjGvB,IAAImB,EAAaxd,OAAO2W,MAAQ,SAAU9U,GACxC,IAAI8U,EAAO,GACX,IAAK,IAAIvF,KAAOvP,EAAK8U,EAAKpY,KAAK6S,GAC/B,OAAOuF,CACT,EAGAtF,EAAOtU,QAAU0gB,EACjB,IAAIC,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OACvB,EAAQ,MAAR,CAAoBF,EAAQC,GAI1B,IADA,IAAI/G,EAAO6G,EAAWG,EAASzd,WACtB0d,EAAI,EAAGA,EAAIjH,EAAKzY,OAAQ0f,IAAK,CACpC,IAAIC,EAASlH,EAAKiH,GACbH,EAAOvd,UAAU2d,KAASJ,EAAOvd,UAAU2d,GAAUF,EAASzd,UAAU2d,GAC/E,CAEF,SAASJ,EAAOzE,GACd,KAAM9V,gBAAgBua,GAAS,OAAO,IAAIA,EAAOzE,GACjD0E,EAAS1Z,KAAKd,KAAM8V,GACpB2E,EAAS3Z,KAAKd,KAAM8V,GACpB9V,KAAK4a,eAAgB,EACjB9E,KACuB,IAArBA,EAAQ+E,WAAoB7a,KAAK6a,UAAW,IACvB,IAArB/E,EAAQ3J,WAAoBnM,KAAKmM,UAAW,IAClB,IAA1B2J,EAAQ8E,gBACV5a,KAAK4a,eAAgB,EACrB5a,KAAKuP,KAAK,MAAOuL,IAGvB,CA8BA,SAASA,IAEH9a,KAAK+a,eAAeC,OAIxBvE,QAAQmB,SAASqD,EAASjb,KAC5B,CACA,SAASib,EAAQC,GACfA,EAAKnf,KACP,CAvCAe,OAAOuH,eAAekW,EAAOvd,UAAW,wBAAyB,CAI/DsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAK+a,eAAeI,aAC7B,IAEFre,OAAOuH,eAAekW,EAAOvd,UAAW,iBAAkB,CAIxDsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAK+a,gBAAkB/a,KAAK+a,eAAeK,WACpD,IAEFte,OAAOuH,eAAekW,EAAOvd,UAAW,iBAAkB,CAIxDsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAK+a,eAAe/f,MAC7B,IAeF8B,OAAOuH,eAAekW,EAAOvd,UAAW,YAAa,CAInDsH,YAAY,EACZC,IAAK,WACH,YAA4BzF,IAAxBkB,KAAKqb,qBAAwDvc,IAAxBkB,KAAK+a,gBAGvC/a,KAAKqb,eAAeC,WAAatb,KAAK+a,eAAeO,SAC9D,EACAnW,IAAK,SAAa7H,QAGYwB,IAAxBkB,KAAKqb,qBAAwDvc,IAAxBkB,KAAK+a,iBAM9C/a,KAAKqb,eAAeC,UAAYhe,EAChC0C,KAAK+a,eAAeO,UAAYhe,EAClC,wCCjGF6Q,EAAOtU,QAAU0hB,EACjB,IAAIC,EAAY,EAAQ,OAExB,SAASD,EAAYzF,GACnB,KAAM9V,gBAAgBub,GAAc,OAAO,IAAIA,EAAYzF,GAC3D0F,EAAU1a,KAAKd,KAAM8V,EACvB,CAJA,EAAQ,MAAR,CAAoByF,EAAaC,GAKjCD,EAAYve,UAAUye,WAAa,SAAUC,EAAOle,EAAUmb,GAC5DA,EAAG,KAAM+C,EACX,sCCVA,IAAInB,EAHJpM,EAAOtU,QAAU2gB,EAMjBA,EAASmB,cAAgBA,EAGhB,sBAAT,IAqBIC,EApBAC,EAAkB,SAAyBrM,EAASxQ,GACtD,OAAOwQ,EAAQqD,UAAU7T,GAAMhE,MACjC,EAII8gB,EAAS,EAAQ,OAGjBxf,EAAS,gBACTyf,QAAmC,IAAX,EAAArD,EAAyB,EAAAA,EAA2B,oBAAXD,OAAyBA,OAAyB,oBAATyC,KAAuBA,KAAO,CAAC,GAAGzf,YAAc,WAAa,EASvKugB,EAAY,EAAQ,OAGtBJ,EADEI,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,WAAkB,EAI5B,IAWIC,EACAC,EACA9e,EAbA+e,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OAExBC,EADa,EAAQ,OACOA,iBAC1BC,EAAiB,WACnB3P,EAAuB2P,EAAe3P,qBACtC4P,EAA4BD,EAAeC,0BAC3CC,EAA6BF,EAAeE,2BAC5CC,EAAqCH,EAAeG,mCAMtD,EAAQ,MAAR,CAAoBlC,EAAUsB,GAC9B,IAAIa,EAAiBN,EAAYM,eAC7BC,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAY1D,SAASjB,EAAc7F,EAAS+G,EAAQC,GACtCvC,EAASA,GAAU,EAAQ,OAC3BzE,EAAUA,GAAW,CAAC,EAOE,kBAAbgH,IAAwBA,EAAWD,aAAkBtC,GAIhEva,KAAK+c,aAAejH,EAAQiH,WACxBD,IAAU9c,KAAK+c,WAAa/c,KAAK+c,cAAgBjH,EAAQkH,oBAI7Dhd,KAAKmb,cAAgBmB,EAAiBtc,KAAM8V,EAAS,wBAAyBgH,GAK9E9c,KAAK5B,OAAS,IAAIge,EAClBpc,KAAKhF,OAAS,EACdgF,KAAKid,MAAQ,KACbjd,KAAKkd,WAAa,EAClBld,KAAKmd,QAAU,KACfnd,KAAKgb,OAAQ,EACbhb,KAAKod,YAAa,EAClBpd,KAAKqd,SAAU,EAMfrd,KAAKsd,MAAO,EAIZtd,KAAKud,cAAe,EACpBvd,KAAKwd,iBAAkB,EACvBxd,KAAKyd,mBAAoB,EACzBzd,KAAK0d,iBAAkB,EACvB1d,KAAK2d,QAAS,EAGd3d,KAAK4d,WAAkC,IAAtB9H,EAAQ8H,UAGzB5d,KAAK6d,cAAgB/H,EAAQ+H,YAG7B7d,KAAKsb,WAAY,EAKjBtb,KAAK8d,gBAAkBhI,EAAQgI,iBAAmB,OAGlD9d,KAAK+d,WAAa,EAGlB/d,KAAKge,aAAc,EACnBhe,KAAKie,QAAU,KACfje,KAAKxC,SAAW,KACZsY,EAAQtY,WACL0e,IAAeA,EAAgB,YACpClc,KAAKie,QAAU,IAAI/B,EAAcpG,EAAQtY,UACzCwC,KAAKxC,SAAWsY,EAAQtY,SAE5B,CACA,SAASgd,EAAS1E,GAEhB,GADAyE,EAASA,GAAU,EAAQ,SACrBva,gBAAgBwa,GAAW,OAAO,IAAIA,EAAS1E,GAIrD,IAAIgH,EAAW9c,gBAAgBua,EAC/Bva,KAAKqb,eAAiB,IAAIM,EAAc7F,EAAS9V,KAAM8c,GAGvD9c,KAAK6a,UAAW,EACZ/E,IAC0B,mBAAjBA,EAAQ1U,OAAqBpB,KAAKke,MAAQpI,EAAQ1U,MAC9B,mBAApB0U,EAAQqI,UAAwBne,KAAKoe,SAAWtI,EAAQqI,UAErErC,EAAOhb,KAAKd,KACd,CAwDA,SAASqe,EAAiBxB,EAAQnB,EAAOle,EAAU8gB,EAAYC,GAC7D3C,EAAM,mBAAoBF,GAC1B,IAKM/I,EALFhB,EAAQkL,EAAOxB,eACnB,GAAc,OAAVK,EACF/J,EAAM0L,SAAU,EAuNpB,SAAoBR,EAAQlL,GAE1B,GADAiK,EAAM,eACFjK,EAAMqJ,MAAV,CACA,GAAIrJ,EAAMsM,QAAS,CACjB,IAAIvC,EAAQ/J,EAAMsM,QAAQliB,MACtB2f,GAASA,EAAM1gB,SACjB2W,EAAMvT,OAAO/C,KAAKqgB,GAClB/J,EAAM3W,QAAU2W,EAAMoL,WAAa,EAAIrB,EAAM1gB,OAEjD,CACA2W,EAAMqJ,OAAQ,EACVrJ,EAAM2L,KAIRkB,EAAa3B,IAGblL,EAAM4L,cAAe,EAChB5L,EAAM6L,kBACT7L,EAAM6L,iBAAkB,EACxBiB,EAAc5B,IAnBK,CAsBzB,CA9OI6B,CAAW7B,EAAQlL,QAInB,GADK4M,IAAgB5L,EA6CzB,SAAsBhB,EAAO+J,GAC3B,IAAI/I,EAjPiBhU,EAqPrB,OArPqBA,EAkPF+c,EAjPZpf,EAAOsC,SAASD,IAAQA,aAAeod,GAiPA,iBAAVL,QAAgC5c,IAAV4c,GAAwB/J,EAAMoL,aACtFpK,EAAK,IAAI/F,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAe8O,IAEtE/I,CACT,CAnD8BgM,CAAahN,EAAO+J,IAC1C/I,EACFgK,EAAeE,EAAQlK,QAClB,GAAIhB,EAAMoL,YAAcrB,GAASA,EAAM1gB,OAAS,EAIrD,GAHqB,iBAAV0gB,GAAuB/J,EAAMoL,YAAcjgB,OAAO0R,eAAekN,KAAWpf,EAAOU,YAC5F0e,EA3MR,SAA6BA,GAC3B,OAAOpf,EAAOe,KAAKqe,EACrB,CAyMgBkD,CAAoBlD,IAE1B4C,EACE3M,EAAMyL,WAAYT,EAAeE,EAAQ,IAAIH,GAA2CmC,EAAShC,EAAQlL,EAAO+J,GAAO,QACtH,GAAI/J,EAAMqJ,MACf2B,EAAeE,EAAQ,IAAIL,OACtB,IAAI7K,EAAM2J,UACf,OAAO,EAEP3J,EAAM0L,SAAU,EACZ1L,EAAMsM,UAAYzgB,GACpBke,EAAQ/J,EAAMsM,QAAQtgB,MAAM+d,GACxB/J,EAAMoL,YAA+B,IAAjBrB,EAAM1gB,OAAc6jB,EAAShC,EAAQlL,EAAO+J,GAAO,GAAYoD,EAAcjC,EAAQlL,IAE7GkN,EAAShC,EAAQlL,EAAO+J,GAAO,EAEnC,MACU4C,IACV3M,EAAM0L,SAAU,EAChByB,EAAcjC,EAAQlL,IAO1B,OAAQA,EAAMqJ,QAAUrJ,EAAM3W,OAAS2W,EAAMwJ,eAAkC,IAAjBxJ,EAAM3W,OACtE,CACA,SAAS6jB,EAAShC,EAAQlL,EAAO+J,EAAO4C,GAClC3M,EAAMwL,SAA4B,IAAjBxL,EAAM3W,SAAiB2W,EAAM2L,MAChD3L,EAAMoM,WAAa,EACnBlB,EAAO5L,KAAK,OAAQyK,KAGpB/J,EAAM3W,QAAU2W,EAAMoL,WAAa,EAAIrB,EAAM1gB,OACzCsjB,EAAY3M,EAAMvT,OAAO8S,QAAQwK,GAAY/J,EAAMvT,OAAO/C,KAAKqgB,GAC/D/J,EAAM4L,cAAciB,EAAa3B,IAEvCiC,EAAcjC,EAAQlL,EACxB,CA3GA7U,OAAOuH,eAAemW,EAASxd,UAAW,YAAa,CAIrDsH,YAAY,EACZC,IAAK,WACH,YAA4BzF,IAAxBkB,KAAKqb,gBAGFrb,KAAKqb,eAAeC,SAC7B,EACAnW,IAAK,SAAa7H,GAGX0C,KAAKqb,iBAMVrb,KAAKqb,eAAeC,UAAYhe,EAClC,IAEFkd,EAASxd,UAAUmhB,QAAU9B,EAAY8B,QACzC3D,EAASxd,UAAU+hB,WAAa1C,EAAY2C,UAC5CxE,EAASxd,UAAUohB,SAAW,SAAUhQ,EAAKuK,GAC3CA,EAAGvK,EACL,EAMAoM,EAASxd,UAAU3B,KAAO,SAAUqgB,EAAOle,GACzC,IACI+gB,EADA5M,EAAQ3R,KAAKqb,eAcjB,OAZK1J,EAAMoL,WAUTwB,GAAiB,EATI,iBAAV7C,KACTle,EAAWA,GAAYmU,EAAMmM,mBACZnM,EAAMnU,WACrBke,EAAQpf,EAAOe,KAAKqe,EAAOle,GAC3BA,EAAW,IAEb+gB,GAAiB,GAKdF,EAAiBre,KAAM0b,EAAOle,GAAU,EAAO+gB,EACxD,EAGA/D,EAASxd,UAAUkU,QAAU,SAAUwK,GACrC,OAAO2C,EAAiBre,KAAM0b,EAAO,MAAM,GAAM,EACnD,EA6DAlB,EAASxd,UAAUiiB,SAAW,WAC5B,OAAuC,IAAhCjf,KAAKqb,eAAe8B,OAC7B,EAGA3C,EAASxd,UAAUkiB,YAAc,SAAUC,GACpCjD,IAAeA,EAAgB,YACpC,IAAI+B,EAAU,IAAI/B,EAAciD,GAChCnf,KAAKqb,eAAe4C,QAAUA,EAE9Bje,KAAKqb,eAAe7d,SAAWwC,KAAKqb,eAAe4C,QAAQzgB,SAK3D,IAFA,IAAI4hB,EAAIpf,KAAKqb,eAAejd,OAAOihB,KAC/BC,EAAU,GACD,OAANF,GACLE,GAAWrB,EAAQtgB,MAAMyhB,EAAElgB,MAC3BkgB,EAAIA,EAAEG,KAKR,OAHAvf,KAAKqb,eAAejd,OAAOohB,QACX,KAAZF,GAAgBtf,KAAKqb,eAAejd,OAAO/C,KAAKikB,GACpDtf,KAAKqb,eAAergB,OAASskB,EAAQtkB,OAC9BgF,IACT,EAGA,IAAIyf,EAAU,WAqBd,SAASC,EAAclf,EAAGmR,GACxB,OAAInR,GAAK,GAAsB,IAAjBmR,EAAM3W,QAAgB2W,EAAMqJ,MAAc,EACpDrJ,EAAMoL,WAAmB,EACzBvc,GAAMA,EAEJmR,EAAMwL,SAAWxL,EAAM3W,OAAe2W,EAAMvT,OAAOihB,KAAKngB,KAAKlE,OAAmB2W,EAAM3W,QAGxFwF,EAAImR,EAAMwJ,gBAAexJ,EAAMwJ,cA5BrC,SAAiC3a,GAe/B,OAdIA,GAAKif,EAEPjf,EAAIif,GAIJjf,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAEKA,CACT,CAYqDmf,CAAwBnf,IACvEA,GAAKmR,EAAM3W,OAAewF,EAEzBmR,EAAMqJ,MAIJrJ,EAAM3W,QAHX2W,EAAM4L,cAAe,EACd,GAGX,CA6HA,SAASiB,EAAa3B,GACpB,IAAIlL,EAAQkL,EAAOxB,eACnBO,EAAM,eAAgBjK,EAAM4L,aAAc5L,EAAM6L,iBAChD7L,EAAM4L,cAAe,EAChB5L,EAAM6L,kBACT5B,EAAM,eAAgBjK,EAAMwL,SAC5BxL,EAAM6L,iBAAkB,EACxB/G,QAAQmB,SAAS6G,EAAe5B,GAEpC,CACA,SAAS4B,EAAc5B,GACrB,IAAIlL,EAAQkL,EAAOxB,eACnBO,EAAM,gBAAiBjK,EAAM2J,UAAW3J,EAAM3W,OAAQ2W,EAAMqJ,OACvDrJ,EAAM2J,YAAc3J,EAAM3W,SAAU2W,EAAMqJ,QAC7C6B,EAAO5L,KAAK,YACZU,EAAM6L,iBAAkB,GAS1B7L,EAAM4L,cAAgB5L,EAAMwL,UAAYxL,EAAMqJ,OAASrJ,EAAM3W,QAAU2W,EAAMwJ,cAC7EyE,EAAK/C,EACP,CAQA,SAASiC,EAAcjC,EAAQlL,GACxBA,EAAMqM,cACTrM,EAAMqM,aAAc,EACpBvH,QAAQmB,SAASiI,EAAgBhD,EAAQlL,GAE7C,CACA,SAASkO,EAAehD,EAAQlL,GAwB9B,MAAQA,EAAM0L,UAAY1L,EAAMqJ,QAAUrJ,EAAM3W,OAAS2W,EAAMwJ,eAAiBxJ,EAAMwL,SAA4B,IAAjBxL,EAAM3W,SAAe,CACpH,IAAIL,EAAMgX,EAAM3W,OAGhB,GAFA4gB,EAAM,wBACNiB,EAAOzb,KAAK,GACRzG,IAAQgX,EAAM3W,OAEhB,KACJ,CACA2W,EAAMqM,aAAc,CACtB,CAgPA,SAAS8B,EAAwB5E,GAC/B,IAAIvJ,EAAQuJ,EAAKG,eACjB1J,EAAM8L,kBAAoBvC,EAAK/I,cAAc,YAAc,EACvDR,EAAM+L,kBAAoB/L,EAAMgM,OAGlChM,EAAMwL,SAAU,EAGPjC,EAAK/I,cAAc,QAAU,GACtC+I,EAAK6E,QAET,CACA,SAASC,EAAiB9E,GACxBU,EAAM,4BACNV,EAAK9Z,KAAK,EACZ,CAuBA,SAAS6e,EAAQpD,EAAQlL,GACvBiK,EAAM,SAAUjK,EAAM0L,SACjB1L,EAAM0L,SACTR,EAAOzb,KAAK,GAEduQ,EAAM+L,iBAAkB,EACxBb,EAAO5L,KAAK,UACZ2O,EAAK/C,GACDlL,EAAMwL,UAAYxL,EAAM0L,SAASR,EAAOzb,KAAK,EACnD,CAWA,SAASwe,EAAK/C,GACZ,IAAIlL,EAAQkL,EAAOxB,eAEnB,IADAO,EAAM,OAAQjK,EAAMwL,SACbxL,EAAMwL,SAA6B,OAAlBN,EAAOzb,SACjC,CAmHA,SAAS8e,EAAS1f,EAAGmR,GAEnB,OAAqB,IAAjBA,EAAM3W,OAAqB,MAE3B2W,EAAMoL,WAAYzW,EAAMqL,EAAMvT,OAAO+U,SAAkB3S,GAAKA,GAAKmR,EAAM3W,QAEtDsL,EAAfqL,EAAMsM,QAAetM,EAAMvT,OAAO5C,KAAK,IAAqC,IAAxBmW,EAAMvT,OAAOpD,OAAoB2W,EAAMvT,OAAOqK,QAAmBkJ,EAAMvT,OAAO4G,OAAO2M,EAAM3W,QACnJ2W,EAAMvT,OAAOohB,SAGblZ,EAAMqL,EAAMvT,OAAO+hB,QAAQ3f,EAAGmR,EAAMsM,SAE/B3X,GATP,IAAIA,CAUN,CACA,SAAS8Z,EAAYvD,GACnB,IAAIlL,EAAQkL,EAAOxB,eACnBO,EAAM,cAAejK,EAAMyL,YACtBzL,EAAMyL,aACTzL,EAAMqJ,OAAQ,EACdvE,QAAQmB,SAASyI,EAAe1O,EAAOkL,GAE3C,CACA,SAASwD,EAAc1O,EAAOkL,GAI5B,GAHAjB,EAAM,gBAAiBjK,EAAMyL,WAAYzL,EAAM3W,SAG1C2W,EAAMyL,YAA+B,IAAjBzL,EAAM3W,SAC7B2W,EAAMyL,YAAa,EACnBP,EAAOhC,UAAW,EAClBgC,EAAO5L,KAAK,OACRU,EAAMkM,aAAa,CAGrB,IAAIyC,EAASzD,EAAO9B,iBACfuF,GAAUA,EAAOzC,aAAeyC,EAAOC,WAC1C1D,EAAOsB,SAEX,CAEJ,CASA,SAAStiB,EAAQ2kB,EAAI1b,GACnB,IAAK,IAAIxK,EAAI,EAAGmmB,EAAID,EAAGxlB,OAAQV,EAAImmB,EAAGnmB,IACpC,GAAIkmB,EAAGlmB,KAAOwK,EAAG,OAAOxK,EAE1B,OAAQ,CACV,CA1pBAkgB,EAASxd,UAAUoE,KAAO,SAAUZ,GAClCob,EAAM,OAAQpb,GACdA,EAAIuB,SAASvB,EAAG,IAChB,IAAImR,EAAQ3R,KAAKqb,eACbqF,EAAQlgB,EAMZ,GALU,IAANA,IAASmR,EAAM6L,iBAAkB,GAK3B,IAANhd,GAAWmR,EAAM4L,gBAA0C,IAAxB5L,EAAMwJ,cAAsBxJ,EAAM3W,QAAU2W,EAAMwJ,cAAgBxJ,EAAM3W,OAAS,IAAM2W,EAAMqJ,OAGlI,OAFAY,EAAM,qBAAsBjK,EAAM3W,OAAQ2W,EAAMqJ,OAC3B,IAAjBrJ,EAAM3W,QAAgB2W,EAAMqJ,MAAOoF,EAAYpgB,MAAWwe,EAAaxe,MACpE,KAKT,GAAU,KAHVQ,EAAIkf,EAAclf,EAAGmR,KAGNA,EAAMqJ,MAEnB,OADqB,IAAjBrJ,EAAM3W,QAAcolB,EAAYpgB,MAC7B,KA0BT,IA2BIsG,EA3BAqa,EAAShP,EAAM4L,aA6CnB,OA5CA3B,EAAM,gBAAiB+E,IAGF,IAAjBhP,EAAM3W,QAAgB2W,EAAM3W,OAASwF,EAAImR,EAAMwJ,gBAEjDS,EAAM,6BADN+E,GAAS,GAMPhP,EAAMqJ,OAASrJ,EAAM0L,QAEvBzB,EAAM,mBADN+E,GAAS,GAEAA,IACT/E,EAAM,WACNjK,EAAM0L,SAAU,EAChB1L,EAAM2L,MAAO,EAEQ,IAAjB3L,EAAM3W,SAAc2W,EAAM4L,cAAe,GAE7Cvd,KAAKke,MAAMvM,EAAMwJ,eACjBxJ,EAAM2L,MAAO,EAGR3L,EAAM0L,UAAS7c,EAAIkf,EAAcgB,EAAO/O,KAInC,QADDrL,EAAP9F,EAAI,EAAS0f,EAAS1f,EAAGmR,GAAkB,OAE7CA,EAAM4L,aAAe5L,EAAM3W,QAAU2W,EAAMwJ,cAC3C3a,EAAI,IAEJmR,EAAM3W,QAAUwF,EAChBmR,EAAMoM,WAAa,GAEA,IAAjBpM,EAAM3W,SAGH2W,EAAMqJ,QAAOrJ,EAAM4L,cAAe,GAGnCmD,IAAUlgB,GAAKmR,EAAMqJ,OAAOoF,EAAYpgB,OAElC,OAARsG,GAActG,KAAKiR,KAAK,OAAQ3K,GAC7BA,CACT,EA6GAkU,EAASxd,UAAUkhB,MAAQ,SAAU1d,GACnCmc,EAAe3c,KAAM,IAAIyc,EAA2B,WACtD,EACAjC,EAASxd,UAAU4jB,KAAO,SAAUC,EAAMC,GACxC,IAAIrT,EAAMzN,KACN2R,EAAQ3R,KAAKqb,eACjB,OAAQ1J,EAAMuL,YACZ,KAAK,EACHvL,EAAMsL,MAAQ4D,EACd,MACF,KAAK,EACHlP,EAAMsL,MAAQ,CAACtL,EAAMsL,MAAO4D,GAC5B,MACF,QACElP,EAAMsL,MAAM5hB,KAAKwlB,GAGrBlP,EAAMuL,YAAc,EACpBtB,EAAM,wBAAyBjK,EAAMuL,WAAY4D,GACjD,IACIC,EADUD,IAA6B,IAAjBA,EAAS/kB,KAAkB8kB,IAASpK,QAAQuK,QAAUH,IAASpK,QAAQwK,OACrEC,EAARpG,EAYpB,SAASA,IACPc,EAAM,SACNiF,EAAK9kB,KACP,CAdI4V,EAAMyL,WAAY3G,QAAQmB,SAASmJ,GAAYtT,EAAI8B,KAAK,MAAOwR,GACnEF,EAAK5Q,GAAG,UACR,SAASkR,EAAStG,EAAUuG,GAC1BxF,EAAM,YACFf,IAAapN,GACX2T,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EAkB5BzF,EAAM,WAENiF,EAAKhR,eAAe,QAASyR,GAC7BT,EAAKhR,eAAe,SAAU0R,GAC9BV,EAAKhR,eAAe,QAAS2R,GAC7BX,EAAKhR,eAAe,QAAS4R,GAC7BZ,EAAKhR,eAAe,SAAUsR,GAC9B1T,EAAIoC,eAAe,MAAOiL,GAC1BrN,EAAIoC,eAAe,MAAOqR,GAC1BzT,EAAIoC,eAAe,OAAQ6R,GAC3BC,GAAY,GAORhQ,EAAMoM,YAAgB8C,EAAK9F,iBAAkB8F,EAAK9F,eAAe6G,WAAYJ,IA/BnF,IAUA,IAAIA,EAgFN,SAAqB/T,GACnB,OAAO,WACL,IAAIkE,EAAQlE,EAAI4N,eAChBO,EAAM,cAAejK,EAAMoM,YACvBpM,EAAMoM,YAAYpM,EAAMoM,aACH,IAArBpM,EAAMoM,YAAoBlC,EAAgBpO,EAAK,UACjDkE,EAAMwL,SAAU,EAChByC,EAAKnS,GAET,CACF,CA1FgBoU,CAAYpU,GAC1BoT,EAAK5Q,GAAG,QAASuR,GACjB,IAAIG,GAAY,EAsBhB,SAASD,EAAOhG,GACdE,EAAM,UACN,IAAItV,EAAMua,EAAKljB,MAAM+d,GACrBE,EAAM,aAActV,IACR,IAARA,KAKwB,IAArBqL,EAAMuL,YAAoBvL,EAAMsL,QAAU4D,GAAQlP,EAAMuL,WAAa,IAAqC,IAAhCrhB,EAAQ8V,EAAMsL,MAAO4D,MAAkBc,IACpH/F,EAAM,8BAA+BjK,EAAMoM,YAC3CpM,EAAMoM,cAERtQ,EAAIqU,QAER,CAIA,SAASL,EAAQ9O,GACfiJ,EAAM,UAAWjJ,GACjBuO,IACAL,EAAKhR,eAAe,QAAS4R,GACU,IAAnC5F,EAAgBgF,EAAM,UAAgBlE,EAAekE,EAAMlO,EACjE,CAMA,SAAS2O,IACPT,EAAKhR,eAAe,SAAU0R,GAC9BL,GACF,CAEA,SAASK,IACP3F,EAAM,YACNiF,EAAKhR,eAAe,QAASyR,GAC7BJ,GACF,CAEA,SAASA,IACPtF,EAAM,UACNnO,EAAIyT,OAAOL,EACb,CAUA,OAvDApT,EAAIwC,GAAG,OAAQyR,GAniBjB,SAAyBlS,EAASuS,EAAOjU,GAGvC,GAAuC,mBAA5B0B,EAAQuD,gBAAgC,OAAOvD,EAAQuD,gBAAgBgP,EAAOjU,GAMpF0B,EAAQW,SAAYX,EAAQW,QAAQ4R,GAAuCrmB,MAAMuD,QAAQuQ,EAAQW,QAAQ4R,IAASvS,EAAQW,QAAQ4R,GAAO7Q,QAAQpD,GAAS0B,EAAQW,QAAQ4R,GAAS,CAACjU,EAAI0B,EAAQW,QAAQ4R,IAA5JvS,EAAQS,GAAG8R,EAAOjU,EACrE,CAqjBEiF,CAAgB8N,EAAM,QAASY,GAO/BZ,EAAKtR,KAAK,QAAS+R,GAMnBT,EAAKtR,KAAK,SAAUgS,GAOpBV,EAAK5P,KAAK,OAAQxD,GAGbkE,EAAMwL,UACTvB,EAAM,eACNnO,EAAIsS,UAECc,CACT,EAYArG,EAASxd,UAAUkkB,OAAS,SAAUL,GACpC,IAAIlP,EAAQ3R,KAAKqb,eACb+F,EAAa,CACfC,YAAY,GAId,GAAyB,IAArB1P,EAAMuL,WAAkB,OAAOld,KAGnC,GAAyB,IAArB2R,EAAMuL,WAER,OAAI2D,GAAQA,IAASlP,EAAMsL,QACtB4D,IAAMA,EAAOlP,EAAMsL,OAGxBtL,EAAMsL,MAAQ,KACdtL,EAAMuL,WAAa,EACnBvL,EAAMwL,SAAU,EACZ0D,GAAMA,EAAK5P,KAAK,SAAUjR,KAAMohB,IAPKphB,KAa3C,IAAK6gB,EAAM,CAET,IAAImB,EAAQrQ,EAAMsL,MACdtiB,EAAMgX,EAAMuL,WAChBvL,EAAMsL,MAAQ,KACdtL,EAAMuL,WAAa,EACnBvL,EAAMwL,SAAU,EAChB,IAAK,IAAI7iB,EAAI,EAAGA,EAAIK,EAAKL,IAAK0nB,EAAM1nB,GAAG2W,KAAK,SAAUjR,KAAM,CAC1DqhB,YAAY,IAEd,OAAOrhB,IACT,CAGA,IAAIoT,EAAQvX,EAAQ8V,EAAMsL,MAAO4D,GACjC,OAAe,IAAXzN,IACJzB,EAAMsL,MAAMgF,OAAO7O,EAAO,GAC1BzB,EAAMuL,YAAc,EACK,IAArBvL,EAAMuL,aAAkBvL,EAAMsL,MAAQtL,EAAMsL,MAAM,IACtD4D,EAAK5P,KAAK,SAAUjR,KAAMohB,IAJDphB,IAM3B,EAIAwa,EAASxd,UAAUiT,GAAK,SAAUiS,EAAIpU,GACpC,IAAI9K,EAAM8Y,EAAO9e,UAAUiT,GAAGnP,KAAKd,KAAMkiB,EAAIpU,GACzC6D,EAAQ3R,KAAKqb,eAqBjB,MApBW,SAAP6G,GAGFvQ,EAAM8L,kBAAoBzd,KAAKmS,cAAc,YAAc,GAGrC,IAAlBR,EAAMwL,SAAmBnd,KAAK+f,UAClB,aAAPmC,IACJvQ,EAAMyL,YAAezL,EAAM8L,oBAC9B9L,EAAM8L,kBAAoB9L,EAAM4L,cAAe,EAC/C5L,EAAMwL,SAAU,EAChBxL,EAAM6L,iBAAkB,EACxB5B,EAAM,cAAejK,EAAM3W,OAAQ2W,EAAM0L,SACrC1L,EAAM3W,OACRwjB,EAAaxe,MACH2R,EAAM0L,SAChB5G,QAAQmB,SAASoI,EAAkBhgB,QAIlCgD,CACT,EACAwX,EAASxd,UAAU8V,YAAc0H,EAASxd,UAAUiT,GACpDuK,EAASxd,UAAU6S,eAAiB,SAAUqS,EAAIpU,GAChD,IAAI9K,EAAM8Y,EAAO9e,UAAU6S,eAAe/O,KAAKd,KAAMkiB,EAAIpU,GAUzD,MATW,aAAPoU,GAOFzL,QAAQmB,SAASkI,EAAyB9f,MAErCgD,CACT,EACAwX,EAASxd,UAAUwW,mBAAqB,SAAU0O,GAChD,IAAIlf,EAAM8Y,EAAO9e,UAAUwW,mBAAmB7P,MAAM3D,KAAMN,WAU1D,MATW,aAAPwiB,QAA4BpjB,IAAPojB,GAOvBzL,QAAQmB,SAASkI,EAAyB9f,MAErCgD,CACT,EAqBAwX,EAASxd,UAAU+iB,OAAS,WAC1B,IAAIpO,EAAQ3R,KAAKqb,eAUjB,OATK1J,EAAMwL,UACTvB,EAAM,UAINjK,EAAMwL,SAAWxL,EAAM8L,kBAM3B,SAAgBZ,EAAQlL,GACjBA,EAAM+L,kBACT/L,EAAM+L,iBAAkB,EACxBjH,QAAQmB,SAASqI,EAASpD,EAAQlL,GAEtC,CAVIoO,CAAO/f,KAAM2R,IAEfA,EAAMgM,QAAS,EACR3d,IACT,EAiBAwa,EAASxd,UAAU8kB,MAAQ,WAQzB,OAPAlG,EAAM,wBAAyB5b,KAAKqb,eAAe8B,UACf,IAAhCnd,KAAKqb,eAAe8B,UACtBvB,EAAM,SACN5b,KAAKqb,eAAe8B,SAAU,EAC9Bnd,KAAKiR,KAAK,UAEZjR,KAAKqb,eAAesC,QAAS,EACtB3d,IACT,EAUAwa,EAASxd,UAAUmlB,KAAO,SAAUtF,GAClC,IAAIuF,EAAQpiB,KACR2R,EAAQ3R,KAAKqb,eACbsC,GAAS,EAwBb,IAAK,IAAIrjB,KAvBTuiB,EAAO5M,GAAG,OAAO,WAEf,GADA2L,EAAM,eACFjK,EAAMsM,UAAYtM,EAAMqJ,MAAO,CACjC,IAAIU,EAAQ/J,EAAMsM,QAAQliB,MACtB2f,GAASA,EAAM1gB,QAAQonB,EAAM/mB,KAAKqgB,EACxC,CACA0G,EAAM/mB,KAAK,KACb,IACAwhB,EAAO5M,GAAG,QAAQ,SAAUyL,GAC1BE,EAAM,gBACFjK,EAAMsM,UAASvC,EAAQ/J,EAAMsM,QAAQtgB,MAAM+d,IAG3C/J,EAAMoL,YAAc,MAACrB,IAAyD/J,EAAMoL,YAAgBrB,GAAUA,EAAM1gB,UAC9GonB,EAAM/mB,KAAKqgB,KAEnBiC,GAAS,EACTd,EAAOiF,SAEX,IAIcjF,OACI/d,IAAZkB,KAAK1F,IAAyC,mBAAduiB,EAAOviB,KACzC0F,KAAK1F,GAAK,SAAoBqgB,GAC5B,OAAO,WACL,OAAOkC,EAAOlC,GAAQhX,MAAMkZ,EAAQnd,UACtC,CACF,CAJU,CAIRpF,IAKN,IAAK,IAAIkG,EAAI,EAAGA,EAAIoc,EAAa5hB,OAAQwF,IACvCqc,EAAO5M,GAAG2M,EAAapc,GAAIR,KAAKiR,KAAKY,KAAK7R,KAAM4c,EAAapc,KAY/D,OAPAR,KAAKke,MAAQ,SAAU1d,GACrBob,EAAM,gBAAiBpb,GACnBmd,IACFA,GAAS,EACTd,EAAOkD,SAEX,EACO/f,IACT,EACsB,mBAAX3D,SACTme,EAASxd,UAAUX,OAAOgmB,eAAiB,WAIzC,YAH0CvjB,IAAtCqd,IACFA,EAAoC,EAAQ,OAEvCA,EAAkCnc,KAC3C,GAEFlD,OAAOuH,eAAemW,EAASxd,UAAW,wBAAyB,CAIjEsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAKqb,eAAeF,aAC7B,IAEFre,OAAOuH,eAAemW,EAASxd,UAAW,iBAAkB,CAI1DsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAKqb,gBAAkBrb,KAAKqb,eAAejd,MACpD,IAEFtB,OAAOuH,eAAemW,EAASxd,UAAW,kBAAmB,CAI3DsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAKqb,eAAe8B,OAC7B,EACAhY,IAAK,SAAawM,GACZ3R,KAAKqb,iBACPrb,KAAKqb,eAAe8B,QAAUxL,EAElC,IAIF6I,EAAS8H,UAAYpC,EACrBpjB,OAAOuH,eAAemW,EAASxd,UAAW,iBAAkB,CAI1DsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAKqb,eAAergB,MAC7B,IA+CoB,mBAAXqB,SACTme,EAASnd,KAAO,SAAUklB,EAAUC,GAIlC,YAHa1jB,IAATzB,IACFA,EAAO,EAAQ,QAEVA,EAAKmd,EAAU+H,EAAUC,EAClC,uCC17BFrU,EAAOtU,QAAU2hB,EACjB,IAAIe,EAAiB,WACnBE,EAA6BF,EAAeE,2BAC5CgG,EAAwBlG,EAAekG,sBACvCC,EAAqCnG,EAAemG,mCACpDC,EAA8BpG,EAAeoG,4BAC3CpI,EAAS,EAAQ,OAErB,SAASqI,EAAejQ,EAAIzT,GAC1B,IAAI2jB,EAAK7iB,KAAK8iB,gBACdD,EAAGE,cAAe,EAClB,IAAIpK,EAAKkK,EAAGG,QACZ,GAAW,OAAPrK,EACF,OAAO3Y,KAAKiR,KAAK,QAAS,IAAIwR,GAEhCI,EAAGI,WAAa,KAChBJ,EAAGG,QAAU,KACD,MAAR9jB,GAEFc,KAAK3E,KAAK6D,GACZyZ,EAAGhG,GACH,IAAIuQ,EAAKljB,KAAKqb,eACd6H,EAAG7F,SAAU,GACT6F,EAAG3F,cAAgB2F,EAAGloB,OAASkoB,EAAG/H,gBACpCnb,KAAKke,MAAMgF,EAAG/H,cAElB,CACA,SAASK,EAAU1F,GACjB,KAAM9V,gBAAgBwb,GAAY,OAAO,IAAIA,EAAU1F,GACvDyE,EAAOzZ,KAAKd,KAAM8V,GAClB9V,KAAK8iB,gBAAkB,CACrBF,eAAgBA,EAAe/Q,KAAK7R,MACpCmjB,eAAe,EACfJ,cAAc,EACdC,QAAS,KACTC,WAAY,KACZG,cAAe,MAIjBpjB,KAAKqb,eAAekC,cAAe,EAKnCvd,KAAKqb,eAAeiC,MAAO,EACvBxH,IAC+B,mBAAtBA,EAAQuN,YAA0BrjB,KAAKyb,WAAa3F,EAAQuN,WAC1C,mBAAlBvN,EAAQwN,QAAsBtjB,KAAKujB,OAASzN,EAAQwN,QAIjEtjB,KAAKiQ,GAAG,YAAauT,EACvB,CACA,SAASA,IACP,IAAIpB,EAAQpiB,KACe,mBAAhBA,KAAKujB,QAA0BvjB,KAAKqb,eAAeC,UAK5DmI,EAAKzjB,KAAM,KAAM,MAJjBA,KAAKujB,QAAO,SAAU5Q,EAAIzT,GACxBukB,EAAKrB,EAAOzP,EAAIzT,EAClB,GAIJ,CAiDA,SAASukB,EAAK5G,EAAQlK,EAAIzT,GACxB,GAAIyT,EAAI,OAAOkK,EAAO5L,KAAK,QAAS0B,GAQpC,GAPY,MAARzT,GAEF2d,EAAOxhB,KAAK6D,GAKV2d,EAAO9B,eAAe/f,OAAQ,MAAM,IAAI2nB,EAC5C,GAAI9F,EAAOiG,gBAAgBC,aAAc,MAAM,IAAIL,EACnD,OAAO7F,EAAOxhB,KAAK,KACrB,CArHA,EAAQ,MAAR,CAAoBmgB,EAAWjB,GAyD/BiB,EAAUxe,UAAU3B,KAAO,SAAUqgB,EAAOle,GAE1C,OADAwC,KAAK8iB,gBAAgBK,eAAgB,EAC9B5I,EAAOvd,UAAU3B,KAAKyF,KAAKd,KAAM0b,EAAOle,EACjD,EAYAge,EAAUxe,UAAUye,WAAa,SAAUC,EAAOle,EAAUmb,GAC1DA,EAAG,IAAI8D,EAA2B,gBACpC,EACAjB,EAAUxe,UAAU0mB,OAAS,SAAUhI,EAAOle,EAAUmb,GACtD,IAAIkK,EAAK7iB,KAAK8iB,gBAId,GAHAD,EAAGG,QAAUrK,EACbkK,EAAGI,WAAavH,EAChBmH,EAAGO,cAAgB5lB,GACdqlB,EAAGE,aAAc,CACpB,IAAIG,EAAKljB,KAAKqb,gBACVwH,EAAGM,eAAiBD,EAAG3F,cAAgB2F,EAAGloB,OAASkoB,EAAG/H,gBAAenb,KAAKke,MAAMgF,EAAG/H,cACzF,CACF,EAKAK,EAAUxe,UAAUkhB,MAAQ,SAAU1d,GACpC,IAAIqiB,EAAK7iB,KAAK8iB,gBACQ,OAAlBD,EAAGI,YAAwBJ,EAAGE,aAMhCF,EAAGM,eAAgB,GALnBN,EAAGE,cAAe,EAClB/iB,KAAKyb,WAAWoH,EAAGI,WAAYJ,EAAGO,cAAeP,EAAGD,gBAMxD,EACApH,EAAUxe,UAAUohB,SAAW,SAAUhQ,EAAKuK,GAC5C4B,EAAOvd,UAAUohB,SAAStd,KAAKd,KAAMoO,GAAK,SAAUuV,GAClDhL,EAAGgL,EACL,GACF,sCCzIA,SAASC,EAAcjS,GACrB,IAAIyQ,EAAQpiB,KACZA,KAAKuf,KAAO,KACZvf,KAAK6jB,MAAQ,KACb7jB,KAAK8jB,OAAS,YA6iBhB,SAAwBC,EAASpS,GAC/B,IAAIkS,EAAQE,EAAQF,MAEpB,IADAE,EAAQF,MAAQ,KACTA,GAAO,CACZ,IAAIlL,EAAKkL,EAAMG,SACfrS,EAAMsS,YACNtL,EAljBAuL,WAmjBAL,EAAQA,EAAMtE,IAChB,CAGA5N,EAAMwS,mBAAmB5E,KAAOwE,CAClC,CAxjBIG,CAAe9B,EAAOzQ,EACxB,CACF,CAIA,IAAI4I,EAvBJpM,EAAOtU,QAAU4gB,EA0BjBA,EAAS2J,cAAgBA,EAGzB,IA+JIC,EA/JAC,EAAe,CACjBC,UAAW,EAAQ,QAKjBzI,EAAS,EAAQ,OAGjBxf,EAAS,gBACTyf,QAAmC,IAAX,EAAArD,EAAyB,EAAAA,EAA2B,oBAAXD,OAAyBA,OAAyB,oBAATyC,KAAuBA,KAAO,CAAC,GAAGzf,YAAc,WAAa,EAOvK4gB,EAAc,EAAQ,OAExBC,EADa,EAAQ,OACOA,iBAC1BC,EAAiB,WACnB3P,EAAuB2P,EAAe3P,qBACtC6P,EAA6BF,EAAeE,2BAC5CgG,EAAwBlG,EAAekG,sBACvC+B,EAAyBjI,EAAeiI,uBACxCC,EAAuBlI,EAAekI,qBACtCC,EAAyBnI,EAAemI,uBACxCC,EAA6BpI,EAAeoI,2BAC5CC,EAAuBrI,EAAeqI,qBACpCjI,EAAiBN,EAAYM,eAEjC,SAASkI,IAAO,CAChB,SAAST,EAActO,EAAS+G,EAAQC,GACtCvC,EAASA,GAAU,EAAQ,OAC3BzE,EAAUA,GAAW,CAAC,EAOE,kBAAbgH,IAAwBA,EAAWD,aAAkBtC,GAIhEva,KAAK+c,aAAejH,EAAQiH,WACxBD,IAAU9c,KAAK+c,WAAa/c,KAAK+c,cAAgBjH,EAAQgP,oBAK7D9kB,KAAKmb,cAAgBmB,EAAiBtc,KAAM8V,EAAS,wBAAyBgH,GAG9E9c,KAAK+kB,aAAc,EAGnB/kB,KAAK4hB,WAAY,EAEjB5hB,KAAKglB,QAAS,EAEdhlB,KAAKgb,OAAQ,EAEbhb,KAAKugB,UAAW,EAGhBvgB,KAAKsb,WAAY,EAKjB,IAAI2J,GAAqC,IAA1BnP,EAAQoP,cACvBllB,KAAKklB,eAAiBD,EAKtBjlB,KAAK8d,gBAAkBhI,EAAQgI,iBAAmB,OAKlD9d,KAAKhF,OAAS,EAGdgF,KAAKmlB,SAAU,EAGfnlB,KAAKolB,OAAS,EAMdplB,KAAKsd,MAAO,EAKZtd,KAAKqlB,kBAAmB,EAGxBrlB,KAAKslB,QAAU,SAAU3S,IAsQ3B,SAAiBkK,EAAQlK,GACvB,IAAIhB,EAAQkL,EAAO9B,eACfuC,EAAO3L,EAAM2L,KACb3E,EAAKhH,EAAMqR,QACf,GAAkB,mBAAPrK,EAAmB,MAAM,IAAI8J,EAExC,GAZF,SAA4B9Q,GAC1BA,EAAMwT,SAAU,EAChBxT,EAAMqR,QAAU,KAChBrR,EAAM3W,QAAU2W,EAAM4T,SACtB5T,EAAM4T,SAAW,CACnB,CAMEC,CAAmB7T,GACfgB,GAlCN,SAAsBkK,EAAQlL,EAAO2L,EAAM3K,EAAIgG,KAC3ChH,EAAMsS,UACJ3G,GAGF7G,QAAQmB,SAASe,EAAIhG,GAGrB8D,QAAQmB,SAAS6N,EAAa5I,EAAQlL,GACtCkL,EAAO9B,eAAe2K,cAAe,EACrC/I,EAAeE,EAAQlK,KAIvBgG,EAAGhG,GACHkK,EAAO9B,eAAe2K,cAAe,EACrC/I,EAAeE,EAAQlK,GAGvB8S,EAAY5I,EAAQlL,GAExB,CAaUgU,CAAa9I,EAAQlL,EAAO2L,EAAM3K,EAAIgG,OAAS,CAErD,IAAI4H,EAAWqF,EAAWjU,IAAUkL,EAAOvB,UACtCiF,GAAa5O,EAAMyT,QAAWzT,EAAM0T,mBAAoB1T,EAAMkU,iBACjEC,EAAYjJ,EAAQlL,GAElB2L,EACF7G,QAAQmB,SAASmO,EAAYlJ,EAAQlL,EAAO4O,EAAU5H,GAEtDoN,EAAWlJ,EAAQlL,EAAO4O,EAAU5H,EAExC,CACF,CAvRI2M,CAAQzI,EAAQlK,EAClB,EAGA3S,KAAKgjB,QAAU,KAGfhjB,KAAKulB,SAAW,EAChBvlB,KAAK6lB,gBAAkB,KACvB7lB,KAAKgmB,oBAAsB,KAI3BhmB,KAAKikB,UAAY,EAIjBjkB,KAAKimB,aAAc,EAGnBjmB,KAAK0lB,cAAe,EAGpB1lB,KAAK4d,WAAkC,IAAtB9H,EAAQ8H,UAGzB5d,KAAK6d,cAAgB/H,EAAQ+H,YAG7B7d,KAAKkmB,qBAAuB,EAI5BlmB,KAAKmkB,mBAAqB,IAAIP,EAAc5jB,KAC9C,CAqCA,SAASya,EAAS3E,GAahB,IAAIgH,EAAW9c,gBAZfua,EAASA,GAAU,EAAQ,QAa3B,IAAKuC,IAAauH,EAAgBvjB,KAAK2Z,EAAUza,MAAO,OAAO,IAAIya,EAAS3E,GAC5E9V,KAAK+a,eAAiB,IAAIqJ,EAActO,EAAS9V,KAAM8c,GAGvD9c,KAAKmM,UAAW,EACZ2J,IAC2B,mBAAlBA,EAAQnY,QAAsBqC,KAAK0jB,OAAS5N,EAAQnY,OACjC,mBAAnBmY,EAAQqQ,SAAuBnmB,KAAKomB,QAAUtQ,EAAQqQ,QAClC,mBAApBrQ,EAAQqI,UAAwBne,KAAKoe,SAAWtI,EAAQqI,SACtC,mBAAlBrI,EAAQuQ,QAAsBrmB,KAAKsmB,OAASxQ,EAAQuQ,QAEjEvK,EAAOhb,KAAKd,KACd,CAgIA,SAASumB,EAAQ1J,EAAQlL,EAAOwU,EAAQxrB,EAAK+gB,EAAOle,EAAUmb,GAC5DhH,EAAM4T,SAAW5qB,EACjBgX,EAAMqR,QAAUrK,EAChBhH,EAAMwT,SAAU,EAChBxT,EAAM2L,MAAO,EACT3L,EAAM2J,UAAW3J,EAAM2T,QAAQ,IAAIb,EAAqB,UAAmB0B,EAAQtJ,EAAOuJ,QAAQ1K,EAAO/J,EAAM2T,SAAczI,EAAO6G,OAAOhI,EAAOle,EAAUmU,EAAM2T,SACtK3T,EAAM2L,MAAO,CACf,CAgDA,SAASyI,EAAWlJ,EAAQlL,EAAO4O,EAAU5H,GACtC4H,GASP,SAAsB1D,EAAQlL,GACP,IAAjBA,EAAM3W,QAAgB2W,EAAMiQ,YAC9BjQ,EAAMiQ,WAAY,EAClB/E,EAAO5L,KAAK,SAEhB,CAdiBuV,CAAa3J,EAAQlL,GACpCA,EAAMsS,YACNtL,IACA8M,EAAY5I,EAAQlL,EACtB,CAaA,SAASmU,EAAYjJ,EAAQlL,GAC3BA,EAAM0T,kBAAmB,EACzB,IAAIxB,EAAQlS,EAAMkU,gBAClB,GAAIhJ,EAAOuJ,SAAWvC,GAASA,EAAMtE,KAAM,CAEzC,IAAIkB,EAAI9O,EAAMuU,qBACV9nB,EAAS,IAAI1C,MAAM+kB,GACnBgG,EAAS9U,EAAMwS,mBACnBsC,EAAO5C,MAAQA,EAGf,IAFA,IAAIxS,EAAQ,EACRqV,GAAa,EACV7C,GACLzlB,EAAOiT,GAASwS,EACXA,EAAM8C,QAAOD,GAAa,GAC/B7C,EAAQA,EAAMtE,KACdlO,GAAS,EAEXjT,EAAOsoB,WAAaA,EACpBH,EAAQ1J,EAAQlL,GAAO,EAAMA,EAAM3W,OAAQoD,EAAQ,GAAIqoB,EAAO3C,QAI9DnS,EAAMsS,YACNtS,EAAMqU,oBAAsB,KACxBS,EAAOlH,MACT5N,EAAMwS,mBAAqBsC,EAAOlH,KAClCkH,EAAOlH,KAAO,MAEd5N,EAAMwS,mBAAqB,IAAIP,EAAcjS,GAE/CA,EAAMuU,qBAAuB,CAC/B,KAAO,CAEL,KAAOrC,GAAO,CACZ,IAAInI,EAAQmI,EAAMnI,MACdle,EAAWqmB,EAAMrmB,SACjBmb,EAAKkL,EAAMG,SASf,GAPAuC,EAAQ1J,EAAQlL,GAAO,EADbA,EAAMoL,WAAa,EAAIrB,EAAM1gB,OACJ0gB,EAAOle,EAAUmb,GACpDkL,EAAQA,EAAMtE,KACd5N,EAAMuU,uBAKFvU,EAAMwT,QACR,KAEJ,CACc,OAAVtB,IAAgBlS,EAAMqU,oBAAsB,KAClD,CACArU,EAAMkU,gBAAkBhC,EACxBlS,EAAM0T,kBAAmB,CAC3B,CAoCA,SAASO,EAAWjU,GAClB,OAAOA,EAAMqT,QAA2B,IAAjBrT,EAAM3W,QAA0C,OAA1B2W,EAAMkU,kBAA6BlU,EAAM4O,WAAa5O,EAAMwT,OAC3G,CACA,SAASyB,EAAU/J,EAAQlL,GACzBkL,EAAOyJ,QAAO,SAAUlY,GACtBuD,EAAMsS,YACF7V,GACFuO,EAAeE,EAAQzO,GAEzBuD,EAAMsU,aAAc,EACpBpJ,EAAO5L,KAAK,aACZwU,EAAY5I,EAAQlL,EACtB,GACF,CAaA,SAAS8T,EAAY5I,EAAQlL,GAC3B,IAAIkV,EAAOjB,EAAWjU,GACtB,GAAIkV,IAdN,SAAmBhK,EAAQlL,GACpBA,EAAMsU,aAAgBtU,EAAMoT,cACF,mBAAlBlI,EAAOyJ,QAA0B3U,EAAM2J,WAKhD3J,EAAMsU,aAAc,EACpBpJ,EAAO5L,KAAK,eALZU,EAAMsS,YACNtS,EAAMoT,aAAc,EACpBtO,QAAQmB,SAASgP,EAAW/J,EAAQlL,IAM1C,CAII6R,CAAU3G,EAAQlL,GACM,IAApBA,EAAMsS,YACRtS,EAAM4O,UAAW,EACjB1D,EAAO5L,KAAK,UACRU,EAAMkM,cAAa,CAGrB,IAAIiJ,EAASjK,EAAOxB,iBACfyL,GAAUA,EAAOjJ,aAAeiJ,EAAO1J,aAC1CP,EAAOsB,SAEX,CAGJ,OAAO0I,CACT,CAxfA,EAAQ,MAAR,CAAoBpM,EAAUqB,GA4G9BsI,EAAcpnB,UAAUoe,UAAY,WAGlC,IAFA,IAAI2L,EAAU/mB,KAAK6lB,gBACftf,EAAM,GACHwgB,GACLxgB,EAAIlL,KAAK0rB,GACTA,EAAUA,EAAQxH,KAEpB,OAAOhZ,CACT,EACA,WACE,IACEzJ,OAAOuH,eAAe+f,EAAcpnB,UAAW,SAAU,CACvDuH,IAAK+f,EAAaC,WAAU,WAC1B,OAAOvkB,KAAKob,WACd,GAAG,6EAAmF,YAE1F,CAAE,MAAO/M,GAAI,CACd,CARD,GAasB,mBAAXhS,QAAyBA,OAAO2qB,aAAiE,mBAA3CjY,SAAS/R,UAAUX,OAAO2qB,cACzF3C,EAAkBtV,SAAS/R,UAAUX,OAAO2qB,aAC5ClqB,OAAOuH,eAAeoW,EAAUpe,OAAO2qB,YAAa,CAClD1pB,MAAO,SAAe2pB,GACpB,QAAI5C,EAAgBvjB,KAAKd,KAAMinB,IAC3BjnB,OAASya,GACNwM,GAAUA,EAAOlM,0BAA0BqJ,CACpD,KAGFC,EAAkB,SAAyB4C,GACzC,OAAOA,aAAkBjnB,IAC3B,EA+BFya,EAASzd,UAAU4jB,KAAO,WACxBjE,EAAe3c,KAAM,IAAIwkB,EAC3B,EAyBA/J,EAASzd,UAAUW,MAAQ,SAAU+d,EAAOle,EAAUmb,GACpD,IAzNqBha,EAyNjBgT,EAAQ3R,KAAK+a,eACbzU,GAAM,EACNqgB,GAAShV,EAAMoL,aA3NEpe,EA2N0B+c,EA1NxCpf,EAAOsC,SAASD,IAAQA,aAAeod,GAwO9C,OAbI4K,IAAUrqB,EAAOsC,SAAS8c,KAC5BA,EAhOJ,SAA6BA,GAC3B,OAAOpf,EAAOe,KAAKqe,EACrB,CA8NYkD,CAAoBlD,IAEN,mBAAble,IACTmb,EAAKnb,EACLA,EAAW,MAETmpB,EAAOnpB,EAAW,SAAmBA,IAAUA,EAAWmU,EAAMmM,iBAClD,mBAAPnF,IAAmBA,EAAKkM,GAC/BlT,EAAMqT,OArCZ,SAAuBnI,EAAQlE,GAC7B,IAAIhG,EAAK,IAAIgS,EAEbhI,EAAeE,EAAQlK,GACvB8D,QAAQmB,SAASe,EAAIhG,EACvB,CAgCoBuU,CAAclnB,KAAM2Y,IAAagO,GA3BrD,SAAoB9J,EAAQlL,EAAO+J,EAAO/C,GACxC,IAAIhG,EAMJ,OALc,OAAV+I,EACF/I,EAAK,IAAI+R,EACiB,iBAAVhJ,GAAuB/J,EAAMoL,aAC7CpK,EAAK,IAAI/F,EAAqB,QAAS,CAAC,SAAU,UAAW8O,KAE3D/I,IACFgK,EAAeE,EAAQlK,GACvB8D,QAAQmB,SAASe,EAAIhG,IACd,EAGX,CAc8DwU,CAAWnnB,KAAM2R,EAAO+J,EAAO/C,MACzFhH,EAAMsS,YACN3d,EAiDJ,SAAuBuW,EAAQlL,EAAOgV,EAAOjL,EAAOle,EAAUmb,GAC5D,IAAKgO,EAAO,CACV,IAAIS,EArBR,SAAqBzV,EAAO+J,EAAOle,GAIjC,OAHKmU,EAAMoL,aAAsC,IAAxBpL,EAAMuT,eAA4C,iBAAVxJ,IAC/DA,EAAQpf,EAAOe,KAAKqe,EAAOle,IAEtBke,CACT,CAgBmB2L,CAAY1V,EAAO+J,EAAOle,GACrCke,IAAU0L,IACZT,GAAQ,EACRnpB,EAAW,SACXke,EAAQ0L,EAEZ,CACA,IAAIzsB,EAAMgX,EAAMoL,WAAa,EAAIrB,EAAM1gB,OACvC2W,EAAM3W,QAAUL,EAChB,IAAI2L,EAAMqL,EAAM3W,OAAS2W,EAAMwJ,cAG/B,GADK7U,IAAKqL,EAAMiQ,WAAY,GACxBjQ,EAAMwT,SAAWxT,EAAMyT,OAAQ,CACjC,IAAI1c,EAAOiJ,EAAMqU,oBACjBrU,EAAMqU,oBAAsB,CAC1BtK,MAAOA,EACPle,SAAUA,EACVmpB,MAAOA,EACP3C,SAAUrL,EACV4G,KAAM,MAEJ7W,EACFA,EAAK6W,KAAO5N,EAAMqU,oBAElBrU,EAAMkU,gBAAkBlU,EAAMqU,oBAEhCrU,EAAMuU,sBAAwB,CAChC,MACEK,EAAQ1J,EAAQlL,GAAO,EAAOhX,EAAK+gB,EAAOle,EAAUmb,GAEtD,OAAOrS,CACT,CAlFUghB,CAActnB,KAAM2R,EAAOgV,EAAOjL,EAAOle,EAAUmb,IAEpDrS,CACT,EACAmU,EAASzd,UAAUuqB,KAAO,WACxBvnB,KAAK+a,eAAeqK,QACtB,EACA3K,EAASzd,UAAUwqB,OAAS,WAC1B,IAAI7V,EAAQ3R,KAAK+a,eACbpJ,EAAMyT,SACRzT,EAAMyT,SACDzT,EAAMwT,SAAYxT,EAAMyT,QAAWzT,EAAM0T,mBAAoB1T,EAAMkU,iBAAiBC,EAAY9lB,KAAM2R,GAE/G,EACA8I,EAASzd,UAAUyqB,mBAAqB,SAA4BjqB,GAGlE,GADwB,iBAAbA,IAAuBA,EAAWA,EAASsC,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOjE,SAAS2B,EAAW,IAAIsC,gBAAkB,GAAI,MAAM,IAAI8kB,EAAqBpnB,GAExL,OADAwC,KAAK+a,eAAe+C,gBAAkBtgB,EAC/BwC,IACT,EACAlD,OAAOuH,eAAeoW,EAASzd,UAAW,iBAAkB,CAI1DsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAK+a,gBAAkB/a,KAAK+a,eAAeK,WACpD,IAQFte,OAAOuH,eAAeoW,EAASzd,UAAW,wBAAyB,CAIjEsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAK+a,eAAeI,aAC7B,IAuKFV,EAASzd,UAAU0mB,OAAS,SAAUhI,EAAOle,EAAUmb,GACrDA,EAAG,IAAI8D,EAA2B,YACpC,EACAhC,EAASzd,UAAUopB,QAAU,KAC7B3L,EAASzd,UAAUjB,IAAM,SAAU2f,EAAOle,EAAUmb,GAClD,IAAIhH,EAAQ3R,KAAK+a,eAmBjB,MAlBqB,mBAAVW,GACT/C,EAAK+C,EACLA,EAAQ,KACRle,EAAW,MACkB,mBAAbA,IAChBmb,EAAKnb,EACLA,EAAW,MAETke,SAAuC1b,KAAKrC,MAAM+d,EAAOle,GAGzDmU,EAAMyT,SACRzT,EAAMyT,OAAS,EACfplB,KAAKwnB,UAIF7V,EAAMqT,QAyDb,SAAqBnI,EAAQlL,EAAOgH,GAClChH,EAAMqT,QAAS,EACfS,EAAY5I,EAAQlL,GAChBgH,IACEhH,EAAM4O,SAAU9J,QAAQmB,SAASe,GAASkE,EAAOtN,KAAK,SAAUoJ,IAEtEhH,EAAMqJ,OAAQ,EACd6B,EAAO1Q,UAAW,CACpB,CAjEqBub,CAAY1nB,KAAM2R,EAAOgH,GACrC3Y,IACT,EACAlD,OAAOuH,eAAeoW,EAASzd,UAAW,iBAAkB,CAI1DsH,YAAY,EACZC,IAAK,WACH,OAAOvE,KAAK+a,eAAe/f,MAC7B,IAqEF8B,OAAOuH,eAAeoW,EAASzd,UAAW,YAAa,CAIrDsH,YAAY,EACZC,IAAK,WACH,YAA4BzF,IAAxBkB,KAAK+a,gBAGF/a,KAAK+a,eAAeO,SAC7B,EACAnW,IAAK,SAAa7H,GAGX0C,KAAK+a,iBAMV/a,KAAK+a,eAAeO,UAAYhe,EAClC,IAEFmd,EAASzd,UAAUmhB,QAAU9B,EAAY8B,QACzC1D,EAASzd,UAAU+hB,WAAa1C,EAAY2C,UAC5CvE,EAASzd,UAAUohB,SAAW,SAAUhQ,EAAKuK,GAC3CA,EAAGvK,EACL,qCC9nBA,IAAIuZ,EACJ,SAASC,EAAgBjpB,EAAKuP,EAAK5Q,GAA4L,OAAnL4Q,EAC5C,SAAwBjR,GAAO,IAAIiR,EACnC,SAAsBnB,GAAe,GAAqB,iBAAVA,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI8a,EAAO9a,EAAM1Q,OAAO+C,aAAc,QAAaN,IAAT+oB,EAAoB,CAAE,IAAI7kB,EAAM6kB,EAAK/mB,KAAKiM,EAAO+a,UAAoB,GAAmB,iBAAR9kB,EAAkB,OAAOA,EAAK,MAAM,IAAI7F,UAAU,+CAAiD,CAAE,OAA4BgE,OAAiB4L,EAAQ,CAD/Ugb,CAAa9qB,GAAgB,MAAsB,iBAARiR,EAAmBA,EAAM/M,OAAO+M,EAAM,CADxE8Z,CAAe9Z,MAAiBvP,EAAO7B,OAAOuH,eAAe1F,EAAKuP,EAAK,CAAE5Q,MAAOA,EAAOgH,YAAY,EAAM8H,cAAc,EAAMD,UAAU,IAAkBxN,EAAIuP,GAAO5Q,EAAgBqB,CAAK,CAG3O,IAAI4hB,EAAW,EAAQ,OACnB0H,EAAe5rB,OAAO,eACtB6rB,EAAc7rB,OAAO,cACrB8rB,EAAS9rB,OAAO,SAChB+rB,EAAS/rB,OAAO,SAChBgsB,EAAehsB,OAAO,eACtBisB,EAAiBjsB,OAAO,iBACxBksB,EAAUlsB,OAAO,UACrB,SAASmsB,EAAiBlrB,EAAOmmB,GAC/B,MAAO,CACLnmB,MAAOA,EACPmmB,KAAMA,EAEV,CACA,SAASgF,EAAeC,GACtB,IAAIhZ,EAAUgZ,EAAKT,GACnB,GAAgB,OAAZvY,EAAkB,CACpB,IAAIxQ,EAAOwpB,EAAKH,GAASnnB,OAIZ,OAATlC,IACFwpB,EAAKL,GAAgB,KACrBK,EAAKT,GAAgB,KACrBS,EAAKR,GAAe,KACpBxY,EAAQ8Y,EAAiBtpB,GAAM,IAEnC,CACF,CACA,SAASypB,EAAWD,GAGlBjS,QAAQmB,SAAS6Q,EAAgBC,EACnC,CAYA,IAAIE,EAAyB9rB,OAAO0R,gBAAe,WAAa,IAC5Dqa,EAAuC/rB,OAAOC,gBAmD/C6qB,EAnD+DD,EAAwB,CACxF,UAAI9K,GACF,OAAO7c,KAAKuoB,EACd,EACAhJ,KAAM,WACJ,IAAI6C,EAAQpiB,KAGRoE,EAAQpE,KAAKmoB,GACjB,GAAc,OAAV/jB,EACF,OAAOqL,QAAQE,OAAOvL,GAExB,GAAIpE,KAAKooB,GACP,OAAO3Y,QAAQC,QAAQ8Y,OAAiB1pB,GAAW,IAErD,GAAIkB,KAAKuoB,GAASjN,UAKhB,OAAO,IAAI7L,SAAQ,SAAUC,EAASC,GACpC8G,QAAQmB,UAAS,WACXwK,EAAM+F,GACRxY,EAAOyS,EAAM+F,IAEbzY,EAAQ8Y,OAAiB1pB,GAAW,GAExC,GACF,IAOF,IACIyZ,EADAuQ,EAAc9oB,KAAKqoB,GAEvB,GAAIS,EACFvQ,EAAU,IAAI9I,QAlDpB,SAAqBqZ,EAAaJ,GAChC,OAAO,SAAUhZ,EAASC,GACxBmZ,EAAYlQ,MAAK,WACX8P,EAAKN,GACP1Y,EAAQ8Y,OAAiB1pB,GAAW,IAGtC4pB,EAAKJ,GAAgB5Y,EAASC,EAChC,GAAGA,EACL,CACF,CAwC4BoZ,CAAYD,EAAa9oB,WAC1C,CAGL,IAAId,EAAOc,KAAKuoB,GAASnnB,OACzB,GAAa,OAATlC,EACF,OAAOuQ,QAAQC,QAAQ8Y,EAAiBtpB,GAAM,IAEhDqZ,EAAU,IAAI9I,QAAQzP,KAAKsoB,GAC7B,CAEA,OADAtoB,KAAKqoB,GAAgB9P,EACdA,CACT,GACwClc,OAAOgmB,eAAe,WAC9D,OAAOriB,IACT,IAAI4nB,EAAgBD,EAAuB,UAAU,WACnD,IAAIqB,EAAShpB,KAIb,OAAO,IAAIyP,SAAQ,SAAUC,EAASC,GACpCqZ,EAAOT,GAASpK,QAAQ,MAAM,SAAU/P,GAClCA,EACFuB,EAAOvB,GAGTsB,EAAQ8Y,OAAiB1pB,GAAW,GACtC,GACF,GACF,IAAI6oB,GAAwBiB,GA4D5Bza,EAAOtU,QA3DiC,SAA2CgjB,GACjF,IAAIoM,EACAC,EAAWpsB,OAAOyR,OAAOsa,GAA4DjB,EAArBqB,EAAiB,CAAC,EAAmCV,EAAS,CAChIjrB,MAAOuf,EACP1Q,UAAU,IACRyb,EAAgBqB,EAAgBhB,EAAc,CAChD3qB,MAAO,KACP6O,UAAU,IACRyb,EAAgBqB,EAAgBf,EAAa,CAC/C5qB,MAAO,KACP6O,UAAU,IACRyb,EAAgBqB,EAAgBd,EAAQ,CAC1C7qB,MAAO,KACP6O,UAAU,IACRyb,EAAgBqB,EAAgBb,EAAQ,CAC1C9qB,MAAOuf,EAAOxB,eAAe+B,WAC7BjR,UAAU,IACRyb,EAAgBqB,EAAgBX,EAAgB,CAClDhrB,MAAO,SAAeoS,EAASC,GAC7B,IAAIzQ,EAAOgqB,EAASX,GAASnnB,OACzBlC,GACFgqB,EAASb,GAAgB,KACzBa,EAASjB,GAAgB,KACzBiB,EAAShB,GAAe,KACxBxY,EAAQ8Y,EAAiBtpB,GAAM,MAE/BgqB,EAASjB,GAAgBvY,EACzBwZ,EAAShB,GAAevY,EAE5B,EACAxD,UAAU,IACR8c,IA0BJ,OAzBAC,EAASb,GAAgB,KACzB9H,EAAS1D,GAAQ,SAAUzO,GACzB,GAAIA,GAAoB,+BAAbA,EAAIzS,KAAuC,CACpD,IAAIgU,EAASuZ,EAAShB,GAUtB,OAPe,OAAXvY,IACFuZ,EAASb,GAAgB,KACzBa,EAASjB,GAAgB,KACzBiB,EAAShB,GAAe,KACxBvY,EAAOvB,SAET8a,EAASf,GAAU/Z,EAErB,CACA,IAAIsB,EAAUwZ,EAASjB,GACP,OAAZvY,IACFwZ,EAASb,GAAgB,KACzBa,EAASjB,GAAgB,KACzBiB,EAAShB,GAAe,KACxBxY,EAAQ8Y,OAAiB1pB,GAAW,KAEtCoqB,EAASd,IAAU,CACrB,IACAvL,EAAO5M,GAAG,WAAY0Y,EAAW9W,KAAK,KAAMqX,IACrCA,CACT,sCChLA,SAASla,EAAQiY,EAAQkC,GAAkB,IAAI1V,EAAO3W,OAAO2W,KAAKwT,GAAS,GAAInqB,OAAOmS,sBAAuB,CAAE,IAAIma,EAAUtsB,OAAOmS,sBAAsBgY,GAASkC,IAAmBC,EAAUA,EAAQC,QAAO,SAAUvd,GAAO,OAAOhP,OAAOwsB,yBAAyBrC,EAAQnb,GAAKxH,UAAY,KAAKmP,EAAKpY,KAAKsI,MAAM8P,EAAM2V,EAAU,CAAE,OAAO3V,CAAM,CACpV,SAAS8V,EAAc1jB,GAAU,IAAK,IAAIvL,EAAI,EAAGA,EAAIoF,UAAU1E,OAAQV,IAAK,CAAE,IAAIkvB,EAAS,MAAQ9pB,UAAUpF,GAAKoF,UAAUpF,GAAK,CAAC,EAAGA,EAAI,EAAI0U,EAAQlS,OAAO0sB,IAAS,GAAIC,SAAQ,SAAUvb,GAAO0Z,EAAgB/hB,EAAQqI,EAAKsb,EAAOtb,GAAO,IAAKpR,OAAO4sB,0BAA4B5sB,OAAO6sB,iBAAiB9jB,EAAQ/I,OAAO4sB,0BAA0BF,IAAWxa,EAAQlS,OAAO0sB,IAASC,SAAQ,SAAUvb,GAAOpR,OAAOuH,eAAewB,EAAQqI,EAAKpR,OAAOwsB,yBAAyBE,EAAQtb,GAAO,GAAI,CAAE,OAAOrI,CAAQ,CACzf,SAAS+hB,EAAgBjpB,EAAKuP,EAAK5Q,GAA4L,OAAnL4Q,EAAM8Z,EAAe9Z,MAAiBvP,EAAO7B,OAAOuH,eAAe1F,EAAKuP,EAAK,CAAE5Q,MAAOA,EAAOgH,YAAY,EAAM8H,cAAc,EAAMD,UAAU,IAAkBxN,EAAIuP,GAAO5Q,EAAgBqB,CAAK,CAE3O,SAASirB,EAAkB/jB,EAAQoI,GAAS,IAAK,IAAI3T,EAAI,EAAGA,EAAI2T,EAAMjT,OAAQV,IAAK,CAAE,IAAIuvB,EAAa5b,EAAM3T,GAAIuvB,EAAWvlB,WAAaulB,EAAWvlB,aAAc,EAAOulB,EAAWzd,cAAe,EAAU,UAAWyd,IAAYA,EAAW1d,UAAW,GAAMrP,OAAOuH,eAAewB,EAAQmiB,EAAe6B,EAAW3b,KAAM2b,EAAa,CAAE,CAE5U,SAAS7B,EAAe/qB,GAAO,IAAIiR,EACnC,SAAsBnB,GAAe,GAAqB,iBAAVA,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI8a,EAAO9a,EAAM1Q,OAAO+C,aAAc,QAAaN,IAAT+oB,EAAoB,CAAE,IAAI7kB,EAAM6kB,EAAK/mB,KAAKiM,EAAO+a,UAAoB,GAAmB,iBAAR9kB,EAAkB,OAAOA,EAAK,MAAM,IAAI7F,UAAU,+CAAiD,CAAE,OAA4BgE,OAAiB4L,EAAQ,CAD/Ugb,CAAa9qB,GAAgB,MAAsB,iBAARiR,EAAmBA,EAAM/M,OAAO+M,EAAM,CAE1H,IACE5R,EADa,EAAQ,OACHA,OAElBmJ,EADc,EAAQ,OACFA,QAClBqkB,EAASrkB,GAAWA,EAAQqkB,QAAU,UAI1C3b,EAAOtU,QAAuB,WAC5B,SAASuiB,KAdX,SAAyB2N,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI7sB,UAAU,oCAAwC,CAepJ8sB,CAAgBjqB,KAAMoc,GACtBpc,KAAKqf,KAAO,KACZrf,KAAKkqB,KAAO,KACZlqB,KAAKhF,OAAS,CAChB,CAjBF,IAAsBgvB,EAAaG,EA8KjC,OA9KoBH,EAkBP5N,GAlBoB+N,EAkBR,CAAC,CACxBjc,IAAK,OACL5Q,MAAO,SAAcod,GACnB,IAAImJ,EAAQ,CACV3kB,KAAMwb,EACN6E,KAAM,MAEJvf,KAAKhF,OAAS,EAAGgF,KAAKkqB,KAAK3K,KAAOsE,EAAW7jB,KAAKqf,KAAOwE,EAC7D7jB,KAAKkqB,KAAOrG,IACV7jB,KAAKhF,MACT,GACC,CACDkT,IAAK,UACL5Q,MAAO,SAAiBod,GACtB,IAAImJ,EAAQ,CACV3kB,KAAMwb,EACN6E,KAAMvf,KAAKqf,MAEO,IAAhBrf,KAAKhF,SAAcgF,KAAKkqB,KAAOrG,GACnC7jB,KAAKqf,KAAOwE,IACV7jB,KAAKhF,MACT,GACC,CACDkT,IAAK,QACL5Q,MAAO,WACL,GAAoB,IAAhB0C,KAAKhF,OAAT,CACA,IAAIsL,EAAMtG,KAAKqf,KAAKngB,KAGpB,OAFoB,IAAhBc,KAAKhF,OAAcgF,KAAKqf,KAAOrf,KAAKkqB,KAAO,KAAUlqB,KAAKqf,KAAOrf,KAAKqf,KAAKE,OAC7Evf,KAAKhF,OACAsL,CAJsB,CAK/B,GACC,CACD4H,IAAK,QACL5Q,MAAO,WACL0C,KAAKqf,KAAOrf,KAAKkqB,KAAO,KACxBlqB,KAAKhF,OAAS,CAChB,GACC,CACDkT,IAAK,OACL5Q,MAAO,SAAcyX,GACnB,GAAoB,IAAhB/U,KAAKhF,OAAc,MAAO,GAG9B,IAFA,IAAIokB,EAAIpf,KAAKqf,KACT/Y,EAAM,GAAK8Y,EAAElgB,KACVkgB,EAAIA,EAAEG,MAAMjZ,GAAOyO,EAAIqK,EAAElgB,KAChC,OAAOoH,CACT,GACC,CACD4H,IAAK,SACL5Q,MAAO,SAAgBkD,GACrB,GAAoB,IAAhBR,KAAKhF,OAAc,OAAOsB,EAAOE,MAAM,GAI3C,IAHA,IA5DciR,EAAK5H,EAAQnE,EA4DvB4E,EAAMhK,EAAOc,YAAYoD,IAAM,GAC/B4e,EAAIpf,KAAKqf,KACT/kB,EAAI,EACD8kB,GA/DO3R,EAgED2R,EAAElgB,KAhEI2G,EAgEES,EAhEM5E,EAgEDpH,EA/D9BgC,EAAOU,UAAUkB,KAAK4C,KAAK2M,EAAK5H,EAAQnE,GAgElCpH,GAAK8kB,EAAElgB,KAAKlE,OACZokB,EAAIA,EAAEG,KAER,OAAOjZ,CACT,GAGC,CACD4H,IAAK,UACL5Q,MAAO,SAAiBkD,EAAG4pB,GACzB,IAAI9jB,EAYJ,OAXI9F,EAAIR,KAAKqf,KAAKngB,KAAKlE,QAErBsL,EAAMtG,KAAKqf,KAAKngB,KAAKtB,MAAM,EAAG4C,GAC9BR,KAAKqf,KAAKngB,KAAOc,KAAKqf,KAAKngB,KAAKtB,MAAM4C,IAGtC8F,EAFS9F,IAAMR,KAAKqf,KAAKngB,KAAKlE,OAExBgF,KAAKmT,QAGLiX,EAAapqB,KAAKqqB,WAAW7pB,GAAKR,KAAKsqB,WAAW9pB,GAEnD8F,CACT,GACC,CACD4H,IAAK,QACL5Q,MAAO,WACL,OAAO0C,KAAKqf,KAAKngB,IACnB,GAGC,CACDgP,IAAK,aACL5Q,MAAO,SAAoBkD,GACzB,IAAI4e,EAAIpf,KAAKqf,KACT3c,EAAI,EACJ4D,EAAM8Y,EAAElgB,KAEZ,IADAsB,GAAK8F,EAAItL,OACFokB,EAAIA,EAAEG,MAAM,CACjB,IAAInd,EAAMgd,EAAElgB,KACRqrB,EAAK/pB,EAAI4B,EAAIpH,OAASoH,EAAIpH,OAASwF,EAGvC,GAFI+pB,IAAOnoB,EAAIpH,OAAQsL,GAAOlE,EAASkE,GAAOlE,EAAIxE,MAAM,EAAG4C,GAEjD,IADVA,GAAK+pB,GACQ,CACPA,IAAOnoB,EAAIpH,UACX0H,EACE0c,EAAEG,KAAMvf,KAAKqf,KAAOD,EAAEG,KAAUvf,KAAKqf,KAAOrf,KAAKkqB,KAAO,OAE5DlqB,KAAKqf,KAAOD,EACZA,EAAElgB,KAAOkD,EAAIxE,MAAM2sB,IAErB,KACF,GACE7nB,CACJ,CAEA,OADA1C,KAAKhF,QAAU0H,EACR4D,CACT,GAGC,CACD4H,IAAK,aACL5Q,MAAO,SAAoBkD,GACzB,IAAI8F,EAAMhK,EAAOc,YAAYoD,GACzB4e,EAAIpf,KAAKqf,KACT3c,EAAI,EAGR,IAFA0c,EAAElgB,KAAKhB,KAAKoI,GACZ9F,GAAK4e,EAAElgB,KAAKlE,OACLokB,EAAIA,EAAEG,MAAM,CACjB,IAAI1iB,EAAMuiB,EAAElgB,KACRqrB,EAAK/pB,EAAI3D,EAAI7B,OAAS6B,EAAI7B,OAASwF,EAGvC,GAFA3D,EAAIqB,KAAKoI,EAAKA,EAAItL,OAASwF,EAAG,EAAG+pB,GAEvB,IADV/pB,GAAK+pB,GACQ,CACPA,IAAO1tB,EAAI7B,UACX0H,EACE0c,EAAEG,KAAMvf,KAAKqf,KAAOD,EAAEG,KAAUvf,KAAKqf,KAAOrf,KAAKkqB,KAAO,OAE5DlqB,KAAKqf,KAAOD,EACZA,EAAElgB,KAAOrC,EAAIe,MAAM2sB,IAErB,KACF,GACE7nB,CACJ,CAEA,OADA1C,KAAKhF,QAAU0H,EACR4D,CACT,GAGC,CACD4H,IAAK4b,EACLxsB,MAAO,SAAe+Q,EAAGyH,GACvB,OAAOrQ,EAAQzF,KAAMupB,EAAcA,EAAc,CAAC,EAAGzT,GAAU,CAAC,EAAG,CAEjE0U,MAAO,EAEPC,eAAe,IAEnB,MA5K0Eb,EAAkBI,EAAYhtB,UAAWmtB,GAA2ErtB,OAAOuH,eAAe2lB,EAAa,YAAa,CAAE7d,UAAU,IA8KrPiQ,CACT,CApK8B,mCCiC9B,SAASsO,EAAoBxP,EAAM9M,GACjCuc,EAAYzP,EAAM9M,GAClBwc,EAAY1P,EACd,CACA,SAAS0P,EAAY1P,GACfA,EAAKH,iBAAmBG,EAAKH,eAAe6C,WAC5C1C,EAAKG,iBAAmBH,EAAKG,eAAeuC,WAChD1C,EAAKjK,KAAK,QACZ,CAkBA,SAAS0Z,EAAYzP,EAAM9M,GACzB8M,EAAKjK,KAAK,QAAS7C,EACrB,CAYAD,EAAOtU,QAAU,CACfskB,QAzFF,SAAiB/P,EAAKuK,GACpB,IAAIyJ,EAAQpiB,KACR6qB,EAAoB7qB,KAAKqb,gBAAkBrb,KAAKqb,eAAeC,UAC/DwP,EAAoB9qB,KAAK+a,gBAAkB/a,KAAK+a,eAAeO,UACnE,OAAIuP,GAAqBC,GACnBnS,EACFA,EAAGvK,GACMA,IACJpO,KAAK+a,eAEE/a,KAAK+a,eAAe2K,eAC9B1lB,KAAK+a,eAAe2K,cAAe,EACnCjP,QAAQmB,SAAS+S,EAAa3qB,KAAMoO,IAHpCqI,QAAQmB,SAAS+S,EAAa3qB,KAAMoO,IAMjCpO,OAMLA,KAAKqb,iBACPrb,KAAKqb,eAAeC,WAAY,GAI9Btb,KAAK+a,iBACP/a,KAAK+a,eAAeO,WAAY,GAElCtb,KAAKoe,SAAShQ,GAAO,MAAM,SAAUA,IAC9BuK,GAAMvK,EACJgU,EAAMrH,eAECqH,EAAMrH,eAAe2K,aAI/BjP,QAAQmB,SAASgT,EAAaxI,IAH9BA,EAAMrH,eAAe2K,cAAe,EACpCjP,QAAQmB,SAAS8S,EAAqBtI,EAAOhU,IAH7CqI,QAAQmB,SAAS8S,EAAqBtI,EAAOhU,GAOtCuK,GACTlC,QAAQmB,SAASgT,EAAaxI,GAC9BzJ,EAAGvK,IAEHqI,QAAQmB,SAASgT,EAAaxI,EAElC,IACOpiB,KACT,EA2CEgf,UAjCF,WACMhf,KAAKqb,iBACPrb,KAAKqb,eAAeC,WAAY,EAChCtb,KAAKqb,eAAegC,SAAU,EAC9Brd,KAAKqb,eAAeL,OAAQ,EAC5Bhb,KAAKqb,eAAe+B,YAAa,GAE/Bpd,KAAK+a,iBACP/a,KAAK+a,eAAeO,WAAY,EAChCtb,KAAK+a,eAAeC,OAAQ,EAC5Bhb,KAAK+a,eAAeiK,QAAS,EAC7BhlB,KAAK+a,eAAegK,aAAc,EAClC/kB,KAAK+a,eAAekL,aAAc,EAClCjmB,KAAK+a,eAAewF,UAAW,EAC/BvgB,KAAK+a,eAAe2K,cAAe,EAEvC,EAkBE/I,eAdF,SAAwBE,EAAQzO,GAO9B,IAAI0Y,EAASjK,EAAOxB,eAChBiF,EAASzD,EAAO9B,eAChB+L,GAAUA,EAAOjJ,aAAeyC,GAAUA,EAAOzC,YAAahB,EAAOsB,QAAQ/P,GAAUyO,EAAO5L,KAAK,QAAS7C,EAClH,uCCrFA,IAAI2c,EAA6B,WAAiCA,2BAYlE,SAASpT,IAAQ,CAoEjBxJ,EAAOtU,QAhEP,SAASmxB,EAAInO,EAAQ2F,EAAMwB,GACzB,GAAoB,mBAATxB,EAAqB,OAAOwI,EAAInO,EAAQ,KAAM2F,GACpDA,IAAMA,EAAO,CAAC,GACnBwB,EAlBF,SAAcA,GACZ,IAAIiH,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EACT,IAAK,IAAIC,EAAOxrB,UAAU1E,OAAQ8T,EAAO,IAAIpT,MAAMwvB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Erc,EAAKqc,GAAQzrB,UAAUyrB,GAEzBnH,EAASrgB,MAAM3D,KAAM8O,EALH,CAMpB,CACF,CAQaS,CAAKyU,GAAYrM,GAC5B,IAAIkD,EAAW2H,EAAK3H,WAA8B,IAAlB2H,EAAK3H,UAAsBgC,EAAOhC,SAC9D1O,EAAWqW,EAAKrW,WAA8B,IAAlBqW,EAAKrW,UAAsB0Q,EAAO1Q,SAC9Dif,EAAiB,WACdvO,EAAO1Q,UAAUoV,GACxB,EACI8J,EAAgBxO,EAAO9B,gBAAkB8B,EAAO9B,eAAewF,SAC/DgB,EAAW,WACbpV,GAAW,EACXkf,GAAgB,EACXxQ,GAAUmJ,EAASljB,KAAK+b,EAC/B,EACIyO,EAAgBzO,EAAOxB,gBAAkBwB,EAAOxB,eAAe+B,WAC/DtC,EAAQ,WACVD,GAAW,EACXyQ,GAAgB,EACXnf,GAAU6X,EAASljB,KAAK+b,EAC/B,EACI4E,EAAU,SAAiBrT,GAC7B4V,EAASljB,KAAK+b,EAAQzO,EACxB,EACIkT,EAAU,WACZ,IAAIlT,EACJ,OAAIyM,IAAayQ,GACVzO,EAAOxB,gBAAmBwB,EAAOxB,eAAeL,QAAO5M,EAAM,IAAI2c,GAC/D/G,EAASljB,KAAK+b,EAAQzO,IAE3BjC,IAAakf,GACVxO,EAAO9B,gBAAmB8B,EAAO9B,eAAeC,QAAO5M,EAAM,IAAI2c,GAC/D/G,EAASljB,KAAK+b,EAAQzO,SAF/B,CAIF,EACImd,EAAY,WACd1O,EAAO2O,IAAIvb,GAAG,SAAUsR,EAC1B,EAcA,OAtDF,SAAmB1E,GACjB,OAAOA,EAAO4O,WAAqC,mBAAjB5O,EAAO6O,KAC3C,CAuCMC,CAAU9O,IACZA,EAAO5M,GAAG,WAAYsR,GACtB1E,EAAO5M,GAAG,QAASqR,GACfzE,EAAO2O,IAAKD,IAAiB1O,EAAO5M,GAAG,UAAWsb,IAC7Cpf,IAAa0Q,EAAO9B,iBAE7B8B,EAAO5M,GAAG,MAAOmb,GACjBvO,EAAO5M,GAAG,QAASmb,IAErBvO,EAAO5M,GAAG,MAAO6K,GACjB+B,EAAO5M,GAAG,SAAUsR,IACD,IAAfiB,EAAKpe,OAAiByY,EAAO5M,GAAG,QAASwR,GAC7C5E,EAAO5M,GAAG,QAASqR,GACZ,WACLzE,EAAOhN,eAAe,WAAY0R,GAClC1E,EAAOhN,eAAe,QAASyR,GAC/BzE,EAAOhN,eAAe,UAAW0b,GAC7B1O,EAAO2O,KAAK3O,EAAO2O,IAAI3b,eAAe,SAAU0R,GACpD1E,EAAOhN,eAAe,MAAOub,GAC7BvO,EAAOhN,eAAe,QAASub,GAC/BvO,EAAOhN,eAAe,SAAU0R,GAChC1E,EAAOhN,eAAe,MAAOiL,GAC7B+B,EAAOhN,eAAe,QAAS4R,GAC/B5E,EAAOhN,eAAe,QAASyR,EACjC,CACF,qBCpFAnT,EAAOtU,QAAU,WACf,MAAM,IAAI+B,MAAM,gDAClB,sCCGA,IAAIovB,EASAzO,EAAiB,WACnBqP,EAAmBrP,EAAeqP,iBAClCnH,EAAuBlI,EAAekI,qBACxC,SAAS9M,EAAKvJ,GAEZ,GAAIA,EAAK,MAAMA,CACjB,CA+BA,SAAStN,EAAKgN,GACZA,GACF,CACA,SAAS8S,EAAKvjB,EAAMwuB,GAClB,OAAOxuB,EAAKujB,KAAKiL,EACnB,CA6BA1d,EAAOtU,QAvBP,WACE,IAAK,IAAIqxB,EAAOxrB,UAAU1E,OAAQ8wB,EAAU,IAAIpwB,MAAMwvB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClFW,EAAQX,GAAQzrB,UAAUyrB,GAE5B,IAKI/mB,EALA4f,EATN,SAAqB8H,GACnB,OAAKA,EAAQ9wB,OAC8B,mBAAhC8wB,EAAQA,EAAQ9wB,OAAS,GAA0B2c,EACvDmU,EAAQzY,MAFasE,CAG9B,CAKiBoU,CAAYD,GAE3B,GADIpwB,MAAMuD,QAAQ6sB,EAAQ,MAAKA,EAAUA,EAAQ,IAC7CA,EAAQ9wB,OAAS,EACnB,MAAM,IAAI4wB,EAAiB,WAG7B,IAAII,EAAWF,EAAQ9R,KAAI,SAAU6C,EAAQviB,GAC3C,IAAI+iB,EAAU/iB,EAAIwxB,EAAQ9wB,OAAS,EAEnC,OAnDJ,SAAmB6hB,EAAQQ,EAAS8H,EAASnB,GAC3CA,EAnBF,SAAcA,GACZ,IAAIiH,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTjH,EAASrgB,WAAM,EAAQjE,WACzB,CACF,CAYa6P,CAAKyU,GAChB,IAAIiI,GAAS,EACbpP,EAAO5M,GAAG,SAAS,WACjBgc,GAAS,CACX,SACYntB,IAARksB,IAAmBA,EAAM,EAAQ,QACrCA,EAAInO,EAAQ,CACVhC,SAAUwC,EACVlR,SAAUgZ,IACT,SAAU/W,GACX,GAAIA,EAAK,OAAO4V,EAAS5V,GACzB6d,GAAS,EACTjI,GACF,IACA,IAAI1I,GAAY,EAChB,OAAO,SAAUlN,GACf,IAAI6d,IACA3Q,EAIJ,OAHAA,GAAY,EAtBhB,SAAmBuB,GACjB,OAAOA,EAAO4O,WAAqC,mBAAjB5O,EAAO6O,KAC3C,CAuBQC,CAAU9O,GAAgBA,EAAO6O,QACP,mBAAnB7O,EAAOsB,QAA+BtB,EAAOsB,eACxD6F,EAAS5V,GAAO,IAAIqW,EAAqB,QAC3C,CACF,CAyBWyH,CAAUrP,EAAQQ,EADX/iB,EAAI,GACyB,SAAU8T,GAC9ChK,IAAOA,EAAQgK,GAChBA,GAAK4d,EAASvC,QAAQ3oB,GACtBuc,IACJ2O,EAASvC,QAAQ3oB,GACjBkjB,EAAS5f,GACX,GACF,IACA,OAAO0nB,EAAQK,OAAOvL,EACxB,sCClFA,IAAIwL,EAAwB,WAAiCA,sBAiB7Dje,EAAOtU,QAAU,CACfyiB,iBAdF,SAA0B3K,EAAOmE,EAASuW,EAAWvP,GACnD,IAAIwP,EAJN,SAA2BxW,EAASgH,EAAUuP,GAC5C,OAAgC,MAAzBvW,EAAQqF,cAAwBrF,EAAQqF,cAAgB2B,EAAWhH,EAAQuW,GAAa,IACjG,CAEYE,CAAkBzW,EAASgH,EAAUuP,GAC/C,GAAW,MAAPC,EAAa,CACf,IAAMnmB,SAASmmB,IAAQxpB,KAAK+J,MAAMyf,KAASA,GAAQA,EAAM,EAEvD,MAAM,IAAIF,EADCtP,EAAWuP,EAAY,gBACIC,GAExC,OAAOxpB,KAAK+J,MAAMyf,EACpB,CAGA,OAAO3a,EAAMoL,WAAa,GAAK,KACjC,0BClBA5O,EAAOtU,QAAU,EAAjB,4CCAAA,EAAUsU,EAAOtU,QAAU,EAAjB,QACFiiB,OAASjiB,EACjBA,EAAQ2gB,SAAW3gB,EACnBA,EAAQ4gB,SAAW,EAAnB,OACA5gB,EAAQ0gB,OAAS,EAAjB,OACA1gB,EAAQ2hB,UAAY,EAApB,OACA3hB,EAAQ0hB,YAAc,EAAtB,OACA1hB,EAAQ0mB,SAAW,EAAnB,OACA1mB,EAAQ2yB,SAAW,EAAnB,8BCNA,IAAIpuB,EAAS,EAAQ,OACjB9B,EAAS8B,EAAO9B,OAGpB,SAASmwB,EAAWhf,EAAKC,GACvB,IAAK,IAAIQ,KAAOT,EACdC,EAAIQ,GAAOT,EAAIS,EAEnB,CASA,SAASwe,EAAYzvB,EAAKC,EAAkBlC,GAC1C,OAAOsB,EAAOW,EAAKC,EAAkBlC,EACvC,CAVIsB,EAAOe,MAAQf,EAAOE,OAASF,EAAOc,aAAed,EAAOoI,gBAC9DyJ,EAAOtU,QAAUuE,GAGjBquB,EAAUruB,EAAQvE,GAClBA,EAAQyC,OAASowB,GAOnBA,EAAW1vB,UAAYF,OAAOyR,OAAOjS,EAAOU,WAG5CyvB,EAAUnwB,EAAQowB,GAElBA,EAAWrvB,KAAO,SAAUJ,EAAKC,EAAkBlC,GACjD,GAAmB,iBAARiC,EACT,MAAM,IAAIE,UAAU,iCAEtB,OAAOb,EAAOW,EAAKC,EAAkBlC,EACvC,EAEA0xB,EAAWlwB,MAAQ,SAAU8C,EAAMmF,EAAMjH,GACvC,GAAoB,iBAAT8B,EACT,MAAM,IAAInC,UAAU,6BAEtB,IAAIN,EAAMP,EAAOgD,GAUjB,YATaR,IAAT2F,EACsB,iBAAbjH,EACTX,EAAI4H,KAAKA,EAAMjH,GAEfX,EAAI4H,KAAKA,GAGX5H,EAAI4H,KAAK,GAEJ5H,CACT,EAEA6vB,EAAWtvB,YAAc,SAAUkC,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAInC,UAAU,6BAEtB,OAAOb,EAAOgD,EAChB,EAEAotB,EAAWhoB,gBAAkB,SAAUpF,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAInC,UAAU,6BAEtB,OAAOiB,EAAO7B,WAAW+C,EAC3B,yBC/DA,MAAMsc,EAAQ,EAAQ,MAAR,CAAiB,eACzB+Q,EAAgB,EAAQ,OACxBC,EAAc,EAAQ,OACtB/P,EAAS,EAAQ,OACjBrE,EAAiB,EAAQ,OACzBqU,EAAU,EAAQ,QAClB,OAAEvwB,GAAW,EAAQ,OAErBwwB,EAAsB,MAK5B,SAASC,EAAeC,GACtB,OAAOA,EAAIrnB,QAAQ,6BAA8B,GACnD,CAWA,MAAMsnB,UAAapQ,EAAOtC,OACxB,WAAAtO,CAAauW,GAyCX,GApCAtW,MAJAsW,EAAO1lB,OAAOkR,OAAO,CACnB4M,eAAe,GACd4H,IAIHxiB,KAAKktB,IAAMN,EAAY,GAAGptB,SAAS,OAAO5B,MAAM,EAAG,GACnDoC,KAAKmtB,OAAO,cAAe3K,GAE3BxiB,KAAKotB,YAAc5K,EAAK6K,UACpB7K,EAAK4K,aAAeR,EAAY,IAAIptB,SAAS,OAC7C,KAEJQ,KAAKqtB,UAAY7K,EAAK6K,YAAa,EACnCrtB,KAAKstB,cAAgB9K,EAAK8K,eAAiBL,EAAKK,cAChDttB,KAAKutB,kBAAoBvtB,KAAKstB,cAAcE,WAC5CxtB,KAAKytB,OAAS3wB,OAAOkR,OAAO,CAAC,EAAGif,EAAKQ,OAAQjL,EAAKiL,QAClDztB,KAAK0tB,aAAelL,EAAKkL,cAAgB,CAAC,EAC1C1tB,KAAK2tB,cAAgBnL,EAAKmL,eAAiB,CAAC,EAC5C3tB,KAAK4tB,aAAepL,EAAKoL,cAAgB,CAACZ,GAAOA,GACjDhtB,KAAK8rB,QAAUtJ,EAAKsJ,UAAYtJ,EAAK3F,OAAS,CAAC2F,EAAK3F,QAAU,IAC9D7c,KAAK6tB,aAA2B/uB,IAAjB0jB,EAAKqL,SAAwBrL,EAAKqL,QACjD7tB,KAAK8tB,sBAA6ChvB,IAA1B0jB,EAAKsL,kBAAiCtL,EAAKsL,iBACnE9tB,KAAK+tB,mBAAqBvL,EAAKuL,oBA1CP,IA4CxB/tB,KAAKsb,WAAY,EACjBtb,KAAKguB,YAAa,EAClBhuB,KAAKiuB,YAAa,EAElBjuB,KAAKkuB,mBAAgBpvB,EACrBkB,KAAKmuB,kBAAervB,EACpBkB,KAAKouB,gBAAatvB,EAClBkB,KAAKquB,kBAAevvB,EACpBkB,KAAKsuB,iBAAcxvB,EACnBkB,KAAKuuB,eAAYzvB,EAEjBkB,KAAKwuB,MAAShM,EAAK3O,MAA6B,iBAAd2O,EAAK3O,KACnC2O,EAAK3O,KACL8Y,KAEC3sB,KAAKwuB,MACR,KAAsB,oBAAX/V,OACHoU,EAAQ,IAAIjxB,MAAM,qEAAsE,sBAExFixB,EAAQ,IAAIjxB,MAAM,8CAA+C,sBAI3EoE,KAAKyuB,UAAW,EAChBzuB,KAAK0uB,eAAgB,EACrB1uB,KAAK2uB,cAAe,EACpB3uB,KAAK4uB,kBAAoB,KACzB5uB,KAAK6uB,SAAW,KAChB7uB,KAAK8uB,mBAAqB,GAE1B9uB,KAAK+uB,gBAAiB,EACtB/uB,KAAKgvB,mBAAoB,EACzBhvB,KAAKivB,qBAAsB,EAC3BjvB,KAAKkvB,oBAAqB,EAC1BlvB,KAAKmvB,uBAAyB,GAC9BnvB,KAAKovB,WAAa,IAAIC,IACtBrvB,KAAKsvB,iBAAmB,KAExBtvB,KAAKuvB,cAAgB,GACrBvvB,KAAKwvB,eAAiB,GAEtBxvB,KAAKyvB,OAAS,KACdzvB,KAAK0vB,IAAM,KACX1vB,KAAK2vB,UAAY,KAEjB,IACE3vB,KAAK4vB,IAAM,IAAK5vB,KAAKwuB,MAAuB,kBAAExuB,KAAKytB,OACrD,CAAE,MAAOrf,GAEP,YADApO,KAAKme,QAAQ0O,EAAQze,EAAK,sBAE5B,CAIApO,KAAK6vB,qBAA6D,iBAA/B7vB,KAAK4vB,IAAIE,kBAE5C9vB,KAAK4vB,IAAIG,2BAA6B,KACpC/vB,KAAKgwB,mBAAkB,EAEzBhwB,KAAK4vB,IAAIK,0BAA4B,KACnCjwB,KAAKgwB,mBAAkB,EAEzBhwB,KAAK4vB,IAAIM,wBAA0B,KACjClwB,KAAKmwB,0BAAyB,EAEhCnwB,KAAK4vB,IAAIQ,uBAAyB,KAChCpwB,KAAKqwB,yBAAwB,EAE/BrwB,KAAK4vB,IAAIU,eAAiBvO,IACxB/hB,KAAKuwB,gBAAgBxO,EAAK,EAIS,iBAA1B/hB,KAAK4vB,IAAIY,cAClBxwB,KAAK4vB,IAAIY,aAAa3X,OAAMzK,IAC1BpO,KAAKme,QAAQ0O,EAAQze,EAAK,wBAAuB,IAUjDpO,KAAKqtB,WAAartB,KAAKutB,kBACzBvtB,KAAKywB,WAAW,CACdC,QAAS1wB,KAAK4vB,IAAIe,kBAAkB3wB,KAAKotB,YAAaptB,KAAKstB,iBAG7DttB,KAAK4vB,IAAIgB,cAAgB7O,IACvB/hB,KAAKywB,WAAW1O,EAAK,EAIrB/hB,KAAK8rB,SACP9rB,KAAK8rB,QAAQrC,SAAQ5M,IACnB7c,KAAK6wB,UAAUhU,EAAM,IAGzB7c,KAAK4vB,IAAIkB,QAAU/O,IACjB/hB,KAAK+wB,SAAShP,EAAK,EAGrB/hB,KAAKmtB,OAAO,uBACZntB,KAAKgxB,oBAELhxB,KAAKixB,eAAiB,KACpBjxB,KAAKkxB,WAAU,EAEjBlxB,KAAKuP,KAAK,SAAUvP,KAAKixB,eAC3B,CAEA,cAAIE,GACF,OAAQnxB,KAAK6uB,UAAY7uB,KAAK6uB,SAASuC,gBAAmB,CAC5D,CAIA,aAAIC,GACF,OAAQrxB,KAAKiuB,YAA2C,SAA7BjuB,KAAK6uB,SAASyC,UAC3C,CAEA,OAAAC,GACE,MAAO,CAAEC,KAAMxxB,KAAKuuB,UAAWkD,OAAQzxB,KAAKsuB,YAAaiD,QAASvxB,KAAKquB,aACzE,CAEA,MAAAqD,CAAQxyB,GACN,IAAIc,KAAKguB,WAAT,CACA,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,yCAA0C,iBACtF,GAAoB,iBAATsD,EACT,IACEA,EAAOmX,KAAKH,MAAMhX,EACpB,CAAE,MAAOkP,GACPlP,EAAO,CAAC,CACV,CAEFc,KAAKmtB,OAAO,YAERjuB,EAAKyyB,aAAe3xB,KAAKqtB,YAC3BrtB,KAAKmtB,OAAO,8BACZntB,KAAKgxB,qBAEH9xB,EAAK0yB,oBAAsB5xB,KAAKqtB,YAClCrtB,KAAKmtB,OAAO,+BACZntB,KAAK6xB,eAAe3yB,EAAK0yB,mBAAmBE,KAAM5yB,EAAK0yB,mBAAmBtiB,OAExEpQ,EAAK6yB,YACH/xB,KAAK4vB,IAAIoC,mBAAqBhyB,KAAK4vB,IAAIoC,kBAAkBhzB,KAC3DgB,KAAKiyB,iBAAiB/yB,EAAK6yB,WAE3B/xB,KAAK8uB,mBAAmBzzB,KAAK6D,EAAK6yB,YAGlC7yB,EAAK8tB,KACPhtB,KAAK4vB,IAAIsC,qBAAqB,IAAKlyB,KAAKwuB,MAA2B,sBAAEtvB,IAClE0Z,MAAK,KACA5Y,KAAKsb,YAETtb,KAAK8uB,mBAAmBrF,SAAQsI,IAC9B/xB,KAAKiyB,iBAAiBF,EAAS,IAEjC/xB,KAAK8uB,mBAAqB,GAEc,UAApC9uB,KAAK4vB,IAAIoC,kBAAkBhzB,MAAkBgB,KAAKmyB,gBAAc,IAErEtZ,OAAMzK,IACLpO,KAAKme,QAAQ0O,EAAQze,EAAK,8BAA6B,IAGxDlP,EAAK8tB,KAAQ9tB,EAAK6yB,WAAc7yB,EAAKyyB,aAAgBzyB,EAAK0yB,oBAC7D5xB,KAAKme,QAAQ0O,EAAQ,IAAIjxB,MAAM,4CAA6C,iBA3CzD,CA6CvB,CAEA,gBAAAq2B,CAAkBF,GAChB,MAAMK,EAAkB,IAAIpyB,KAAKwuB,MAAMpa,gBAAgB2d,GACvD/xB,KAAK4vB,IAAIyC,gBAAgBD,GACtBvZ,OAAMzK,KACAgkB,EAAgBb,SAAWa,EAAgBb,QAAQlX,SAAS,UAtNvElW,QAAQmN,KAuNK,uCAELtR,KAAKme,QAAQ0O,EAAQze,EAAK,yBAC5B,GAEN,CAMA,IAAAkkB,CAAM5W,GACJ,IAAI1b,KAAKguB,WAAT,CACA,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,uCAAwC,iBACpFoE,KAAK6uB,SAASyD,KAAK5W,EAFE,CAGvB,CAOA,cAAAmW,CAAgBC,EAAMxiB,GACpB,IAAItP,KAAKguB,WAAT,CACA,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,iDAAkD,iBAG9F,GAFAoE,KAAKmtB,OAAO,oBAERntB,KAAKqtB,UACP,IACErtB,KAAK4vB,IAAIiC,eAAeC,EAAMxiB,GAC9BtP,KAAKgxB,mBACP,CAAE,MAAO5iB,GACPpO,KAAKme,QAAQ0O,EAAQze,EAAK,uBAC5B,MAEApO,KAAKiR,KAAK,SAAU,CAClBjS,KAAM,qBACN4yB,mBAAoB,CAAEE,OAAMxiB,SAdX,CAiBvB,CAMA,SAAAuhB,CAAWhU,GACT,IAAI7c,KAAKguB,WAAT,CACA,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,4CAA6C,iBACzFoE,KAAKmtB,OAAO,eAEZtQ,EAAO0V,YAAY9I,SAAQ+I,IACzBxyB,KAAKyyB,SAASD,EAAO3V,EAAM,GALR,CAOvB,CAOA,QAAA4V,CAAUD,EAAO3V,GACf,GAAI7c,KAAKguB,WAAY,OACrB,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,2CAA4C,iBACxFoE,KAAKmtB,OAAO,cAEZ,MAAMuF,EAAS1yB,KAAKovB,WAAW7qB,IAAIiuB,IAAU,IAAInD,IACjD,IAAIsD,EAASD,EAAOnuB,IAAIsY,GACxB,GAAK8V,EAKE,MAAIA,EAAOC,QACV/F,EAAQ,IAAIjxB,MAAM,qFAAsF,sBAExGixB,EAAQ,IAAIjxB,MAAM,gDAAiD,4BAPzE+2B,EAAS3yB,KAAK4vB,IAAI6C,SAASD,EAAO3V,GAClC6V,EAAOvtB,IAAI0X,EAAQ8V,GACnB3yB,KAAKovB,WAAWjqB,IAAIqtB,EAAOE,GAC3B1yB,KAAKgxB,mBAMT,CAQA,YAAA6B,CAAcC,EAAUC,EAAUlW,GAChC,GAAI7c,KAAKguB,WAAY,OACrB,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,+CAAgD,iBAC5FoE,KAAKmtB,OAAO,kBAEZ,MAAMuF,EAAS1yB,KAAKovB,WAAW7qB,IAAIuuB,GAC7BH,EAASD,EAASA,EAAOnuB,IAAIsY,GAAU,KAC7C,IAAK8V,EACH,MAAM9F,EAAQ,IAAIjxB,MAAM,8CAA+C,uBAErEm3B,GAAU/yB,KAAKovB,WAAWjqB,IAAI4tB,EAAUL,GAEjB,MAAvBC,EAAOE,aACTF,EAAOE,aAAaE,GAEpB/yB,KAAKme,QAAQ0O,EAAQ,IAAIjxB,MAAM,iDAAkD,gCAErF,CAOA,WAAAo3B,CAAaR,EAAO3V,GAClB,GAAI7c,KAAKguB,WAAY,OACrB,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,8CAA+C,iBAC3FoE,KAAKmtB,OAAO,kBAEZ,MAAMuF,EAAS1yB,KAAKovB,WAAW7qB,IAAIiuB,GAC7BG,EAASD,EAASA,EAAOnuB,IAAIsY,GAAU,KAC7C,IAAK8V,EACH,MAAM9F,EAAQ,IAAIjxB,MAAM,6CAA8C,uBAExE,IACE+2B,EAAOC,SAAU,EACjB5yB,KAAK4vB,IAAIoD,YAAYL,EACvB,CAAE,MAAOvkB,GACU,wBAAbA,EAAI/B,KACNrM,KAAKmvB,uBAAuB9zB,KAAKs3B,GAEjC3yB,KAAKme,QAAQ0O,EAAQze,EAAK,oBAE9B,CACApO,KAAKgxB,mBACP,CAMA,YAAAiC,CAAcpW,GACZ,IAAI7c,KAAKguB,WAAT,CACA,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,+CAAgD,iBAC5FoE,KAAKmtB,OAAO,mBAEZtQ,EAAO0V,YAAY9I,SAAQ+I,IACzBxyB,KAAKgzB,YAAYR,EAAO3V,EAAM,GALX,CAOvB,CAEA,iBAAAmU,GACEhxB,KAAKmtB,OAAO,qBACRntB,KAAKivB,sBACTjvB,KAAKivB,qBAAsB,EAC3BzW,GAAe,KACbxY,KAAKivB,qBAAsB,EACvBjvB,KAAKqtB,YAAcrtB,KAAKgvB,mBAC1BhvB,KAAKmtB,OAAO,gCACZntB,KAAKkzB,aAELlzB,KAAKmtB,OAAO,uDAEdntB,KAAKgvB,mBAAoB,KAE7B,CAEA,SAAAkE,GACE,IAAIlzB,KAAKguB,WAAT,CACA,GAAIhuB,KAAKsb,UAAW,MAAMuR,EAAQ,IAAIjxB,MAAM,4CAA6C,iBAErFoE,KAAKqtB,UACHrtB,KAAK+uB,gBACP/uB,KAAKkvB,oBAAqB,EAC1BlvB,KAAKmtB,OAAO,mCAEZntB,KAAKmtB,OAAO,qBACZrW,YAAW,KACT9W,KAAKmzB,cAAa,GACjB,IAGDnzB,KAAK+uB,gBACP/uB,KAAKkvB,oBAAqB,EAC1BlvB,KAAKmtB,OAAO,mCAEZntB,KAAKmtB,OAAO,yCACZntB,KAAKiR,KAAK,SAAU,CAClBjS,KAAM,cACN2yB,aAAa,KAInB3xB,KAAK+uB,gBAAiB,CAzBD,CA0BvB,CAKA,OAAA5Q,CAAS/P,GACPpO,KAAKoe,SAAShQ,GAAK,QACrB,CAEA,QAAAgQ,CAAUhQ,EAAKuK,GACT3Y,KAAKsb,WAAatb,KAAKguB,aAC3BhuB,KAAKguB,YAAa,EAElBhuB,KAAKmtB,OAAO,yBAA0B/e,IAAQA,EAAI7B,SAAW6B,IAE7DoK,GAAe,KA6Bb,GA5BAxY,KAAKsb,WAAY,EACjBtb,KAAKguB,YAAa,EAElBhuB,KAAKmtB,OAAO,sBAAuB/e,IAAQA,EAAI7B,SAAW6B,IAE1DpO,KAAK6a,SAAW7a,KAAKmM,UAAW,EAE3BnM,KAAKqb,eAAeL,OAAOhb,KAAK3E,KAAK,MACrC2E,KAAK+a,eAAewF,UAAUvgB,KAAKjE,MAExCiE,KAAKiuB,YAAa,EAClBjuB,KAAKyuB,UAAW,EAChBzuB,KAAK0uB,eAAgB,EACrB1uB,KAAKuvB,cAAgB,KACrBvvB,KAAKwvB,eAAiB,KACtBxvB,KAAKovB,WAAa,KAElBgE,cAAcpzB,KAAKsvB,kBACnBtvB,KAAKsvB,iBAAmB,KAExB8D,cAAcpzB,KAAK2vB,WACnB3vB,KAAK2vB,UAAY,KACjB3vB,KAAKyvB,OAAS,KACdzvB,KAAK0vB,IAAM,KAEP1vB,KAAKixB,gBAAgBjxB,KAAK6P,eAAe,SAAU7P,KAAKixB,gBAC5DjxB,KAAKixB,eAAiB,KAElBjxB,KAAK6uB,SAAU,CACjB,IACE7uB,KAAK6uB,SAASwE,OAChB,CAAE,MAAOjlB,GAAM,CAGfpO,KAAK6uB,SAASyE,UAAY,KAC1BtzB,KAAK6uB,SAAS0E,OAAS,KACvBvzB,KAAK6uB,SAASvN,QAAU,KACxBthB,KAAK6uB,SAASpN,QAAU,IAC1B,CACA,GAAIzhB,KAAK4vB,IAAK,CACZ,IACE5vB,KAAK4vB,IAAIyD,OACX,CAAE,MAAOjlB,GAAM,CAGfpO,KAAK4vB,IAAIG,2BAA6B,KACtC/vB,KAAK4vB,IAAIK,0BAA4B,KACrCjwB,KAAK4vB,IAAIQ,uBAAyB,KAClCpwB,KAAK4vB,IAAIU,eAAiB,KAC1BtwB,KAAK4vB,IAAIkB,QAAU,KACnB9wB,KAAK4vB,IAAIgB,cAAgB,IAC3B,CACA5wB,KAAK4vB,IAAM,KACX5vB,KAAK6uB,SAAW,KAEZzgB,GAAKpO,KAAKiR,KAAK,QAAS7C,GAC5BpO,KAAKiR,KAAK,SACV0H,GAAG,IAEP,CAEA,UAAA8X,CAAY1O,GACV,IAAKA,EAAM2O,QAIT,OAAO1wB,KAAKme,QAAQ0O,EAAQ,IAAIjxB,MAAM,oDAAqD,qBAG7FoE,KAAK6uB,SAAW9M,EAAM2O,QACtB1wB,KAAK6uB,SAAS2E,WAAa,cAE6B,iBAA7CxzB,KAAK6uB,SAAS4E,6BACvBzzB,KAAK6uB,SAAS4E,2BAA6B3G,GAG7C9sB,KAAKotB,YAAcptB,KAAK6uB,SAAS6E,MAEjC1zB,KAAK6uB,SAASyE,UAAYvR,IACxB/hB,KAAK2zB,kBAAkB5R,EAAK,EAE9B/hB,KAAK6uB,SAAS+E,oBAAsB,KAClC5zB,KAAK6zB,6BAA4B,EAEnC7zB,KAAK6uB,SAAS0E,OAAS,KACrBvzB,KAAK8zB,gBAAe,EAEtB9zB,KAAK6uB,SAASvN,QAAU,KACtBthB,KAAK+zB,iBAAgB,EAEvB/zB,KAAK6uB,SAASpN,QAAUM,IACtB,MAAM3T,EAAM2T,EAAM3d,iBAAiBxI,MAC/BmmB,EAAM3d,MACN,IAAIxI,MAAM,sBAAsBmmB,EAAMxV,WAAWwV,EAAMiS,YAAYjS,EAAMkS,UAAUlS,EAAMmS,SAC7Fl0B,KAAKme,QAAQ0O,EAAQze,EAAK,oBAAmB,EAK/C,IAAI+lB,GAAY,EAChBn0B,KAAKsvB,iBAAmB8E,aAAY,KAC9Bp0B,KAAK6uB,UAAyC,YAA7B7uB,KAAK6uB,SAASyC,YAC7B6C,GAAWn0B,KAAK+zB,kBACpBI,GAAY,GAEZA,GAAY,CACd,GAvhB0B,IAyhB9B,CAEA,KAAAjW,GAAU,CAEV,MAAAwF,CAAQhI,EAAOle,EAAUmb,GACvB,GAAI3Y,KAAKsb,UAAW,OAAO3C,EAAGkU,EAAQ,IAAIjxB,MAAM,wCAAyC,qBAEzF,GAAIoE,KAAKiuB,WAAY,CACnB,IACEjuB,KAAKsyB,KAAK5W,EACZ,CAAE,MAAOtN,GACP,OAAOpO,KAAKme,QAAQ0O,EAAQze,EAAK,oBACnC,CACIpO,KAAK6uB,SAASuC,eAAiBtE,GACjC9sB,KAAKmtB,OAAO,wCAAyCntB,KAAK6uB,SAASuC,gBACnEpxB,KAAK0vB,IAAM/W,GAEXA,EAAG,KAEP,MACE3Y,KAAKmtB,OAAO,wBACZntB,KAAKyvB,OAAS/T,EACd1b,KAAK0vB,IAAM/W,CAEf,CAIA,SAAAuY,GACE,GAAIlxB,KAAKsb,UAAW,OAIpB,MAAM+Y,EAAc,KAClBvd,YAAW,IAAM9W,KAAKme,WAAW,IAAI,EAGnCne,KAAKiuB,WACPoG,IAEAr0B,KAAKuP,KAAK,UAAW8kB,EAEzB,CAEA,wBAAAC,GACMt0B,KAAKsb,WACLtb,KAAK4uB,oBACT5uB,KAAKmtB,OAAO,+BACZntB,KAAK4uB,kBAAoB9X,YAAW,KAC7B9W,KAAK2uB,eACR3uB,KAAK2uB,cAAe,EACpB3uB,KAAKmtB,OAAO,iCACZntB,KAAKiR,KAAK,cACVjR,KAAKiR,KAAK,gBACZ,GACCjR,KAAK+tB,oBACV,CAEA,YAAAoF,GACMnzB,KAAKsb,WAETtb,KAAK4vB,IAAI2E,YAAYv0B,KAAK0tB,cACvB9U,MAAK4b,IACJ,GAAIx0B,KAAKsb,UAAW,OACftb,KAAK6tB,SAAY7tB,KAAK8tB,mBAAkB0G,EAAMxH,IAAMD,EAAcyH,EAAMxH,MAC7EwH,EAAMxH,IAAMhtB,KAAK4tB,aAAa4G,EAAMxH,KAEpC,MAAMyH,EAAY,KAChB,GAAIz0B,KAAKsb,UAAW,OACpB,MAAMoW,EAAS1xB,KAAK4vB,IAAI8E,kBAAoBF,EAC5Cx0B,KAAKmtB,OAAO,UACZntB,KAAKiR,KAAK,SAAU,CAClBjS,KAAM0yB,EAAO1yB,KACbguB,IAAK0E,EAAO1E,KACb,EAcHhtB,KAAK4vB,IAAI+E,oBAAoBH,GAC1B5b,MAZe,KAChB5Y,KAAKmtB,OAAO,uBACRntB,KAAKsb,YACLtb,KAAK6tB,SAAW7tB,KAAK2uB,aAAc8F,IAClCz0B,KAAKuP,KAAK,eAAgBklB,GAAS,IASvC5b,OANazK,IACdpO,KAAKme,QAAQ0O,EAAQze,EAAK,6BAA4B,GAKxC,IAEjByK,OAAMzK,IACLpO,KAAKme,QAAQ0O,EAAQze,EAAK,oBAAmB,GAEnD,CAEA,2BAAAwmB,GACM50B,KAAK4vB,IAAIiF,iBACX70B,KAAK4vB,IAAIiF,kBAAkBpL,SAAQqL,IAC5BA,EAAYC,MAAOD,EAAYnC,OAAOH,OAAUsC,EAAYE,YAC/DF,EAAYE,WAAY,EACxBh1B,KAAK6xB,eAAeiD,EAAYnC,OAAOH,MAAMV,MAC/C,GAGN,CAEA,aAAAK,GACMnyB,KAAKsb,WAETtb,KAAK4vB,IAAIqF,aAAaj1B,KAAK2tB,eACxB/U,MAAKsc,IACJ,GAAIl1B,KAAKsb,UAAW,OACftb,KAAK6tB,SAAY7tB,KAAK8tB,mBAAkBoH,EAAOlI,IAAMD,EAAcmI,EAAOlI,MAC/EkI,EAAOlI,IAAMhtB,KAAK4tB,aAAasH,EAAOlI,KAEtC,MAAMmI,EAAa,KACjB,GAAIn1B,KAAKsb,UAAW,OACpB,MAAMoW,EAAS1xB,KAAK4vB,IAAI8E,kBAAoBQ,EAC5Cl1B,KAAKmtB,OAAO,UACZntB,KAAKiR,KAAK,SAAU,CAClBjS,KAAM0yB,EAAO1yB,KACbguB,IAAK0E,EAAO1E,MAEThtB,KAAKqtB,WAAWrtB,KAAK40B,6BAA4B,EAaxD50B,KAAK4vB,IAAI+E,oBAAoBO,GAC1Btc,MAXe,KACZ5Y,KAAKsb,YACLtb,KAAK6tB,SAAW7tB,KAAK2uB,aAAcwG,IAClCn1B,KAAKuP,KAAK,eAAgB4lB,GAAU,IASxCtc,OANazK,IACdpO,KAAKme,QAAQ0O,EAAQze,EAAK,6BAA4B,GAKxC,IAEjByK,OAAMzK,IACLpO,KAAKme,QAAQ0O,EAAQze,EAAK,qBAAoB,GAEpD,CAEA,wBAAA+hB,GACMnwB,KAAKsb,WACwB,WAA7Btb,KAAK4vB,IAAIwF,iBACXp1B,KAAKme,QAAQ0O,EAAQ,IAAIjxB,MAAM,sBAAuB,0BAE1D,CAEA,iBAAAo0B,GACE,GAAIhwB,KAAKsb,UAAW,OACpB,MAAM+Z,EAAqBr1B,KAAK4vB,IAAIyF,mBAC9BC,EAAoBt1B,KAAK4vB,IAAI0F,kBAEnCt1B,KAAKmtB,OACH,kDACAkI,EACAC,GAEFt1B,KAAKiR,KAAK,iBAAkBokB,EAAoBC,GAErB,cAAvBD,GAA6D,cAAvBA,IACxCr1B,KAAKyuB,UAAW,EAChBzuB,KAAKu1B,eAEoB,WAAvBF,GACFr1B,KAAKme,QAAQ0O,EAAQ,IAAIjxB,MAAM,0BAA2B,+BAEjC,WAAvBy5B,GACFr1B,KAAKme,QAAQ0O,EAAQ,IAAIjxB,MAAM,0BAA2B,6BAE9D,CAEA,QAAA45B,CAAU7c,GAER,MAAM8c,EAAgBC,IACkC,mBAAlD54B,OAAOE,UAAUwC,SAASsB,KAAK40B,EAAOC,SACxCD,EAAOC,OAAOlM,SAAQnsB,IACpBR,OAAOkR,OAAO0nB,EAAQp4B,EAAK,IAGxBo4B,GAIwB,IAA7B11B,KAAK4vB,IAAI4F,SAASx6B,QAAgBgF,KAAK6vB,qBACzC7vB,KAAK4vB,IAAI4F,WACN5c,MAAK5V,IACJ,MAAM4yB,EAAU,GAChB5yB,EAAIymB,SAAQiM,IACVE,EAAQv6B,KAAKo6B,EAAcC,GAAO,IAEpC/c,EAAG,KAAMid,EAAO,IACfxnB,GAAOuK,EAAGvK,KAGNpO,KAAK4vB,IAAI4F,SAASx6B,OAAS,EACpCgF,KAAK4vB,IAAI4F,UAASxyB,IAEhB,GAAIhD,KAAKsb,UAAW,OAEpB,MAAMsa,EAAU,GAChB5yB,EAAI6yB,SAASpM,SAAQoM,IACnB,MAAMH,EAAS,CAAC,EAChBG,EAAOC,QAAQrM,SAAQpd,IACrBqpB,EAAOrpB,GAAQwpB,EAAOE,KAAK1pB,EAAI,IAEjCqpB,EAAOM,GAAKH,EAAOG,GACnBN,EAAO12B,KAAO62B,EAAO72B,KACrB02B,EAAOO,UAAYJ,EAAOI,UAC1BL,EAAQv6B,KAAKo6B,EAAcC,GAAO,IAEpC/c,EAAG,KAAMid,EAAO,IACfxnB,GAAOuK,EAAGvK,KAKbuK,EAAG,KAAM,GAEb,CAEA,WAAA4c,GAEE,GADAv1B,KAAKmtB,OAAO,8BAA+BntB,KAAKyuB,SAAUzuB,KAAK0uB,eAC3D1uB,KAAKiuB,YAAcjuB,KAAKk2B,cAAgBl2B,KAAKyuB,WAAazuB,KAAK0uB,cAAe,OAElF1uB,KAAKk2B,aAAc,EAGnB,MAAMC,EAAoB,KACpBn2B,KAAKsb,WAETtb,KAAKw1B,UAAS,CAACpnB,EAAKgoB,KAClB,GAAIp2B,KAAKsb,UAAW,OAGhBlN,IAAKgoB,EAAQ,IAEjB,MAAMC,EAAmB,CAAC,EACpBC,EAAkB,CAAC,EACnBC,EAAiB,CAAC,EACxB,IAAIC,GAA6B,EAEjCJ,EAAM3M,SAAQgN,IAGM,oBAAdA,EAAKz3B,MAA4C,qBAAdy3B,EAAKz3B,OAC1Cq3B,EAAiBI,EAAKT,IAAMS,GAEZ,mBAAdA,EAAKz3B,MAA2C,oBAAdy3B,EAAKz3B,OACzCs3B,EAAgBG,EAAKT,IAAMS,GAEX,kBAAdA,EAAKz3B,MAA0C,mBAAdy3B,EAAKz3B,OACxCu3B,EAAeE,EAAKT,IAAMS,EAC5B,IAGF,MAAMC,EAA2BC,IAC/BH,GAA6B,EAE7B,IAAII,EAAQN,EAAgBK,EAAsBE,kBAE9CD,IAAUA,EAAME,IAAMF,EAAMrF,UAE9BvxB,KAAKquB,aAAeuI,EAAME,IAAMF,EAAMrF,QACtCvxB,KAAKuuB,UAAY5sB,OAAOi1B,EAAMpF,OACrBoF,GAASA,EAAMG,WAExB/2B,KAAKquB,aAAeuI,EAAMG,UAC1B/2B,KAAKuuB,UAAY5sB,OAAOi1B,EAAMI,aAC6B,iBAA3CL,EAAsBM,mBAEtCL,EAAQD,EAAsBM,iBAAiB1pB,MAAM,KACrDvN,KAAKquB,aAAeuI,EAAM,GAC1B52B,KAAKuuB,UAAY5sB,OAAOi1B,EAAM,KAE5B52B,KAAKquB,eACPruB,KAAKsuB,YAActuB,KAAKquB,aAAanoB,SAAS,KAAO,OAAS,QAGhE,IAAIgxB,EAASb,EAAiBM,EAAsBQ,mBAEhDD,IAAWA,EAAOJ,IAAMI,EAAO3F,UAEjCvxB,KAAKkuB,cAAgBgJ,EAAOJ,IAAMI,EAAO3F,QACzCvxB,KAAKouB,WAAazsB,OAAOu1B,EAAO1F,OACvB0F,GAAUA,EAAOH,WAE1B/2B,KAAKkuB,cAAgBgJ,EAAOH,UAC5B/2B,KAAKouB,WAAazsB,OAAOu1B,EAAOF,aAC4B,iBAA5CL,EAAsBS,oBAEtCF,EAASP,EAAsBS,kBAAkB7pB,MAAM,KACvDvN,KAAKkuB,cAAgBgJ,EAAO,GAC5Bl3B,KAAKouB,WAAazsB,OAAOu1B,EAAO,KAE9Bl3B,KAAKkuB,gBACPluB,KAAKmuB,aAAenuB,KAAKkuB,cAAchoB,SAAS,KAAO,OAAS,QAGlElG,KAAKmtB,OACH,qCACAntB,KAAKquB,aACLruB,KAAKuuB,UACLvuB,KAAKkuB,cACLluB,KAAKouB,WACP,EAoBF,GAjBAgI,EAAM3M,SAAQgN,IAEM,cAAdA,EAAKz3B,MAAwBy3B,EAAKY,yBACpCX,EAAyBH,EAAeE,EAAKY,2BAK9B,sBAAdZ,EAAKz3B,MAA8D,SAA9By3B,EAAKa,uBAC3B,kBAAdb,EAAKz3B,MAA0C,mBAAdy3B,EAAKz3B,OAA8By3B,EAAKc,WAE3Eb,EAAyBD,EAC3B,IAKGD,GAAgC15B,OAAO2W,KAAK8iB,GAAgBv7B,SAAU8B,OAAO2W,KAAK6iB,GAAiBt7B,OAAxG,CAQA,GAJEgF,KAAKk2B,aAAc,EACnBl2B,KAAKiuB,YAAa,EAGhBjuB,KAAKyvB,OAAQ,CACf,IACEzvB,KAAKsyB,KAAKtyB,KAAKyvB,OACjB,CAAE,MAAOrhB,GACP,OAAOpO,KAAKme,QAAQ0O,EAAQze,EAAK,oBACnC,CACApO,KAAKyvB,OAAS,KACdzvB,KAAKmtB,OAAO,0CAEZ,MAAMxU,EAAK3Y,KAAK0vB,IAChB1vB,KAAK0vB,IAAM,KACX/W,EAAG,KACL,CAIwD,iBAA7C3Y,KAAK6uB,SAAS4E,6BACvBzzB,KAAK2vB,UAAYyE,aAAY,IAAMp0B,KAAKw3B,eAAe,KACnDx3B,KAAK2vB,UAAU8H,OAAOz3B,KAAK2vB,UAAU8H,SAG3Cz3B,KAAKmtB,OAAO,WACZntB,KAAKiR,KAAK,UAxBV,MALE6F,WAAWqf,EAAmB,IA6Bb,GACpB,EAEHA,GACF,CAEA,WAAAqB,IACOx3B,KAAK0vB,MAAQ1vB,KAAK6uB,UAAY7uB,KAAK6uB,SAASuC,eAAiBtE,GAGlE9sB,KAAK6zB,6BACP,CAEA,uBAAAxD,GACMrwB,KAAKsb,YAEuB,WAA5Btb,KAAK4vB,IAAI8H,iBACX13B,KAAK+uB,gBAAiB,EAGtB/uB,KAAKmtB,OAAO,wBAAyBntB,KAAKmvB,wBAC1CnvB,KAAKmvB,uBAAuB1F,SAAQkJ,IAClC3yB,KAAK4vB,IAAIoD,YAAYL,GACrB3yB,KAAKkvB,oBAAqB,KAE5BlvB,KAAKmvB,uBAAyB,GAE1BnvB,KAAKkvB,oBACPlvB,KAAKmtB,OAAO,8BACZntB,KAAKkvB,oBAAqB,EAC1BlvB,KAAKgxB,sBAELhxB,KAAKmtB,OAAO,cACZntB,KAAKiR,KAAK,gBAIdjR,KAAKmtB,OAAO,0BAA2BntB,KAAK4vB,IAAI8H,gBAChD13B,KAAKiR,KAAK,uBAAwBjR,KAAK4vB,IAAI8H,gBAC7C,CAEA,eAAAnH,CAAiBxO,GACX/hB,KAAKsb,YACLyG,EAAMgQ,WAAa/xB,KAAK6tB,QAC1B7tB,KAAKiR,KAAK,SAAU,CAClBjS,KAAM,YACN+yB,UAAW,CACTA,UAAWhQ,EAAMgQ,UAAUA,UAC3B4F,cAAe5V,EAAMgQ,UAAU4F,cAC/BC,OAAQ7V,EAAMgQ,UAAU6F,UAGlB7V,EAAMgQ,WAAc/xB,KAAK2uB,eACnC3uB,KAAK2uB,cAAe,EACpB3uB,KAAKiR,KAAK,iBAGR8Q,EAAMgQ,WACR/xB,KAAKs0B,2BAET,CAEA,iBAAAX,CAAmB5R,GACjB,GAAI/hB,KAAKsb,UAAW,OACpB,IAAIpc,EAAO6iB,EAAM7iB,KACbA,aAAgBpB,cAAaoB,EAAO5C,EAAOe,KAAK6B,IACpDc,KAAK3E,KAAK6D,EACZ,CAEA,2BAAA20B,GACE,GAAI7zB,KAAKsb,YAActb,KAAK0vB,IAAK,OACjC1vB,KAAKmtB,OAAO,yCAA0CntB,KAAK6uB,SAASuC,gBACpE,MAAMzY,EAAK3Y,KAAK0vB,IAChB1vB,KAAK0vB,IAAM,KACX/W,EAAG,KACL,CAEA,cAAAmb,GACM9zB,KAAKiuB,YAAcjuB,KAAKsb,YAC5Btb,KAAKmtB,OAAO,mBACZntB,KAAK0uB,eAAgB,EACrB1uB,KAAKu1B,cACP,CAEA,eAAAxB,GACM/zB,KAAKsb,YACTtb,KAAKmtB,OAAO,oBACZntB,KAAKme,UACP,CAEA,QAAA4S,CAAUhP,GACJ/hB,KAAKsb,WAETyG,EAAM+J,QAAQrC,SAAQoO,IACpB73B,KAAKmtB,OAAO,YACZntB,KAAKiR,KAAK,QAAS8Q,EAAMyQ,MAAOqF,GAEhC73B,KAAKuvB,cAAcl0B,KAAK,CACtBm3B,MAAOzQ,EAAMyQ,MACb3V,OAAQgb,IAGN73B,KAAKwvB,eAAesI,MAAKC,GACpBA,EAAa/B,KAAO6B,EAAY7B,OAGzCh2B,KAAKwvB,eAAen0B,KAAKw8B,GACzBrf,GAAe,KACbxY,KAAKmtB,OAAO,aACZntB,KAAKiR,KAAK,SAAU4mB,EAAW,IAChC,GAEL,CAEA,MAAA1K,GACE,MAAMre,EAAO,GAAGlR,MAAMkD,KAAKpB,WAC3BoP,EAAK,GAAK,IAAM9O,KAAKktB,IAAM,KAAOpe,EAAK,GACvC8M,EAAMjY,MAAM,KAAMmL,EACpB,EAGFme,EAAK+K,iBAAmBrL,IAOxBM,EAAKQ,OAAS,CACZwK,WAAY,CACV,CACEC,KAAM,CACJ,+BACA,sCAINC,aAAc,gBAGhBlL,EAAKK,cAAgB,CAAC,EAEtBnf,EAAOtU,QAAUozB,yBCrhCjBpzB,EAAQu+B,WA2IR,SAAoBtpB,GAQnB,GAPAA,EAAK,IAAM9O,KAAKq4B,UAAY,KAAO,IAClCr4B,KAAKs4B,WACJt4B,KAAKq4B,UAAY,MAAQ,KAC1BvpB,EAAK,IACJ9O,KAAKq4B,UAAY,MAAQ,KAC1B,IAAMlqB,EAAOtU,QAAQ0+B,SAASv4B,KAAKw4B,OAE/Bx4B,KAAKq4B,UACT,OAGD,MAAM31B,EAAI,UAAY1C,KAAKy4B,MAC3B3pB,EAAKmT,OAAO,EAAG,EAAGvf,EAAG,kBAKrB,IAAI0Q,EAAQ,EACRslB,EAAQ,EACZ5pB,EAAK,GAAGnJ,QAAQ,eAAeoQ,IAChB,OAAVA,IAGJ3C,IACc,OAAV2C,IAGH2iB,EAAQtlB,GACT,IAGDtE,EAAKmT,OAAOyW,EAAO,EAAGh2B,EACvB,EA3KA7I,EAAQ8+B,KA6LR,SAAcC,GACb,IACKA,EACH/+B,EAAQg/B,QAAQC,QAAQ,QAASF,GAEjC/+B,EAAQg/B,QAAQE,WAAW,QAE7B,CAAE,MAAO30B,GAGT,CACD,EAvMAvK,EAAQm/B,KA+MR,WACC,IAAIC,EACJ,IACCA,EAAIp/B,EAAQg/B,QAAQK,QAAQ,QAC7B,CAAE,MAAO90B,GAGT,CAOA,OAJK60B,GAAwB,oBAAZxiB,SAA2B,QAASA,UACpDwiB,EAAIxiB,QAAQsB,IAAIohB,OAGVF,CACR,EA7NAp/B,EAAQw+B,UAyGR,WAIC,QAAsB,oBAAX5f,SAA0BA,OAAOhC,SAAoC,aAAxBgC,OAAOhC,QAAQzX,OAAuByZ,OAAOhC,QAAQ2iB,UAKpF,oBAAdC,YAA6BA,UAAUC,YAAaD,UAAUC,UAAUx5B,cAAciW,MAAM,4BAM3E,oBAAbwjB,UAA4BA,SAASC,iBAAmBD,SAASC,gBAAgBC,OAASF,SAASC,gBAAgBC,MAAMC,kBAEpH,oBAAXjhB,QAA0BA,OAAOtU,UAAYsU,OAAOtU,QAAQw1B,SAAYlhB,OAAOtU,QAAQy1B,WAAanhB,OAAOtU,QAAQyJ,QAGrG,oBAAdyrB,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUx5B,cAAciW,MAAM,mBAAqBhU,SAAS83B,OAAOC,GAAI,KAAO,IAE9H,oBAAdT,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUx5B,cAAciW,MAAM,sBACtG,EA/HAlc,EAAQg/B,QAyOR,WACC,IAGC,OAAOkB,YACR,CAAE,MAAO31B,GAGT,CACD,CAlPkB41B,GAClBngC,EAAQskB,QAAU,MACjB,IAAIhN,GAAS,EAEb,MAAO,KACDA,IACJA,GAAS,EACThN,QAAQmN,KAAK,yIACd,CAED,EATiB,GAelBzX,EAAQogC,OAAS,CAChB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAsFDpgC,EAAQqb,IAAM/Q,QAAQyX,OAASzX,QAAQ+Q,KAAO,MAAS,GAkEvD/G,EAAOtU,QAAU,EAAQ,MAAR,CAAoBA,GAErC,MAAM,WAACqgC,GAAc/rB,EAAOtU,QAM5BqgC,EAAW14B,EAAI,SAAUkZ,GACxB,IACC,OAAOrE,KAAKC,UAAUoE,EACvB,CAAE,MAAOtW,GACR,MAAO,+BAAiCA,EAAMmI,OAC/C,CACD,yBCKA4B,EAAOtU,QA3QP,SAAeke,GAqDd,SAASoiB,EAAY7B,GACpB,IAAI8B,EAEAC,EACAC,EAFAC,EAAiB,KAIrB,SAAS3e,KAAS9M,GAEjB,IAAK8M,EAAM4e,QACV,OAGD,MAAMtf,EAAOU,EAGP6e,EAAO94B,OAAO,IAAI+4B,MAClBhlB,EAAK+kB,GAAQL,GAAYK,GAC/Bvf,EAAKsd,KAAO9iB,EACZwF,EAAKyf,KAAOP,EACZlf,EAAKuf,KAAOA,EACZL,EAAWK,EAEX3rB,EAAK,GAAKqrB,EAAYS,OAAO9rB,EAAK,IAEX,iBAAZA,EAAK,IAEfA,EAAKoC,QAAQ,MAId,IAAIkC,EAAQ,EACZtE,EAAK,GAAKA,EAAK,GAAGnJ,QAAQ,iBAAiB,CAACoQ,EAAO8kB,KAElD,GAAc,OAAV9kB,EACH,MAAO,IAER3C,IACA,MAAM0nB,EAAYX,EAAYD,WAAWW,GACzC,GAAyB,mBAAdC,EAA0B,CACpC,MAAMn6B,EAAMmO,EAAKsE,GACjB2C,EAAQ+kB,EAAUh6B,KAAKoa,EAAMva,GAG7BmO,EAAKmT,OAAO7O,EAAO,GACnBA,GACD,CACA,OAAO2C,CAAK,IAIbokB,EAAY/B,WAAWt3B,KAAKoa,EAAMpM,IAEpBoM,EAAKhG,KAAOilB,EAAYjlB,KAChCvR,MAAMuX,EAAMpM,EACnB,CAgCA,OA9BA8M,EAAM0c,UAAYA,EAClB1c,EAAMyc,UAAY8B,EAAY9B,YAC9Bzc,EAAM6c,MAAQ0B,EAAYY,YAAYzC,GACtC1c,EAAMof,OAASA,EACfpf,EAAMuC,QAAUgc,EAAYhc,QAE5BrhB,OAAOuH,eAAeuX,EAAO,UAAW,CACvCtX,YAAY,EACZ8H,cAAc,EACd7H,IAAK,IACmB,OAAnBg2B,EACIA,GAEJF,IAAoBF,EAAYvB,aACnCyB,EAAkBF,EAAYvB,WAC9B0B,EAAeH,EAAYK,QAAQlC,IAG7BgC,GAERn1B,IAAKuV,IACJ6f,EAAiB7f,CAAC,IAKY,mBAArByf,EAAY7qB,MACtB6qB,EAAY7qB,KAAKsM,GAGXA,CACR,CAEA,SAASof,EAAO1C,EAAW2C,GAC1B,MAAMC,EAAWf,EAAYn6B,KAAKs4B,gBAAkC,IAAd2C,EAA4B,IAAMA,GAAa3C,GAErG,OADA4C,EAAShmB,IAAMlV,KAAKkV,IACbgmB,CACR,CAwFA,SAASC,EAAYC,GACpB,OAAOA,EAAO57B,WACZ4a,UAAU,EAAGghB,EAAO57B,WAAWxE,OAAS,GACxC2K,QAAQ,UAAW,IACtB,CA0BA,OAvQAw0B,EAAYve,MAAQue,EACpBA,EAAYkB,QAAUlB,EACtBA,EAAYS,OAoPZ,SAAgBj6B,GACf,OAAIA,aAAe/E,MACX+E,EAAI2L,OAAS3L,EAAI4L,QAElB5L,CACR,EAxPAw5B,EAAYmB,QAwLZ,WACC,MAAM1C,EAAa,IACfuB,EAAYrE,MAAM9b,IAAImhB,MACtBhB,EAAYoB,MAAMvhB,IAAImhB,GAAanhB,KAAIse,GAAa,IAAMA,KAC5D98B,KAAK,KAEP,OADA2+B,EAAYqB,OAAO,IACZ5C,CACR,EA9LAuB,EAAYqB,OAsJZ,SAAgB5C,GAOf,IAAIt+B,EANJ6/B,EAAYxB,KAAKC,GACjBuB,EAAYvB,WAAaA,EAEzBuB,EAAYrE,MAAQ,GACpBqE,EAAYoB,MAAQ,GAGpB,MAAMhuB,GAA+B,iBAAfqrB,EAA0BA,EAAa,IAAIrrB,MAAM,UACjE5S,EAAM4S,EAAMvS,OAElB,IAAKV,EAAI,EAAGA,EAAIK,EAAKL,IACfiT,EAAMjT,KAOW,OAFtBs+B,EAAarrB,EAAMjT,GAAGqL,QAAQ,MAAO,QAEtB,GACdw0B,EAAYoB,MAAMlgC,KAAK,IAAIw+B,OAAO,IAAMjB,EAAWh7B,MAAM,GAAK,MAE9Du8B,EAAYrE,MAAMz6B,KAAK,IAAIw+B,OAAO,IAAMjB,EAAa,MAGxD,EA9KAuB,EAAYK,QAsMZ,SAAiBnuB,GAChB,GAA8B,MAA1BA,EAAKA,EAAKrR,OAAS,GACtB,OAAO,EAGR,IAAIV,EACAK,EAEJ,IAAKL,EAAI,EAAGK,EAAMw/B,EAAYoB,MAAMvgC,OAAQV,EAAIK,EAAKL,IACpD,GAAI6/B,EAAYoB,MAAMjhC,GAAGmhC,KAAKpvB,GAC7B,OAAO,EAIT,IAAK/R,EAAI,EAAGK,EAAMw/B,EAAYrE,MAAM96B,OAAQV,EAAIK,EAAKL,IACpD,GAAI6/B,EAAYrE,MAAMx7B,GAAGmhC,KAAKpvB,GAC7B,OAAO,EAIT,OAAO,CACR,EA1NA8tB,EAAY5B,SAAW,EAAQ,MAC/B4B,EAAYhc,QA0PZ,WACCha,QAAQmN,KAAK,wIACd,EA1PAxU,OAAO2W,KAAKsE,GAAK0R,SAAQvb,IACxBisB,EAAYjsB,GAAO6J,EAAI7J,EAAI,IAO5BisB,EAAYrE,MAAQ,GACpBqE,EAAYoB,MAAQ,GAOpBpB,EAAYD,WAAa,CAAC,EAkB1BC,EAAYY,YAVZ,SAAqBzC,GACpB,IAAIoD,EAAO,EAEX,IAAK,IAAIphC,EAAI,EAAGA,EAAIg+B,EAAUt9B,OAAQV,IACrCohC,GAASA,GAAQ,GAAKA,EAAQpD,EAAUz9B,WAAWP,GACnDohC,GAAQ,EAGT,OAAOvB,EAAYF,OAAOn3B,KAAKqK,IAAIuuB,GAAQvB,EAAYF,OAAOj/B,OAC/D,EA2NAm/B,EAAYqB,OAAOrB,EAAYnB,QAExBmB,CACR,sCCtPA,IAAI79B,EAAS,gBAGTmB,EAAanB,EAAOmB,YAAc,SAAUD,GAE9C,QADAA,EAAW,GAAKA,IACIA,EAASsC,eAC3B,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,WAAW,IAAK,MACxI,OAAO,EACT,QACE,OAAO,EAEb,EA0CA,SAASoc,EAAc1e,GAErB,IAAI+sB,EACJ,OAFAvqB,KAAKxC,SAXP,SAA2B2hB,GACzB,IAAIwc,EA/BN,SAA4Bxc,GAC1B,IAAKA,EAAK,MAAO,OAEjB,IADA,IAAIyc,IAEF,OAAQzc,GACN,IAAK,OACL,IAAK,QACH,MAAO,OACT,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,UACT,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,SACL,IAAK,QACL,IAAK,MACH,OAAOA,EACT,QACE,GAAIyc,EAAS,OACbzc,GAAO,GAAKA,GAAKrf,cACjB87B,GAAU,EAGlB,CAKaC,CAAmB1c,GAC9B,GAAoB,iBAATwc,IAAsBr/B,EAAOmB,aAAeA,IAAeA,EAAW0hB,IAAO,MAAM,IAAIvjB,MAAM,qBAAuBujB,GAC/H,OAAOwc,GAAQxc,CACjB,CAOkB2c,CAAkBt+B,GAE1BwC,KAAKxC,UACX,IAAK,UACHwC,KAAK+7B,KAAOC,EACZh8B,KAAKjE,IAAMkgC,EACX1R,EAAK,EACL,MACF,IAAK,OACHvqB,KAAKk8B,SAAWC,EAChB5R,EAAK,EACL,MACF,IAAK,SACHvqB,KAAK+7B,KAAOK,EACZp8B,KAAKjE,IAAMsgC,EACX9R,EAAK,EACL,MACF,QAGE,OAFAvqB,KAAKrC,MAAQ2+B,OACbt8B,KAAKjE,IAAMwgC,GAGfv8B,KAAKw8B,SAAW,EAChBx8B,KAAKy8B,UAAY,EACjBz8B,KAAK08B,SAAWpgC,EAAOc,YAAYmtB,EACrC,CAmCA,SAASoS,EAAcC,GACrB,OAAIA,GAAQ,IAAa,EAAWA,GAAQ,GAAM,EAAa,EAAWA,GAAQ,GAAM,GAAa,EAAWA,GAAQ,GAAM,GAAa,EACpIA,GAAQ,GAAM,GAAQ,GAAK,CACpC,CA0DA,SAAST,EAAat/B,GACpB,IAAIuiB,EAAIpf,KAAKy8B,UAAYz8B,KAAKw8B,SAC1BvD,EAtBN,SAA6B/d,EAAMre,GACjC,GAAwB,MAAV,IAATA,EAAI,IAEP,OADAqe,EAAKshB,SAAW,EACT,IAET,GAAIthB,EAAKshB,SAAW,GAAK3/B,EAAI7B,OAAS,EAAG,CACvC,GAAwB,MAAV,IAAT6B,EAAI,IAEP,OADAqe,EAAKshB,SAAW,EACT,IAET,GAAIthB,EAAKshB,SAAW,GAAK3/B,EAAI7B,OAAS,GACZ,MAAV,IAAT6B,EAAI,IAEP,OADAqe,EAAKshB,SAAW,EACT,GAGb,CACF,CAKUK,CAAoB78B,KAAMnD,GAClC,YAAUiC,IAANm6B,EAAwBA,EACxBj5B,KAAKw8B,UAAY3/B,EAAI7B,QACvB6B,EAAIqB,KAAK8B,KAAK08B,SAAUtd,EAAG,EAAGpf,KAAKw8B,UAC5Bx8B,KAAK08B,SAASl9B,SAASQ,KAAKxC,SAAU,EAAGwC,KAAKy8B,aAEvD5/B,EAAIqB,KAAK8B,KAAK08B,SAAUtd,EAAG,EAAGviB,EAAI7B,aAClCgF,KAAKw8B,UAAY3/B,EAAI7B,QACvB,CA0BA,SAASghC,EAAUn/B,EAAKvC,GACtB,IAAKuC,EAAI7B,OAASV,GAAK,GAAM,EAAG,CAC9B,IAAI2+B,EAAIp8B,EAAI2C,SAAS,UAAWlF,GAChC,GAAI2+B,EAAG,CACL,IAAIv2B,EAAIu2B,EAAEp+B,WAAWo+B,EAAEj+B,OAAS,GAChC,GAAI0H,GAAK,OAAUA,GAAK,MAKtB,OAJA1C,KAAKw8B,SAAW,EAChBx8B,KAAKy8B,UAAY,EACjBz8B,KAAK08B,SAAS,GAAK7/B,EAAIA,EAAI7B,OAAS,GACpCgF,KAAK08B,SAAS,GAAK7/B,EAAIA,EAAI7B,OAAS,GAC7Bi+B,EAAEr7B,MAAM,GAAI,EAEvB,CACA,OAAOq7B,CACT,CAIA,OAHAj5B,KAAKw8B,SAAW,EAChBx8B,KAAKy8B,UAAY,EACjBz8B,KAAK08B,SAAS,GAAK7/B,EAAIA,EAAI7B,OAAS,GAC7B6B,EAAI2C,SAAS,UAAWlF,EAAGuC,EAAI7B,OAAS,EACjD,CAIA,SAASihC,EAASp/B,GAChB,IAAIo8B,EAAIp8B,GAAOA,EAAI7B,OAASgF,KAAKrC,MAAMd,GAAO,GAC9C,GAAImD,KAAKw8B,SAAU,CACjB,IAAIzgC,EAAMiE,KAAKy8B,UAAYz8B,KAAKw8B,SAChC,OAAOvD,EAAIj5B,KAAK08B,SAASl9B,SAAS,UAAW,EAAGzD,EAClD,CACA,OAAOk9B,CACT,CAEA,SAASmD,EAAWv/B,EAAKvC,GACvB,IAAIkG,GAAK3D,EAAI7B,OAASV,GAAK,EAC3B,OAAU,IAANkG,EAAgB3D,EAAI2C,SAAS,SAAUlF,IAC3C0F,KAAKw8B,SAAW,EAAIh8B,EACpBR,KAAKy8B,UAAY,EACP,IAANj8B,EACFR,KAAK08B,SAAS,GAAK7/B,EAAIA,EAAI7B,OAAS,IAEpCgF,KAAK08B,SAAS,GAAK7/B,EAAIA,EAAI7B,OAAS,GACpCgF,KAAK08B,SAAS,GAAK7/B,EAAIA,EAAI7B,OAAS,IAE/B6B,EAAI2C,SAAS,SAAUlF,EAAGuC,EAAI7B,OAASwF,GAChD,CAEA,SAAS67B,EAAUx/B,GACjB,IAAIo8B,EAAIp8B,GAAOA,EAAI7B,OAASgF,KAAKrC,MAAMd,GAAO,GAC9C,OAAImD,KAAKw8B,SAAiBvD,EAAIj5B,KAAK08B,SAASl9B,SAAS,SAAU,EAAG,EAAIQ,KAAKw8B,UACpEvD,CACT,CAGA,SAASqD,EAAYz/B,GACnB,OAAOA,EAAI2C,SAASQ,KAAKxC,SAC3B,CAEA,SAAS++B,EAAU1/B,GACjB,OAAOA,GAAOA,EAAI7B,OAASgF,KAAKrC,MAAMd,GAAO,EAC/C,CA1NAhD,EAAQ,EAAgBqiB,EA6BxBA,EAAclf,UAAUW,MAAQ,SAAUd,GACxC,GAAmB,IAAfA,EAAI7B,OAAc,MAAO,GAC7B,IAAIi+B,EACA3+B,EACJ,GAAI0F,KAAKw8B,SAAU,CAEjB,QAAU19B,KADVm6B,EAAIj5B,KAAKk8B,SAASr/B,IACG,MAAO,GAC5BvC,EAAI0F,KAAKw8B,SACTx8B,KAAKw8B,SAAW,CAClB,MACEliC,EAAI,EAEN,OAAIA,EAAIuC,EAAI7B,OAAei+B,EAAIA,EAAIj5B,KAAK+7B,KAAKl/B,EAAKvC,GAAK0F,KAAK+7B,KAAKl/B,EAAKvC,GAC/D2+B,GAAK,EACd,EAEA/c,EAAclf,UAAUjB,IAwGxB,SAAiBc,GACf,IAAIo8B,EAAIp8B,GAAOA,EAAI7B,OAASgF,KAAKrC,MAAMd,GAAO,GAC9C,OAAImD,KAAKw8B,SAAiBvD,EAAI,IACvBA,CACT,EAzGA/c,EAAclf,UAAU++B,KA0FxB,SAAkBl/B,EAAKvC,GACrB,IAAIwiC,EArEN,SAA6B5hB,EAAMre,EAAKvC,GACtC,IAAIkH,EAAI3E,EAAI7B,OAAS,EACrB,GAAIwG,EAAIlH,EAAG,OAAO,EAClB,IAAIiwB,EAAKoS,EAAc9/B,EAAI2E,IAC3B,OAAI+oB,GAAM,GACJA,EAAK,IAAGrP,EAAKshB,SAAWjS,EAAK,GAC1BA,KAEH/oB,EAAIlH,IAAa,IAARiwB,EAAkB,GACjCA,EAAKoS,EAAc9/B,EAAI2E,MACb,GACJ+oB,EAAK,IAAGrP,EAAKshB,SAAWjS,EAAK,GAC1BA,KAEH/oB,EAAIlH,IAAa,IAARiwB,EAAkB,GACjCA,EAAKoS,EAAc9/B,EAAI2E,MACb,GACJ+oB,EAAK,IACI,IAAPA,EAAUA,EAAK,EAAOrP,EAAKshB,SAAWjS,EAAK,GAE1CA,GAEF,CACT,CA8CcwS,CAAoB/8B,KAAMnD,EAAKvC,GAC3C,IAAK0F,KAAKw8B,SAAU,OAAO3/B,EAAI2C,SAAS,OAAQlF,GAChD0F,KAAKy8B,UAAYK,EACjB,IAAI/gC,EAAMc,EAAI7B,QAAU8hC,EAAQ98B,KAAKw8B,UAErC,OADA3/B,EAAIqB,KAAK8B,KAAK08B,SAAU,EAAG3gC,GACpBc,EAAI2C,SAAS,OAAQlF,EAAGyB,EACjC,EA9FAmgB,EAAclf,UAAUk/B,SAAW,SAAUr/B,GAC3C,GAAImD,KAAKw8B,UAAY3/B,EAAI7B,OAEvB,OADA6B,EAAIqB,KAAK8B,KAAK08B,SAAU18B,KAAKy8B,UAAYz8B,KAAKw8B,SAAU,EAAGx8B,KAAKw8B,UACzDx8B,KAAK08B,SAASl9B,SAASQ,KAAKxC,SAAU,EAAGwC,KAAKy8B,WAEvD5/B,EAAIqB,KAAK8B,KAAK08B,SAAU18B,KAAKy8B,UAAYz8B,KAAKw8B,SAAU,EAAG3/B,EAAI7B,QAC/DgF,KAAKw8B,UAAY3/B,EAAI7B,MACvB,yBC/EA,SAASyyB,EAAQphB,GAEf,IACE,IAAK,EAAAqM,EAAOqhB,aAAc,OAAO,CACnC,CAAE,MAAO1rB,GACP,OAAO,CACT,CACA,IAAI1N,EAAM,EAAA+X,EAAOqhB,aAAa1tB,GAC9B,OAAI,MAAQ1L,GACyB,SAA9BQ,OAAOR,GAAKb,aACrB,CA7DAqO,EAAOtU,QAoBP,SAAoBiU,EAAId,GACtB,GAAIygB,EAAO,iBACT,OAAO3f,EAGT,IAAIqD,GAAS,EAeb,OAdA,WACE,IAAKA,EAAQ,CACX,GAAIsc,EAAO,oBACT,MAAM,IAAI7xB,MAAMoR,GACPygB,EAAO,oBAChBtpB,QAAQ64B,MAAMhwB,GAEd7I,QAAQmN,KAAKtE,GAEfmE,GAAS,CACX,CACA,OAAOrD,EAAGnK,MAAM3D,KAAMN,UACxB,CAGF","sources":["webpack://assistant/./node_modules/base64-js/index.js","webpack://assistant/./node_modules/buffer/index.js","webpack://assistant/./node_modules/err-code/index.js","webpack://assistant/./node_modules/events/events.js","webpack://assistant/./node_modules/get-browser-rtc/index.js","webpack://assistant/./node_modules/ieee754/index.js","webpack://assistant/./node_modules/inherits/inherits_browser.js","webpack://assistant/./node_modules/ms/index.js","webpack://assistant/./node_modules/process/browser.js","webpack://assistant/./node_modules/queue-microtask/index.js","webpack://assistant/./node_modules/randombytes/browser.js","webpack://assistant/./node_modules/readable-stream/errors-browser.js","webpack://assistant/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://assistant/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://assistant/./node_modules/readable-stream/lib/_stream_readable.js","webpack://assistant/./node_modules/readable-stream/lib/_stream_transform.js","webpack://assistant/./node_modules/readable-stream/lib/_stream_writable.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://assistant/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://assistant/./node_modules/readable-stream/readable-browser.js","webpack://assistant/./node_modules/safe-buffer/index.js","webpack://assistant/./node_modules/simple-peer/index.js","webpack://assistant/./node_modules/simple-peer/node_modules/debug/src/browser.js","webpack://assistant/./node_modules/simple-peer/node_modules/debug/src/common.js","webpack://assistant/./node_modules/string_decoder/lib/string_decoder.js","webpack://assistant/./node_modules/util-deprecate/browser.js"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\n/**\n * @typedef {{ [key: string]: any }} Extensions\n * @typedef {Error} Err\n * @property {string} message\n */\n\n/**\n *\n * @param {Error} obj\n * @param {Extensions} props\n * @returns {Error & Extensions}\n */\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\n/**\n *\n * @param {any} err - An Error\n * @param {string|Extensions} code - A string code or props to set on the error\n * @param {Extensions} [props] - Props to set on the error\n * @returns {Error & Extensions}\n */\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = '';\n }\n\n if (code) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n // @ts-ignore\n const output = assign(new ErrClass(), props);\n\n return output;\n }\n}\n\nmodule.exports = createError;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// originally pulled out of simple-peer\n\nmodule.exports = function getBrowserRTC () {\n if (typeof globalThis === 'undefined') return null\n var wrtc = {\n RTCPeerConnection: globalThis.RTCPeerConnection || globalThis.mozRTCPeerConnection ||\n globalThis.webkitRTCPeerConnection,\n RTCSessionDescription: globalThis.RTCSessionDescription ||\n globalThis.mozRTCSessionDescription || globalThis.webkitRTCSessionDescription,\n RTCIceCandidate: globalThis.RTCIceCandidate || globalThis.mozRTCIceCandidate ||\n globalThis.webkitRTCIceCandidate\n }\n if (!wrtc.RTCPeerConnection) return null\n return wrtc\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\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); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*! simple-peer. MIT License. Feross Aboukhadijeh */\nconst debug = require('debug')('simple-peer')\nconst getBrowserRTC = require('get-browser-rtc')\nconst randombytes = require('randombytes')\nconst stream = require('readable-stream')\nconst queueMicrotask = require('queue-microtask') // TODO: remove when Node 10 is not supported\nconst errCode = require('err-code')\nconst { Buffer } = require('buffer')\n\nconst MAX_BUFFERED_AMOUNT = 64 * 1024\nconst ICECOMPLETE_TIMEOUT = 5 * 1000\nconst CHANNEL_CLOSING_TIMEOUT = 5 * 1000\n\n// HACK: Filter trickle lines when trickle is disabled #354\nfunction filterTrickle (sdp) {\n return sdp.replace(/a=ice-options:trickle\\s\\n/g, '')\n}\n\nfunction warn (message) {\n console.warn(message)\n}\n\n/**\n * WebRTC peer connection. Same API as node core `net.Socket`, plus a few extra methods.\n * Duplex stream.\n * @param {Object} opts\n */\nclass Peer extends stream.Duplex {\n constructor (opts) {\n opts = Object.assign({\n allowHalfOpen: false\n }, opts)\n\n super(opts)\n\n this._id = randombytes(4).toString('hex').slice(0, 7)\n this._debug('new peer %o', opts)\n\n this.channelName = opts.initiator\n ? opts.channelName || randombytes(20).toString('hex')\n : null\n\n this.initiator = opts.initiator || false\n this.channelConfig = opts.channelConfig || Peer.channelConfig\n this.channelNegotiated = this.channelConfig.negotiated\n this.config = Object.assign({}, Peer.config, opts.config)\n this.offerOptions = opts.offerOptions || {}\n this.answerOptions = opts.answerOptions || {}\n this.sdpTransform = opts.sdpTransform || (sdp => sdp)\n this.streams = opts.streams || (opts.stream ? [opts.stream] : []) // support old \"stream\" option\n this.trickle = opts.trickle !== undefined ? opts.trickle : true\n this.allowHalfTrickle = opts.allowHalfTrickle !== undefined ? opts.allowHalfTrickle : false\n this.iceCompleteTimeout = opts.iceCompleteTimeout || ICECOMPLETE_TIMEOUT\n\n this.destroyed = false\n this.destroying = false\n this._connected = false\n\n this.remoteAddress = undefined\n this.remoteFamily = undefined\n this.remotePort = undefined\n this.localAddress = undefined\n this.localFamily = undefined\n this.localPort = undefined\n\n this._wrtc = (opts.wrtc && typeof opts.wrtc === 'object')\n ? opts.wrtc\n : getBrowserRTC()\n\n if (!this._wrtc) {\n if (typeof window === 'undefined') {\n throw errCode(new Error('No WebRTC support: Specify `opts.wrtc` option in this environment'), 'ERR_WEBRTC_SUPPORT')\n } else {\n throw errCode(new Error('No WebRTC support: Not a supported browser'), 'ERR_WEBRTC_SUPPORT')\n }\n }\n\n this._pcReady = false\n this._channelReady = false\n this._iceComplete = false // ice candidate trickle done (got null candidate)\n this._iceCompleteTimer = null // send an offer/answer anyway after some timeout\n this._channel = null\n this._pendingCandidates = []\n\n this._isNegotiating = false // is this peer waiting for negotiation to complete?\n this._firstNegotiation = true\n this._batchedNegotiation = false // batch synchronous negotiations\n this._queuedNegotiation = false // is there a queued negotiation request?\n this._sendersAwaitingStable = []\n this._senderMap = new Map()\n this._closingInterval = null\n\n this._remoteTracks = []\n this._remoteStreams = []\n\n this._chunk = null\n this._cb = null\n this._interval = null\n\n try {\n this._pc = new (this._wrtc.RTCPeerConnection)(this.config)\n } catch (err) {\n this.destroy(errCode(err, 'ERR_PC_CONSTRUCTOR'))\n return\n }\n\n // We prefer feature detection whenever possible, but sometimes that's not\n // possible for certain implementations.\n this._isReactNativeWebrtc = typeof this._pc._peerConnectionId === 'number'\n\n this._pc.oniceconnectionstatechange = () => {\n this._onIceStateChange()\n }\n this._pc.onicegatheringstatechange = () => {\n this._onIceStateChange()\n }\n this._pc.onconnectionstatechange = () => {\n this._onConnectionStateChange()\n }\n this._pc.onsignalingstatechange = () => {\n this._onSignalingStateChange()\n }\n this._pc.onicecandidate = event => {\n this._onIceCandidate(event)\n }\n\n // HACK: Fix for odd Firefox behavior, see: https://github.com/feross/simple-peer/pull/783\n if (typeof this._pc.peerIdentity === 'object') {\n this._pc.peerIdentity.catch(err => {\n this.destroy(errCode(err, 'ERR_PC_PEER_IDENTITY'))\n })\n }\n\n // Other spec events, unused by this implementation:\n // - onconnectionstatechange\n // - onicecandidateerror\n // - onfingerprintfailure\n // - onnegotiationneeded\n\n if (this.initiator || this.channelNegotiated) {\n this._setupData({\n channel: this._pc.createDataChannel(this.channelName, this.channelConfig)\n })\n } else {\n this._pc.ondatachannel = event => {\n this._setupData(event)\n }\n }\n\n if (this.streams) {\n this.streams.forEach(stream => {\n this.addStream(stream)\n })\n }\n this._pc.ontrack = event => {\n this._onTrack(event)\n }\n\n this._debug('initial negotiation')\n this._needsNegotiation()\n\n this._onFinishBound = () => {\n this._onFinish()\n }\n this.once('finish', this._onFinishBound)\n }\n\n get bufferSize () {\n return (this._channel && this._channel.bufferedAmount) || 0\n }\n\n // HACK: it's possible channel.readyState is \"closing\" before peer.destroy() fires\n // https://bugs.chromium.org/p/chromium/issues/detail?id=882743\n get connected () {\n return (this._connected && this._channel.readyState === 'open')\n }\n\n address () {\n return { port: this.localPort, family: this.localFamily, address: this.localAddress }\n }\n\n signal (data) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot signal after peer is destroyed'), 'ERR_DESTROYED')\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data)\n } catch (err) {\n data = {}\n }\n }\n this._debug('signal()')\n\n if (data.renegotiate && this.initiator) {\n this._debug('got request to renegotiate')\n this._needsNegotiation()\n }\n if (data.transceiverRequest && this.initiator) {\n this._debug('got request for transceiver')\n this.addTransceiver(data.transceiverRequest.kind, data.transceiverRequest.init)\n }\n if (data.candidate) {\n if (this._pc.remoteDescription && this._pc.remoteDescription.type) {\n this._addIceCandidate(data.candidate)\n } else {\n this._pendingCandidates.push(data.candidate)\n }\n }\n if (data.sdp) {\n this._pc.setRemoteDescription(new (this._wrtc.RTCSessionDescription)(data))\n .then(() => {\n if (this.destroyed) return\n\n this._pendingCandidates.forEach(candidate => {\n this._addIceCandidate(candidate)\n })\n this._pendingCandidates = []\n\n if (this._pc.remoteDescription.type === 'offer') this._createAnswer()\n })\n .catch(err => {\n this.destroy(errCode(err, 'ERR_SET_REMOTE_DESCRIPTION'))\n })\n }\n if (!data.sdp && !data.candidate && !data.renegotiate && !data.transceiverRequest) {\n this.destroy(errCode(new Error('signal() called with invalid signal data'), 'ERR_SIGNALING'))\n }\n }\n\n _addIceCandidate (candidate) {\n const iceCandidateObj = new this._wrtc.RTCIceCandidate(candidate)\n this._pc.addIceCandidate(iceCandidateObj)\n .catch(err => {\n if (!iceCandidateObj.address || iceCandidateObj.address.endsWith('.local')) {\n warn('Ignoring unsupported ICE candidate.')\n } else {\n this.destroy(errCode(err, 'ERR_ADD_ICE_CANDIDATE'))\n }\n })\n }\n\n /**\n * Send text/binary data to the remote peer.\n * @param {ArrayBufferView|ArrayBuffer|Buffer|string|Blob} chunk\n */\n send (chunk) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot send after peer is destroyed'), 'ERR_DESTROYED')\n this._channel.send(chunk)\n }\n\n /**\n * Add a Transceiver to the connection.\n * @param {String} kind\n * @param {Object} init\n */\n addTransceiver (kind, init) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot addTransceiver after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('addTransceiver()')\n\n if (this.initiator) {\n try {\n this._pc.addTransceiver(kind, init)\n this._needsNegotiation()\n } catch (err) {\n this.destroy(errCode(err, 'ERR_ADD_TRANSCEIVER'))\n }\n } else {\n this.emit('signal', { // request initiator to renegotiate\n type: 'transceiverRequest',\n transceiverRequest: { kind, init }\n })\n }\n }\n\n /**\n * Add a MediaStream to the connection.\n * @param {MediaStream} stream\n */\n addStream (stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot addStream after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('addStream()')\n\n stream.getTracks().forEach(track => {\n this.addTrack(track, stream)\n })\n }\n\n /**\n * Add a MediaStreamTrack to the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\n addTrack (track, stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot addTrack after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('addTrack()')\n\n const submap = this._senderMap.get(track) || new Map() // nested Maps map [track, stream] to sender\n let sender = submap.get(stream)\n if (!sender) {\n sender = this._pc.addTrack(track, stream)\n submap.set(stream, sender)\n this._senderMap.set(track, submap)\n this._needsNegotiation()\n } else if (sender.removed) {\n throw errCode(new Error('Track has been removed. You should enable/disable tracks that you want to re-add.'), 'ERR_SENDER_REMOVED')\n } else {\n throw errCode(new Error('Track has already been added to that stream.'), 'ERR_SENDER_ALREADY_ADDED')\n }\n }\n\n /**\n * Replace a MediaStreamTrack by another in the connection.\n * @param {MediaStreamTrack} oldTrack\n * @param {MediaStreamTrack} newTrack\n * @param {MediaStream} stream\n */\n replaceTrack (oldTrack, newTrack, stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot replaceTrack after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('replaceTrack()')\n\n const submap = this._senderMap.get(oldTrack)\n const sender = submap ? submap.get(stream) : null\n if (!sender) {\n throw errCode(new Error('Cannot replace track that was never added.'), 'ERR_TRACK_NOT_ADDED')\n }\n if (newTrack) this._senderMap.set(newTrack, submap)\n\n if (sender.replaceTrack != null) {\n sender.replaceTrack(newTrack)\n } else {\n this.destroy(errCode(new Error('replaceTrack is not supported in this browser'), 'ERR_UNSUPPORTED_REPLACETRACK'))\n }\n }\n\n /**\n * Remove a MediaStreamTrack from the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\n removeTrack (track, stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot removeTrack after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('removeSender()')\n\n const submap = this._senderMap.get(track)\n const sender = submap ? submap.get(stream) : null\n if (!sender) {\n throw errCode(new Error('Cannot remove track that was never added.'), 'ERR_TRACK_NOT_ADDED')\n }\n try {\n sender.removed = true\n this._pc.removeTrack(sender)\n } catch (err) {\n if (err.name === 'NS_ERROR_UNEXPECTED') {\n this._sendersAwaitingStable.push(sender) // HACK: Firefox must wait until (signalingState === stable) https://bugzilla.mozilla.org/show_bug.cgi?id=1133874\n } else {\n this.destroy(errCode(err, 'ERR_REMOVE_TRACK'))\n }\n }\n this._needsNegotiation()\n }\n\n /**\n * Remove a MediaStream from the connection.\n * @param {MediaStream} stream\n */\n removeStream (stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot removeStream after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('removeSenders()')\n\n stream.getTracks().forEach(track => {\n this.removeTrack(track, stream)\n })\n }\n\n _needsNegotiation () {\n this._debug('_needsNegotiation')\n if (this._batchedNegotiation) return // batch synchronous renegotiations\n this._batchedNegotiation = true\n queueMicrotask(() => {\n this._batchedNegotiation = false\n if (this.initiator || !this._firstNegotiation) {\n this._debug('starting batched negotiation')\n this.negotiate()\n } else {\n this._debug('non-initiator initial negotiation request discarded')\n }\n this._firstNegotiation = false\n })\n }\n\n negotiate () {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot negotiate after peer is destroyed'), 'ERR_DESTROYED')\n\n if (this.initiator) {\n if (this._isNegotiating) {\n this._queuedNegotiation = true\n this._debug('already negotiating, queueing')\n } else {\n this._debug('start negotiation')\n setTimeout(() => { // HACK: Chrome crashes if we immediately call createOffer\n this._createOffer()\n }, 0)\n }\n } else {\n if (this._isNegotiating) {\n this._queuedNegotiation = true\n this._debug('already negotiating, queueing')\n } else {\n this._debug('requesting negotiation from initiator')\n this.emit('signal', { // request initiator to renegotiate\n type: 'renegotiate',\n renegotiate: true\n })\n }\n }\n this._isNegotiating = true\n }\n\n // TODO: Delete this method once readable-stream is updated to contain a default\n // implementation of destroy() that automatically calls _destroy()\n // See: https://github.com/nodejs/readable-stream/issues/283\n destroy (err) {\n this._destroy(err, () => {})\n }\n\n _destroy (err, cb) {\n if (this.destroyed || this.destroying) return\n this.destroying = true\n\n this._debug('destroying (error: %s)', err && (err.message || err))\n\n queueMicrotask(() => { // allow events concurrent with the call to _destroy() to fire (see #692)\n this.destroyed = true\n this.destroying = false\n\n this._debug('destroy (error: %s)', err && (err.message || err))\n\n this.readable = this.writable = false\n\n if (!this._readableState.ended) this.push(null)\n if (!this._writableState.finished) this.end()\n\n this._connected = false\n this._pcReady = false\n this._channelReady = false\n this._remoteTracks = null\n this._remoteStreams = null\n this._senderMap = null\n\n clearInterval(this._closingInterval)\n this._closingInterval = null\n\n clearInterval(this._interval)\n this._interval = null\n this._chunk = null\n this._cb = null\n\n if (this._onFinishBound) this.removeListener('finish', this._onFinishBound)\n this._onFinishBound = null\n\n if (this._channel) {\n try {\n this._channel.close()\n } catch (err) {}\n\n // allow events concurrent with destruction to be handled\n this._channel.onmessage = null\n this._channel.onopen = null\n this._channel.onclose = null\n this._channel.onerror = null\n }\n if (this._pc) {\n try {\n this._pc.close()\n } catch (err) {}\n\n // allow events concurrent with destruction to be handled\n this._pc.oniceconnectionstatechange = null\n this._pc.onicegatheringstatechange = null\n this._pc.onsignalingstatechange = null\n this._pc.onicecandidate = null\n this._pc.ontrack = null\n this._pc.ondatachannel = null\n }\n this._pc = null\n this._channel = null\n\n if (err) this.emit('error', err)\n this.emit('close')\n cb()\n })\n }\n\n _setupData (event) {\n if (!event.channel) {\n // In some situations `pc.createDataChannel()` returns `undefined` (in wrtc),\n // which is invalid behavior. Handle it gracefully.\n // See: https://github.com/feross/simple-peer/issues/163\n return this.destroy(errCode(new Error('Data channel event is missing `channel` property'), 'ERR_DATA_CHANNEL'))\n }\n\n this._channel = event.channel\n this._channel.binaryType = 'arraybuffer'\n\n if (typeof this._channel.bufferedAmountLowThreshold === 'number') {\n this._channel.bufferedAmountLowThreshold = MAX_BUFFERED_AMOUNT\n }\n\n this.channelName = this._channel.label\n\n this._channel.onmessage = event => {\n this._onChannelMessage(event)\n }\n this._channel.onbufferedamountlow = () => {\n this._onChannelBufferedAmountLow()\n }\n this._channel.onopen = () => {\n this._onChannelOpen()\n }\n this._channel.onclose = () => {\n this._onChannelClose()\n }\n this._channel.onerror = event => {\n const err = event.error instanceof Error\n ? event.error\n : new Error(`Datachannel error: ${event.message} ${event.filename}:${event.lineno}:${event.colno}`)\n this.destroy(errCode(err, 'ERR_DATA_CHANNEL'))\n }\n\n // HACK: Chrome will sometimes get stuck in readyState \"closing\", let's check for this condition\n // https://bugs.chromium.org/p/chromium/issues/detail?id=882743\n let isClosing = false\n this._closingInterval = setInterval(() => { // No \"onclosing\" event\n if (this._channel && this._channel.readyState === 'closing') {\n if (isClosing) this._onChannelClose() // closing timed out: equivalent to onclose firing\n isClosing = true\n } else {\n isClosing = false\n }\n }, CHANNEL_CLOSING_TIMEOUT)\n }\n\n _read () {}\n\n _write (chunk, encoding, cb) {\n if (this.destroyed) return cb(errCode(new Error('cannot write after peer is destroyed'), 'ERR_DATA_CHANNEL'))\n\n if (this._connected) {\n try {\n this.send(chunk)\n } catch (err) {\n return this.destroy(errCode(err, 'ERR_DATA_CHANNEL'))\n }\n if (this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n this._debug('start backpressure: bufferedAmount %d', this._channel.bufferedAmount)\n this._cb = cb\n } else {\n cb(null)\n }\n } else {\n this._debug('write before connect')\n this._chunk = chunk\n this._cb = cb\n }\n }\n\n // When stream finishes writing, close socket. Half open connections are not\n // supported.\n _onFinish () {\n if (this.destroyed) return\n\n // Wait a bit before destroying so the socket flushes.\n // TODO: is there a more reliable way to accomplish this?\n const destroySoon = () => {\n setTimeout(() => this.destroy(), 1000)\n }\n\n if (this._connected) {\n destroySoon()\n } else {\n this.once('connect', destroySoon)\n }\n }\n\n _startIceCompleteTimeout () {\n if (this.destroyed) return\n if (this._iceCompleteTimer) return\n this._debug('started iceComplete timeout')\n this._iceCompleteTimer = setTimeout(() => {\n if (!this._iceComplete) {\n this._iceComplete = true\n this._debug('iceComplete timeout completed')\n this.emit('iceTimeout')\n this.emit('_iceComplete')\n }\n }, this.iceCompleteTimeout)\n }\n\n _createOffer () {\n if (this.destroyed) return\n\n this._pc.createOffer(this.offerOptions)\n .then(offer => {\n if (this.destroyed) return\n if (!this.trickle && !this.allowHalfTrickle) offer.sdp = filterTrickle(offer.sdp)\n offer.sdp = this.sdpTransform(offer.sdp)\n\n const sendOffer = () => {\n if (this.destroyed) return\n const signal = this._pc.localDescription || offer\n this._debug('signal')\n this.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n }\n\n const onSuccess = () => {\n this._debug('createOffer success')\n if (this.destroyed) return\n if (this.trickle || this._iceComplete) sendOffer()\n else this.once('_iceComplete', sendOffer) // wait for candidates\n }\n\n const onError = err => {\n this.destroy(errCode(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n this._pc.setLocalDescription(offer)\n .then(onSuccess)\n .catch(onError)\n })\n .catch(err => {\n this.destroy(errCode(err, 'ERR_CREATE_OFFER'))\n })\n }\n\n _requestMissingTransceivers () {\n if (this._pc.getTransceivers) {\n this._pc.getTransceivers().forEach(transceiver => {\n if (!transceiver.mid && transceiver.sender.track && !transceiver.requested) {\n transceiver.requested = true // HACK: Safari returns negotiated transceivers with a null mid\n this.addTransceiver(transceiver.sender.track.kind)\n }\n })\n }\n }\n\n _createAnswer () {\n if (this.destroyed) return\n\n this._pc.createAnswer(this.answerOptions)\n .then(answer => {\n if (this.destroyed) return\n if (!this.trickle && !this.allowHalfTrickle) answer.sdp = filterTrickle(answer.sdp)\n answer.sdp = this.sdpTransform(answer.sdp)\n\n const sendAnswer = () => {\n if (this.destroyed) return\n const signal = this._pc.localDescription || answer\n this._debug('signal')\n this.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n if (!this.initiator) this._requestMissingTransceivers()\n }\n\n const onSuccess = () => {\n if (this.destroyed) return\n if (this.trickle || this._iceComplete) sendAnswer()\n else this.once('_iceComplete', sendAnswer)\n }\n\n const onError = err => {\n this.destroy(errCode(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n this._pc.setLocalDescription(answer)\n .then(onSuccess)\n .catch(onError)\n })\n .catch(err => {\n this.destroy(errCode(err, 'ERR_CREATE_ANSWER'))\n })\n }\n\n _onConnectionStateChange () {\n if (this.destroyed) return\n if (this._pc.connectionState === 'failed') {\n this.destroy(errCode(new Error('Connection failed.'), 'ERR_CONNECTION_FAILURE'))\n }\n }\n\n _onIceStateChange () {\n if (this.destroyed) return\n const iceConnectionState = this._pc.iceConnectionState\n const iceGatheringState = this._pc.iceGatheringState\n\n this._debug(\n 'iceStateChange (connection: %s) (gathering: %s)',\n iceConnectionState,\n iceGatheringState\n )\n this.emit('iceStateChange', iceConnectionState, iceGatheringState)\n\n if (iceConnectionState === 'connected' || iceConnectionState === 'completed') {\n this._pcReady = true\n this._maybeReady()\n }\n if (iceConnectionState === 'failed') {\n this.destroy(errCode(new Error('Ice connection failed.'), 'ERR_ICE_CONNECTION_FAILURE'))\n }\n if (iceConnectionState === 'closed') {\n this.destroy(errCode(new Error('Ice connection closed.'), 'ERR_ICE_CONNECTION_CLOSED'))\n }\n }\n\n getStats (cb) {\n // statreports can come with a value array instead of properties\n const flattenValues = report => {\n if (Object.prototype.toString.call(report.values) === '[object Array]') {\n report.values.forEach(value => {\n Object.assign(report, value)\n })\n }\n return report\n }\n\n // Promise-based getStats() (standard)\n if (this._pc.getStats.length === 0 || this._isReactNativeWebrtc) {\n this._pc.getStats()\n .then(res => {\n const reports = []\n res.forEach(report => {\n reports.push(flattenValues(report))\n })\n cb(null, reports)\n }, err => cb(err))\n\n // Single-parameter callback-based getStats() (non-standard)\n } else if (this._pc.getStats.length > 0) {\n this._pc.getStats(res => {\n // If we destroy connection in `connect` callback this code might happen to run when actual connection is already closed\n if (this.destroyed) return\n\n const reports = []\n res.result().forEach(result => {\n const report = {}\n result.names().forEach(name => {\n report[name] = result.stat(name)\n })\n report.id = result.id\n report.type = result.type\n report.timestamp = result.timestamp\n reports.push(flattenValues(report))\n })\n cb(null, reports)\n }, err => cb(err))\n\n // Unknown browser, skip getStats() since it's anyone's guess which style of\n // getStats() they implement.\n } else {\n cb(null, [])\n }\n }\n\n _maybeReady () {\n this._debug('maybeReady pc %s channel %s', this._pcReady, this._channelReady)\n if (this._connected || this._connecting || !this._pcReady || !this._channelReady) return\n\n this._connecting = true\n\n // HACK: We can't rely on order here, for details see https://github.com/js-platform/node-webrtc/issues/339\n const findCandidatePair = () => {\n if (this.destroyed) return\n\n this.getStats((err, items) => {\n if (this.destroyed) return\n\n // Treat getStats error as non-fatal. It's not essential.\n if (err) items = []\n\n const remoteCandidates = {}\n const localCandidates = {}\n const candidatePairs = {}\n let foundSelectedCandidatePair = false\n\n items.forEach(item => {\n // TODO: Once all browsers support the hyphenated stats report types, remove\n // the non-hypenated ones\n if (item.type === 'remotecandidate' || item.type === 'remote-candidate') {\n remoteCandidates[item.id] = item\n }\n if (item.type === 'localcandidate' || item.type === 'local-candidate') {\n localCandidates[item.id] = item\n }\n if (item.type === 'candidatepair' || item.type === 'candidate-pair') {\n candidatePairs[item.id] = item\n }\n })\n\n const setSelectedCandidatePair = selectedCandidatePair => {\n foundSelectedCandidatePair = true\n\n let local = localCandidates[selectedCandidatePair.localCandidateId]\n\n if (local && (local.ip || local.address)) {\n // Spec\n this.localAddress = local.ip || local.address\n this.localPort = Number(local.port)\n } else if (local && local.ipAddress) {\n // Firefox\n this.localAddress = local.ipAddress\n this.localPort = Number(local.portNumber)\n } else if (typeof selectedCandidatePair.googLocalAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n local = selectedCandidatePair.googLocalAddress.split(':')\n this.localAddress = local[0]\n this.localPort = Number(local[1])\n }\n if (this.localAddress) {\n this.localFamily = this.localAddress.includes(':') ? 'IPv6' : 'IPv4'\n }\n\n let remote = remoteCandidates[selectedCandidatePair.remoteCandidateId]\n\n if (remote && (remote.ip || remote.address)) {\n // Spec\n this.remoteAddress = remote.ip || remote.address\n this.remotePort = Number(remote.port)\n } else if (remote && remote.ipAddress) {\n // Firefox\n this.remoteAddress = remote.ipAddress\n this.remotePort = Number(remote.portNumber)\n } else if (typeof selectedCandidatePair.googRemoteAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n remote = selectedCandidatePair.googRemoteAddress.split(':')\n this.remoteAddress = remote[0]\n this.remotePort = Number(remote[1])\n }\n if (this.remoteAddress) {\n this.remoteFamily = this.remoteAddress.includes(':') ? 'IPv6' : 'IPv4'\n }\n\n this._debug(\n 'connect local: %s:%s remote: %s:%s',\n this.localAddress,\n this.localPort,\n this.remoteAddress,\n this.remotePort\n )\n }\n\n items.forEach(item => {\n // Spec-compliant\n if (item.type === 'transport' && item.selectedCandidatePairId) {\n setSelectedCandidatePair(candidatePairs[item.selectedCandidatePairId])\n }\n\n // Old implementations\n if (\n (item.type === 'googCandidatePair' && item.googActiveConnection === 'true') ||\n ((item.type === 'candidatepair' || item.type === 'candidate-pair') && item.selected)\n ) {\n setSelectedCandidatePair(item)\n }\n })\n\n // Ignore candidate pair selection in browsers like Safari 11 that do not have any local or remote candidates\n // But wait until at least 1 candidate pair is available\n if (!foundSelectedCandidatePair && (!Object.keys(candidatePairs).length || Object.keys(localCandidates).length)) {\n setTimeout(findCandidatePair, 100)\n return\n } else {\n this._connecting = false\n this._connected = true\n }\n\n if (this._chunk) {\n try {\n this.send(this._chunk)\n } catch (err) {\n return this.destroy(errCode(err, 'ERR_DATA_CHANNEL'))\n }\n this._chunk = null\n this._debug('sent chunk from \"write before connect\"')\n\n const cb = this._cb\n this._cb = null\n cb(null)\n }\n\n // If `bufferedAmountLowThreshold` and 'onbufferedamountlow' are unsupported,\n // fallback to using setInterval to implement backpressure.\n if (typeof this._channel.bufferedAmountLowThreshold !== 'number') {\n this._interval = setInterval(() => this._onInterval(), 150)\n if (this._interval.unref) this._interval.unref()\n }\n\n this._debug('connect')\n this.emit('connect')\n })\n }\n findCandidatePair()\n }\n\n _onInterval () {\n if (!this._cb || !this._channel || this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n return\n }\n this._onChannelBufferedAmountLow()\n }\n\n _onSignalingStateChange () {\n if (this.destroyed) return\n\n if (this._pc.signalingState === 'stable') {\n this._isNegotiating = false\n\n // HACK: Firefox doesn't yet support removing tracks when signalingState !== 'stable'\n this._debug('flushing sender queue', this._sendersAwaitingStable)\n this._sendersAwaitingStable.forEach(sender => {\n this._pc.removeTrack(sender)\n this._queuedNegotiation = true\n })\n this._sendersAwaitingStable = []\n\n if (this._queuedNegotiation) {\n this._debug('flushing negotiation queue')\n this._queuedNegotiation = false\n this._needsNegotiation() // negotiate again\n } else {\n this._debug('negotiated')\n this.emit('negotiated')\n }\n }\n\n this._debug('signalingStateChange %s', this._pc.signalingState)\n this.emit('signalingStateChange', this._pc.signalingState)\n }\n\n _onIceCandidate (event) {\n if (this.destroyed) return\n if (event.candidate && this.trickle) {\n this.emit('signal', {\n type: 'candidate',\n candidate: {\n candidate: event.candidate.candidate,\n sdpMLineIndex: event.candidate.sdpMLineIndex,\n sdpMid: event.candidate.sdpMid\n }\n })\n } else if (!event.candidate && !this._iceComplete) {\n this._iceComplete = true\n this.emit('_iceComplete')\n }\n // as soon as we've received one valid candidate start timeout\n if (event.candidate) {\n this._startIceCompleteTimeout()\n }\n }\n\n _onChannelMessage (event) {\n if (this.destroyed) return\n let data = event.data\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n this.push(data)\n }\n\n _onChannelBufferedAmountLow () {\n if (this.destroyed || !this._cb) return\n this._debug('ending backpressure: bufferedAmount %d', this._channel.bufferedAmount)\n const cb = this._cb\n this._cb = null\n cb(null)\n }\n\n _onChannelOpen () {\n if (this._connected || this.destroyed) return\n this._debug('on channel open')\n this._channelReady = true\n this._maybeReady()\n }\n\n _onChannelClose () {\n if (this.destroyed) return\n this._debug('on channel close')\n this.destroy()\n }\n\n _onTrack (event) {\n if (this.destroyed) return\n\n event.streams.forEach(eventStream => {\n this._debug('on track')\n this.emit('track', event.track, eventStream)\n\n this._remoteTracks.push({\n track: event.track,\n stream: eventStream\n })\n\n if (this._remoteStreams.some(remoteStream => {\n return remoteStream.id === eventStream.id\n })) return // Only fire one 'stream' event, even though there may be multiple tracks per stream\n\n this._remoteStreams.push(eventStream)\n queueMicrotask(() => {\n this._debug('on stream')\n this.emit('stream', eventStream) // ensure all tracks have been added\n })\n })\n }\n\n _debug () {\n const args = [].slice.call(arguments)\n args[0] = '[' + this._id + '] ' + args[0]\n debug.apply(null, args)\n }\n}\n\nPeer.WEBRTC_SUPPORT = !!getBrowserRTC()\n\n/**\n * Expose peer and data channel config for overriding all Peer\n * instances. Otherwise, just set opts.config or opts.channelConfig\n * when constructing a Peer.\n */\nPeer.config = {\n iceServers: [\n {\n urls: [\n 'stun:stun.l.google.com:19302',\n 'stun:global.stun.twilio.com:3478'\n ]\n }\n ],\n sdpSemantics: 'unified-plan'\n}\n\nPeer.channelConfig = {}\n\nmodule.exports = Peer\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n"],"names":["exports","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","Error","indexOf","start","end","num","output","base64","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","value","string","encoding","isEncoding","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","this","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","m","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","c","hi","lo","utf16leToBytes","Math","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","e","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","floor","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","abs","INVALID_BASE64_RE","Infinity","leadSurrogate","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","assign","props","key","module","err","_","ErrClass","create","getPrototypeOf","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","args","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","isNaN","EventEmitter","init","once","emitter","Promise","resolve","reject","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","on","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","events","existing","warning","newListener","emit","unshift","warned","w","count","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","flags","addEventListener","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","er","context","listeners","addListener","prependListener","prependOnceListener","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","keys","rawListeners","eventNames","globalThis","wrtc","RTCPeerConnection","mozRTCPeerConnection","webkitRTCPeerConnection","RTCSessionDescription","mozRTCSessionDescription","webkitRTCSessionDescription","RTCIceCandidate","mozRTCIceCandidate","webkitRTCIceCandidate","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","rt","log","LN2","ctor","superCtor","super_","TempCtor","h","plural","ms","msAbs","isPlural","round","options","match","exec","parseFloat","parse","long","fmtShort","JSON","stringify","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","version","versions","binding","cwd","chdir","umask","promise","queueMicrotask","window","g","cb","then","catch","MAX_BYTES","crypto","msCrypto","getRandomValues","generated","codes","createErrorType","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","__proto__","oneOf","expected","thing","map","determiner","search","this_len","substring","endsWith","objectKeys","Duplex","Readable","Writable","v","method","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","self","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","chunk","ReadableState","debug","EElistenerCount","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","stream","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_read","destroy","_destroy","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","enc","p","head","content","next","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","xs","l","nOrig","doRead","pipe","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","dests","splice","ev","wrap","_this","asyncIterator","_fromList","iterable","opts","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","done","_write","err2","CorkedRequest","entry","finish","corkReq","callback","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","rState","current","hasInstance","object","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_this2","_Object$create","iterator","enumerableOnly","symbols","filter","getOwnPropertyDescriptor","_objectSpread","source","forEach","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","custom","instance","Constructor","_classCallCheck","tail","protoProps","hasStrings","_getString","_getBuffer","nb","depth","customInspect","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","req","setHeader","abort","isRequest","ERR_MISSING_ARGS","to","streams","popCallback","destroys","closed","destroyer","reduce","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","copyProps","SafeBuffer","getBrowserRTC","randombytes","errCode","MAX_BUFFERED_AMOUNT","filterTrickle","sdp","Peer","_id","_debug","channelName","initiator","channelConfig","channelNegotiated","negotiated","config","offerOptions","answerOptions","sdpTransform","trickle","allowHalfTrickle","iceCompleteTimeout","destroying","_connected","remoteAddress","remoteFamily","remotePort","localAddress","localFamily","localPort","_wrtc","_pcReady","_channelReady","_iceComplete","_iceCompleteTimer","_channel","_pendingCandidates","_isNegotiating","_firstNegotiation","_batchedNegotiation","_queuedNegotiation","_sendersAwaitingStable","_senderMap","Map","_closingInterval","_remoteTracks","_remoteStreams","_chunk","_cb","_interval","_pc","_isReactNativeWebrtc","_peerConnectionId","oniceconnectionstatechange","_onIceStateChange","onicegatheringstatechange","onconnectionstatechange","_onConnectionStateChange","onsignalingstatechange","_onSignalingStateChange","onicecandidate","_onIceCandidate","peerIdentity","_setupData","channel","createDataChannel","ondatachannel","addStream","ontrack","_onTrack","_needsNegotiation","_onFinishBound","_onFinish","bufferSize","bufferedAmount","connected","readyState","address","port","family","signal","renegotiate","transceiverRequest","addTransceiver","kind","candidate","remoteDescription","_addIceCandidate","setRemoteDescription","_createAnswer","iceCandidateObj","addIceCandidate","send","getTracks","track","addTrack","submap","sender","removed","replaceTrack","oldTrack","newTrack","removeTrack","removeStream","negotiate","_createOffer","clearInterval","close","onmessage","onopen","binaryType","bufferedAmountLowThreshold","label","_onChannelMessage","onbufferedamountlow","_onChannelBufferedAmountLow","_onChannelOpen","_onChannelClose","filename","lineno","colno","isClosing","setInterval","destroySoon","_startIceCompleteTimeout","createOffer","offer","sendOffer","localDescription","setLocalDescription","_requestMissingTransceivers","getTransceivers","transceiver","mid","requested","createAnswer","answer","sendAnswer","connectionState","iceConnectionState","iceGatheringState","_maybeReady","getStats","flattenValues","report","values","reports","result","names","stat","id","timestamp","_connecting","findCandidatePair","items","remoteCandidates","localCandidates","candidatePairs","foundSelectedCandidatePair","item","setSelectedCandidatePair","selectedCandidatePair","local","localCandidateId","ip","ipAddress","portNumber","googLocalAddress","remote","remoteCandidateId","googRemoteAddress","selectedCandidatePairId","googActiveConnection","selected","_onInterval","unref","signalingState","sdpMLineIndex","sdpMid","eventStream","some","remoteStream","WEBRTC_SUPPORT","iceServers","urls","sdpSemantics","formatArgs","useColors","namespace","humanize","diff","color","lastC","save","namespaces","storage","setItem","removeItem","load","r","getItem","DEBUG","__nwjs","navigator","userAgent","document","documentElement","style","WebkitAppearance","firebug","exception","RegExp","$1","localStorage","localstorage","colors","formatters","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","enabled","curr","Date","prev","coerce","format","formatter","selectColor","extend","delimiter","newDebug","toNamespace","regexp","default","disable","skips","enable","test","hash","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","trace"],"sourceRoot":""}