{"version":3,"file":"js/chunk-vendors-860087d8.e8e58e37.js","mappings":"iJAYWA,EASAC,E,sECrBPC,EAAsC,WAStC,OARAA,EAAWC,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACOH,EAASa,MAAMC,KAAMP,UAChC,EAEIQ,EAAS,IAAI,IAAO,0BACpBC,EAAwC,WACxC,SAASA,EAAuBC,QACZ,IAAZA,IAAsBA,EAAU,CAAC,GACrCH,KAAKI,QAAUD,CACnB,CAiBA,OAhBAD,EAAuBN,UAAUS,UAAY,SAAUC,GAInD,YAHe,IAAXA,IAAqBA,EAAS,CAAC,GACnCN,KAAKI,QAAUlB,EAASA,EAAS,CAAC,EAAGoB,GAASN,KAAKI,SACnDH,EAAOM,MAAM,aAAeP,KAAKQ,kBAAmBR,KAAKI,SAClDJ,KAAKG,OAChB,EACAD,EAAuBN,UAAUa,YAAc,WAC3C,MAAO,QACX,EACAtB,OAAOuB,eAAeR,EAAuBN,UAAW,UAAW,CAC/De,IAAK,WACD,OAAOzB,EAAS,CAAC,EAAGc,KAAKI,QAC7B,EACAQ,YAAY,EACZC,cAAc,IAEXX,CACX,CAtB2C,G,WDA3C,SAAWlB,GACPA,EAAY,qBAAuB,oBACnCA,EAAY,qBAAuB,oBACnCA,EAAY,oCAAsC,2CAClDA,EAAY,oBAAsB,mBAClCA,EAAY,sBAAwB,oBACvC,EAND,CAMGA,IAAgBA,EAAc,CAAC,IAGlC,SAAWC,GAIPA,EAAgB,aAAe,YAI/BA,EAAgB,2BAA6B,0BAI7CA,EAAgB,uBAAyB,sBAIzCA,EAAgB,qCAAuC,oCAIvDA,EAAgB,cAAgB,aAIhCA,EAAgB,8BAAgC,6BAIhDA,EAAgB,gBAAkB,eAIlCA,EAAgB,6BAA+B,2BAClD,CAjCD,CAiCGA,IAAoBA,EAAkB,CAAC,I,IEpD/B6B,EAqDAC,EAMAC,E,UC7DAC,EAAsB,WAAc,OAAO,IAAIC,EAAA,GAAeC,gBAAkB,ECWvF,EAAsC,WAStC,OARA,EAAWhC,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACO,EAASU,MAAMC,KAAMP,UAChC,EAIW2B,EAAoB,CAC3BC,kBAAmB,CAAEC,eAAgB,aACrCC,WAAY,CAAED,eAAgB,WAC9BE,uBAAwB,CAAEC,gBAAiB,aAC3CC,kBAAmB,CACfC,wBAAyB,eACzBF,gBAAiB,gBAErBG,mBAAoB,CAAED,wBAAyB,gBAC/CE,mBAAoB,CAChBF,wBAAyB,YACzBF,gBAAiB,cAErBK,OAAQ,CAAEL,gBAAiB,gBAC3BM,OAAQ,CAAEC,aAAc,aACxBC,QAAS,CAAED,aAAc,iBAEzBE,EAAwC,WACxC,SAASA,IACL,IAAIC,EAAQnC,KACZA,KAAKoC,oCAAiCC,EACtCrC,KAAKsC,uBAAyB,CAC1BN,aAAc,YACdP,gBAAiB,eACjBE,wBAAyB,eACzBL,eAAgB,WAEpBtB,KAAKuC,iCACD,IAAI,KAAW,SAAUC,GACrBA,EAAwBC,KAAKN,EAAMG,wBACnCH,EAAMO,+BAAiCF,CAC3C,GACR,CA0FA,OAtFAN,EAAuBtC,UAAU+C,wBAA0B,WACvD,IAAIR,EAAQnC,UAEgCqC,IAAxCrC,KAAKoC,iCACLpC,KAAKoC,+BAAiCnB,IAAsB2B,WAAU,SAAUC,GAC5E,IAAIC,EAASD,EAAGC,OAChBX,EAAMY,OAAOD,EAAS1B,EAAkBW,OAASX,EAAkBa,QACvE,IAER,EAIAC,EAAuBtC,UAAUoD,yBAA2B,WACxD,IAAIH,EAC2C,QAA9CA,EAAK7C,KAAKoC,sCAAmD,IAAPS,GAAyBA,EAAGI,cACnFjD,KAAKoC,oCAAiCC,CAC1C,EACAlD,OAAOuB,eAAewB,EAAuBtC,UAAW,4BAA6B,CAMjFe,IAAK,WACD,IACIuC,EADAf,EAAQnC,KAMZ,OAAOA,KAAKuC,iCACPY,KAAI,SAAUC,GACf,OAAOjB,EAAMkB,2BAA2BD,EAC5C,IACKE,QAAO,SAAUC,GAClB,IAAIC,EAAYD,IAAYL,EAE5B,OADAA,EAAWK,EACJC,CACX,GACJ,EACA5C,YAAY,EACZC,cAAc,IAKlBqB,EAAuBtC,UAAUmD,OAAS,SAAUU,GAEF,cAA1CA,EAAc9B,wBACd3B,KAAK2C,0BAE0C,iBAA1Cc,EAAc9B,yBACnB3B,KAAKgD,2BAGT,IAAIU,EAAkB,EAAS,EAAS,CAAC,EAAG1D,KAAKsC,wBAAyBmB,GAC1EzD,KAAKsC,uBAAyB,EAAS,CAAC,EAAGoB,GAC3C1D,KAAK0C,+BAA+BD,KAAKzC,KAAKsC,uBAClD,EAIAJ,EAAuBtC,UAAUyD,2BAA6B,SAAUR,GACpE,IAAIpB,EAAkBoB,EAAGpB,gBAAiBO,EAAea,EAAGb,aAAcL,EAA0BkB,EAAGlB,wBAAyBL,EAAiBuB,EAAGvB,eACpJ,MAAwB,cAApBG,GAAoD,iBAAjBO,EAC5B/C,EAAgB0E,wBACH,cAApBlC,GAC4B,iBAA5BE,EACO1C,EAAgB2E,2BACH,iBAApBnC,GAC4B,cAA5BE,GACiB,iBAAjBK,EACO/C,EAAgB4E,kCACH,iBAApBpC,GAC4B,cAA5BE,EACO1C,EAAgB6E,oBACH,cAApBrC,GAAsD,cAAnBH,EAC5BrC,EAAgB8E,0BAEH,eAApBtC,EACOxC,EAAgB+E,WACH,iBAApBvC,EACOxC,EAAgBgF,aACpBhF,EAAgBiF,SAC3B,EACOhC,CACX,CA1G2C,GF3ChCiC,EAAe,IACfC,EAAsB,CAAC,IAAK,IAAK,KACjCC,EAA0B,yBAErC,SAAWvD,GAKPA,EAAc,uBAAyB,kBAKvCA,EAAc,wBAA0B,mBAKxCA,EAAc,sBAAwB,iBAKtCA,EAAc,aAAe,QAK7BA,EAAc,iBAAmB,YAKjCA,EAAc,YAAc,OAK5BA,EAAc,6BAA+B,KAK7CA,EAAc,YAAc,OAK5BA,EAAc,gBAAkB,WAKhCA,EAAc,aAAe,OAChC,EAnDD,CAmDGA,IAAkBA,EAAgB,CAAC,IAEtC,SAAWC,GACPA,EAAoBA,EAAoB,WAAa,GAAK,UAC1DA,EAAoBA,EAAoB,aAAe,GAAK,YAC5DA,EAAoBA,EAAoB,UAAY,GAAK,QAC5D,CAJD,CAIGA,IAAwBA,EAAsB,CAAC,IAElD,SAAWC,GACPA,EAAcA,EAAc,UAAY,GAAK,SAC7CA,EAAcA,EAAc,SAAW,GAAK,QAC5CA,EAAcA,EAAc,cAAgB,GAAK,YACpD,CAJD,CAIGA,IAAkBA,EAAgB,CAAC,IAC/B,IAAIsD,EAAoC,qBAAXC,QAAgD,oBAAfA,OAAOC,IACtED,OAAOC,IAAI,mBACX,oBACKC,EAA+B,CACtCC,OAAQ,oCACR,mBAAoB,UACpB,eAAgB,mCAKTC,EAA0B,KAI1BC,EAAoB,KAIpBC,EAA6B,IAI7BC,EAAmC,KG3F1CC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB7F,OAAOgG,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIvF,KAAKuF,EAAOA,EAAErF,eAAeF,KAAIsF,EAAEtF,GAAKuF,EAAEvF,GAAI,EACtEqF,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAEhB,SAASI,IAAOtF,KAAKuF,YAAcN,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAErF,UAAkB,OAANsF,EAAa/F,OAAOqG,OAAON,IAAMI,EAAG1F,UAAYsF,EAAEtF,UAAW,IAAI0F,EACnF,CACH,CAZ2C,GAaxC,EAAsC,WAStC,OARA,EAAWnG,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACO,EAASU,MAAMC,KAAMP,UAChC,EACIgG,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACIgE,EAA4C,SAAUf,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EACImB,EAAkC,SAAUpI,EAAG8G,GAC/C,IAAI/G,EAAI,CAAC,EACT,IAAK,IAAIM,KAAKL,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,IAAMyG,EAAEuB,QAAQhI,GAAK,IAC9EN,EAAEM,GAAKL,EAAEK,IACb,GAAS,MAALL,GAAqD,oBAAjCH,OAAOyI,sBACtB,KAAIrI,EAAI,EAAb,IAAgBI,EAAIR,OAAOyI,sBAAsBtI,GAAIC,EAAII,EAAED,OAAQH,IAC3D6G,EAAEuB,QAAQhI,EAAEJ,IAAM,GAAKJ,OAAOS,UAAUiI,qBAAqB/H,KAAKR,EAAGK,EAAEJ,MACvEF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,IAF4B,CAItD,OAAOF,CACX,EAoBI,EAAS,IAAI,IAAO,sBACjB,SAASyI,EAAexE,EAAQyE,GAInC,IAHA,IAAIC,EAAc1E,EAAO2E,MAAM,KAC3BvI,EAASsI,EAAYtI,OACrBwI,EAAaH,EAAME,MAAM,KACpB1I,EAAI,EAAGA,EAAIG,IAAUH,EAAG,CAC7B,IAAI4I,EAAOH,EAAYzI,GACnB6I,EAAQF,EAAW3I,GACvB,GAAa,MAAT4I,EACA,OAAOD,EAAWxI,QAAUA,EAChC,GAAa,MAATyI,GAAgBA,IAASC,EACzB,OAAO,CACf,CACA,OAAO1I,IAAWwI,EAAWxI,MACjC,CACA,IAAI2I,EAA8B,WAC9B,SAASA,IACLrI,KAAKsI,SAAW,IAAIC,GACxB,CA4BA,OA3BAF,EAAazI,UAAUe,IAAM,SAAU6H,EAAUC,GAC7C,OAAOhD,EAAUzF,UAAM,OAAQ,GAAQ,WACnC,IAAI0I,EAAeC,EACnB,OAAOlC,EAAYzG,MAAM,SAAU6C,GAE/B,OADA6F,EAAgB1I,KAAKsI,SAAS3H,IAAI6H,GAC9BE,EACO,CAAC,EAAcA,GAEtBD,GACAE,EAAaF,EAAcD,GAC3BxI,KAAKsI,SAASM,IAAIJ,EAAUG,GACrB,CAAC,EAAcA,IAEnB,CAAC,OAActG,EAC1B,GACJ,GACJ,EACAlD,OAAOuB,eAAe2H,EAAazI,UAAW,aAAc,CACxDe,IAAK,WACD,OAAO0E,MAAMwD,KAAK7I,KAAKsI,SAASQ,OACpC,EACAlI,YAAY,EACZC,cAAc,IAElBwH,EAAazI,UAAUmJ,OAAS,SAAUP,GACtCxI,KAAKsI,SAASU,OAAOR,EACzB,EACOH,CACX,CAhCiC,GAiC7BY,EAAsB,SAAUC,EAAOC,EAAMC,GAC7CC,EAAA,GAAIC,SAAS,SAAU,CAAEJ,MAAOA,EAAOC,KAAMA,EAAMC,QAASA,GAAW,SAAU9E,EACrF,EACIiF,EAAgC,qBAAXhF,OAAyBA,OAAO,SAAW,UAChEiF,EAAoC,SAAUC,GAE9C,SAASD,EAAmBrJ,QACR,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAIgC,EAAQsH,EAAO3J,KAAKE,KAAM,EAAS,EAAS,CAAC,EAAGG,GAAU,CAAEqI,SAAUrI,EAAQqI,WAAY,EAAAkB,EAAA,UAAc1J,KAY5G,OAXAmC,EAAMwH,cAAgB,IAAItB,EAC1BlG,EAAMyH,uBAAyB,IAAI1H,EACnCC,EAAM0H,gBAAkB,IAAItB,IAC5BpG,EAAM2H,mBAAqB,IAAIvB,IAE/BpG,EAAMyH,uBAAuBG,0BAA0BnH,WAAU,SAAUoH,GACvEf,EAAoB5E,EAAyB,CACzC4F,SAAU9H,EACVV,gBAAiBuI,GAClB,uBAAyBA,EAChC,IACO7H,CACX,CA2QA,OA3RA4C,EAAUyE,EAAoBC,GAiB9BtK,OAAOuB,eAAe8I,EAAmB5J,UAAW,WAAY,CAC5De,IAAK,WACD,OAAOX,KAAKG,QAAQqI,QACxB,EACA5H,YAAY,EACZC,cAAc,IAElB1B,OAAOuB,eAAe8I,EAAmB5J,UAAW,WAAY,CAC5De,IAAK,WACD,OAAOX,KAAKG,QAAQ+J,mBACxB,EACAtJ,YAAY,EACZC,cAAc,IAElB1B,OAAOuB,eAAe8I,EAAmB5J,UAAW,eAAgB,CAChEe,IAAK,WACD,OAAOX,KAAK2J,aAChB,EACA/I,YAAY,EACZC,cAAc,IAElB1B,OAAOuB,eAAe8I,EAAmB5J,UAAW,eAAgB,CAChEe,IAAK,WACD,OAAQX,KAAKG,QACRgK,4DACT,EACAvJ,YAAY,EACZC,cAAc,IAElB2I,EAAmB5J,UAAUwK,iBAAmB,SAAUhH,GACtD,MAAwB,kBAAVA,GAAsBA,EAAMmG,EAC9C,EACAC,EAAmB5J,UAAUY,gBAAkB,WAC3C,MAAO,oBACX,EACAgJ,EAAmB5J,UAAUyK,aAAe,SAAUxH,GAClD,IAAIV,EAAQnC,KACRwI,EAAW3F,EAAG2F,SAAU8B,EAAYzH,EAAGyH,UAAWC,EAAO7C,EAAO7E,EAAI,CAAC,WAAY,cACrF,GAAkB,IAAdyH,EAAiB,CACjB,EAAOE,KAAKhC,EAAUiC,KAAKC,UAAU,EAAS,CAAEJ,UAAWA,GAAaC,GAAO,KAAM,IACrF,IAAII,EAAmB,GACvB,IAAKnC,EACD,OAEJ,IAAIoC,EAAoB5K,KAAK8J,mBAAmBnJ,IAAI6H,GACpD,IAAKoC,EACD,OAEJA,EAAkBC,SAAQ,SAAUC,GAChCA,EAASC,MAAM,6BAA+BT,GAE9CnI,EAAM0H,gBAAgBgB,SAAQ,SAAUG,EAAkBC,GACtDD,EAAiBhC,OAAO8B,GACM,IAA1BE,EAAiBE,MACjBP,EAAiBlD,KAAKwD,EAE9B,GACJ,IAEAjL,KAAK8J,mBAAmBd,OAAOR,GAE/BmC,EAAiBE,SAAQ,SAAU9C,GAC/B5F,EAAM0H,gBAAgBb,OAAOjB,EACjC,GACJ,CACJ,EACAyB,EAAmB5J,UAAUuL,UAAY,SAAUtI,GAC/C,IAAIuI,EAAMvI,EAAGuI,IAAK5C,EAAW3F,EAAG2F,SAChC,OAAO/C,EAAUzF,UAAM,OAAQ,GAAQ,WACnC,IAAIqL,EACAlJ,EAAQnC,KACZ,OAAOyG,EAAYzG,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EAcD,OAbA,EAAOxG,MAAM,2BAA4BiI,GACzCxI,KAAK4J,uBAAuB7G,OAAO3B,EAAkBS,oBACrDwJ,EAAS,IAAI,SAAYD,EAAK5C,GAE9B6C,EAAOE,iBAAmB,SAAU1I,GAChC,IAAIkF,EAAQlF,EAAG2I,gBAAiBC,EAAM5I,EAAG6I,cACzCvJ,EAAMwJ,WAAW5D,EAAO0D,EAC5B,EACAJ,EAAOO,iBAAmB,SAAU/I,GAChC,IAAIyH,EAAYzH,EAAGyH,UAAWC,EAAO7C,EAAO7E,EAAI,CAAC,cACjDV,EAAMkI,aAAa,EAAS,CAAE7B,SAAUA,EAAU8B,UAAWA,GAAaC,IAC1EpI,EAAMyH,uBAAuB7G,OAAO3B,EAAkBU,OAC1D,EACO,CAAC,EAAa,IAAIkE,SAAQ,SAAUD,EAASE,GAC5CoF,EAAOQ,QAAQ,CACXC,OAAQ3J,EAAM4J,aACdC,YAAa,EACbC,UAAW,WAAc,OAAOlG,EAAQsF,EAAS,EACjDa,UAAW,WACPjG,IACA9D,EAAMyH,uBAAuB7G,OAAO3B,EAAkBM,kBAC1D,GAER,KACR,KAAK,EAGD,OAFA4J,EAAGtE,OACHhH,KAAK4J,uBAAuB7G,OAAO3B,EAAkBI,wBAC9C,CAAC,EAAc6J,GAElC,GACJ,GACJ,EACA7B,EAAmB5J,UAAUiM,QAAU,SAAUrD,EAAUrI,GAEvD,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BsF,EAAUzF,UAAM,OAAQ,GAAQ,WACnC,IAAImC,EAAQnC,KACZ,OAAOyG,EAAYzG,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKmM,aAAaxL,IAAI6H,GAAU,SAAUA,GAC/D,OAAOrG,EAAMgJ,UAAU,EAAS,EAAS,CAAC,EAAGhL,GAAU,CAAEqI,SAAUA,IACvE,KACJ,KAAK,EAAG,MAAO,CAAC,EAAc3F,EAAGmE,QAEzC,GACJ,GACJ,EACAwC,EAAmB5J,UAAUwM,WAAa,SAAU5D,GAChD,OAAO/C,EAAUzF,UAAM,OAAQ,GAAQ,WACnC,IAAIqL,EACJ,OAAO5E,EAAYzG,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKmM,aAAaxL,IAAI6H,IACnD,KAAK,EAOD,OANA6C,EAASxI,EAAGmE,OACRqE,GAAUA,EAAOgB,gBACjBhB,EAAOe,aACPpM,KAAK4J,uBAAuB7G,OAAO3B,EAAkBU,SAEzD9B,KAAKmM,aAAapD,OAAOP,GAClB,CAAC,GAEpB,GACJ,GACJ,EACAgB,EAAmB5J,UAAU0M,QAAU,SAAUC,EAAQd,GACrD,OAAOhG,EAAUzF,UAAM,OAAQ,GAAQ,WACnC,IAAIwM,EAAcpD,EAASgC,EAAKC,EAChC,OAAO5E,EAAYzG,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAGD,OAFAyF,EAAe,GAAGC,OAAOF,GACzBnD,EAAUqB,KAAKC,UAAUe,GAClB,CAAC,EAAazL,KAAK0M,UAC9B,KAAK,EAED,OADAtB,EAAMvI,EAAGmE,OACF,CAAC,EAAahH,KAAK6L,QAAQ7L,KAAKwI,SAAU,CAAE4C,IAAKA,KAC5D,KAAK,EAID,OAHAC,EAASxI,EAAGmE,OACZ,EAAOzG,MAAM,yBAA0BiM,EAAaG,KAAK,KAAMvD,GAC/DoD,EAAa3B,SAAQ,SAAU9C,GAAS,OAAOsD,EAAOuB,KAAK7E,EAAOqB,EAAU,IACrE,CAAC,GAEpB,GACJ,GACJ,EACAI,EAAmB5J,UAAU+L,WAAa,SAAU5D,EAAO0D,GACvD,IACI,IAAIoB,EAA0B,GAC9B7M,KAAK6J,gBAAgBgB,SAAQ,SAAUG,EAAkBC,GACjDnD,EAAemD,EAAelD,IAC9B8E,EAAwBpF,KAAKuD,EAErC,IACA,IAAI8B,EAAkBrC,KAAKsC,MAAMtB,GACF,kBAApBqB,IACPA,EAAgBvD,GAAexB,GAEnC8E,EAAwBhC,SAAQ,SAAUmC,GACtCA,EAAkBnC,SAAQ,SAAUC,GAAY,OAAOA,EAASrI,KAAKqK,EAAkB,GAC3F,GACJ,CACA,MAAO/B,GACH,EAAOP,KAAK,yBAA0BO,EAAOU,EACjD,CACJ,EACAjC,EAAmB5J,UAAUgD,UAAY,SAAU2J,EAAQpM,GACvD,IAAIgC,EAAQnC,UACI,IAAZG,IAAsBA,EAAU,CAAC,GACrC,IAAIqM,EAAe,GAAGC,OAAOF,GAE7B,OADA,EAAOhM,MAAM,0BAA2BiM,EAAaG,KAAK,MACnD,IAAI,KAAW,SAAU7B,GAW5B,IAAIO,EAVJmB,EAAa3B,SAAQ,SAAU9C,GAE3B,IAAIiF,EAAoB7K,EAAM0H,gBAAgBlJ,IAAIoH,GAC7CiF,IACDA,EAAoB,IAAIC,IACxB9K,EAAM0H,gBAAgBjB,IAAIb,EAAOiF,IAErCA,EAAkBE,IAAIpC,EAC1B,IAGA,IAAIjI,EAAK1C,EAAQqI,SAAUA,OAAkB,IAAP3F,EAAgBV,EAAMqG,SAAW3F,EAEnEsK,EAAuBhL,EAAM2H,mBAAmBnJ,IAAI6H,GAwCxD,OAvCK2E,IACDA,EAAuB,IAAIF,KAE/BE,EAAqBD,IAAIpC,GACzB3I,EAAM2H,mBAAmBlB,IAAIJ,EAAU2E,GACvC,WAAsB1H,EAAUtD,OAAO,OAAQ,GAAQ,WACnD,IAAIU,EAAIuI,EAAKE,EAAI8B,EACjB,OAAO3G,EAAYzG,MAAM,SAAUqN,GAC/B,OAAQA,EAAGtG,OACP,KAAK,EAED,OADAlE,EAAK1C,EAAQiL,SACA,IAAPvI,EAAuB,CAAC,EAAa,GACpC,CAAC,EAAa7C,KAAK0M,UAC9B,KAAK,EAED,OADApB,EAAK+B,EAAGrG,OACD,CAAC,EAAa,GACzB,KAAK,EACDsE,EAAKzI,EACLwK,EAAGtG,MAAQ,EACf,KAAK,EACDqE,EAAME,EACN+B,EAAGtG,MAAQ,EACf,KAAK,EAED,OADAsG,EAAGpG,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazH,KAAK6L,QAAQrD,EAAU,CAAE4C,IAAKA,KACvD,KAAK,EAKD,OAJAC,EAASgC,EAAGrG,OACZwF,EAAa3B,SAAQ,SAAU9C,GAC3BsD,EAAOzI,UAAUmF,EACrB,IACO,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAqF,EAAMC,EAAGrG,OACT8D,EAASC,MAAMqC,GACR,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAK,CAjCL,GAkCO,WACH,IAAIvK,EAAIyI,EAuBR,OAtBA,EAAO/K,MAAM,8BAA+BiM,EAAaG,KAAK,MAC1DtB,IACkD,QAAjDxI,EAAKV,EAAM2H,mBAAmBnJ,IAAI6H,UAA8B,IAAP3F,GAAyBA,EAAGmG,OAAO8B,GAEQ,KAA9C,QAAjDQ,EAAKnJ,EAAM2H,mBAAmBnJ,IAAI6H,UAA8B,IAAP8C,OAAgB,EAASA,EAAGJ,QACvF/I,EAAMyH,uBAAuB7G,OAAO3B,EAAkBQ,oBACtDO,EAAMiK,WAAW5D,GACjBrG,EAAM2H,mBAAmBd,OAAOR,IAEpCgE,EAAa3B,SAAQ,SAAU9C,GAC3B,IAAIiF,EAAoB7K,EAAM0H,gBAAgBlJ,IAAIoH,IAC9C,IAAIkF,IACRD,EAAkBhE,OAAO8B,GAEM,IAA3BkC,EAAkB9B,OAClB/I,EAAM0H,gBAAgBb,OAAOjB,GACzBsD,EAAOgB,eACPhB,EAAOpI,YAAY8E,GAG/B,KAEG,IACX,CACJ,GACJ,EACOyB,CACX,CA7RuC,CA6RrCtJ,GC3aE,EAAwC,WACxC,IAAI8E,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB7F,OAAOgG,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIvF,KAAKuF,EAAOA,EAAErF,eAAeF,KAAIsF,EAAEtF,GAAKuF,EAAEvF,GAAI,EACtEqF,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAEhB,SAASI,IAAOtF,KAAKuF,YAAcN,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAErF,UAAkB,OAANsF,EAAa/F,OAAOqG,OAAON,IAAMI,EAAG1F,UAAYsF,EAAEtF,UAAW,IAAI0F,EACnF,CACH,CAZ2C,GAaxC,EAAwC,SAAUI,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACI,EAA4C,SAAUiD,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EACI,EAAkC,SAAUjH,EAAG8G,GAC/C,IAAI/G,EAAI,CAAC,EACT,IAAK,IAAIM,KAAKL,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,IAAMyG,EAAEuB,QAAQhI,GAAK,IAC9EN,EAAEM,GAAKL,EAAEK,IACb,GAAS,MAALL,GAAqD,oBAAjCH,OAAOyI,sBACtB,KAAIrI,EAAI,EAAb,IAAgBI,EAAIR,OAAOyI,sBAAsBtI,GAAIC,EAAII,EAAED,OAAQH,IAC3D6G,EAAEuB,QAAQhI,EAAEJ,IAAM,GAAKJ,OAAOS,UAAUiI,qBAAqB/H,KAAKR,EAAGK,EAAEJ,MACvEF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,IAF4B,CAItD,OAAOF,CACX,EACIiO,EAAkC,SAAUC,EAAG/N,GAC/C,IAAIgO,EAAsB,oBAAXjJ,QAAyBgJ,EAAEhJ,OAAO6C,UACjD,IAAKoG,EAAG,OAAOD,EACf,IAAmBE,EAAYrH,EAA3B7G,EAAIiO,EAAE1N,KAAKyN,GAAOG,EAAK,GAC3B,IACI,YAAc,IAANlO,GAAgBA,KAAM,MAAQiO,EAAIlO,EAAEkD,QAAQ8D,KAAMmH,EAAGjG,KAAKgG,EAAErK,MACxE,CACA,MAAO2H,GAAS3E,EAAI,CAAE2E,MAAOA,EAAS,CACtC,QACI,IACQ0C,IAAMA,EAAElH,OAASiH,EAAIjO,EAAE,YAAYiO,EAAE1N,KAAKP,EAClD,CACA,QAAU,GAAI6G,EAAG,MAAMA,EAAE2E,KAAO,CACpC,CACA,OAAO2C,CACX,EACIC,EAAsC,WACtC,IAAK,IAAID,EAAK,GAAInO,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAKmO,EAAKA,EAAGjB,OAAOa,EAAO7N,UAAUF,KACpF,OAAOmO,CACX,EAII,EAAS,IAAI,IAAO,sBAIpBE,EAAoC,SAAUnE,GAE9C,SAASmE,IACL,IAAIzL,EAAmB,OAAXsH,GAAmBA,EAAO1J,MAAMC,KAAMP,YAAcO,KAGhE,OAFAmC,EAAM0L,aAAe,IAAItF,IACzBpG,EAAM2L,YAAc,IAAIvF,IACjBpG,CACX,CA6LA,OAnMA,EAAUyL,EAAoBnE,GAO9BtK,OAAOuB,eAAekN,EAAmBhO,UAAW,WAAY,CAC5De,IAAK,WACD,MAAM,IAAIoN,MAAM,gBACpB,EACAnN,YAAY,EACZC,cAAc,IAElB+M,EAAmBhO,UAAUY,gBAAkB,WAC3C,MAAO,oBACX,EACAoN,EAAmBhO,UAAU0M,QAAU,SAAUC,EAAQd,EAAKtL,GAC1D,OAAO,EAAUH,UAAM,OAAQ,GAAQ,WACnC,OAAO,EAAYA,MAAM,SAAU6C,GAC/B,MAAM,IAAIkL,MAAM,0BACpB,GACJ,GACJ,EACAH,EAAmBhO,UAAUoO,SAAW,SAAUxF,GAC9C,IAAIrG,EAAQnC,KACRiO,EAAkB5I,MAAMwD,KAAK7I,KAAK6N,aAAaK,WAC9C5K,QAAO,SAAUT,GAClB,IAAIyI,EAAKgC,EAAOzK,EAAI,GAAIsL,EAAI7C,EAAG,GAC/B,OAAO6C,EAAE3F,WAAaA,CAC1B,IACKrF,KAAI,SAAUN,GACf,IAAIyI,EAAKgC,EAAOzK,EAAI,GAAIxD,EAAIiM,EAAG,GAC/B,OAAOjM,CACX,IACA4O,EAAgBpD,SAAQ,SAAUxL,GAAK,OAAO8C,EAAMiM,iBAAiB/O,EAAI,GAC7E,EACAuO,EAAmBhO,UAAUwO,iBAAmB,SAAUrG,GACtD/H,KAAK6N,aAAa7E,OAAOjB,GACzB/H,KAAK8N,YAAY9E,OAAOjB,EAC5B,EACA6F,EAAmBhO,UAAUyK,aAAe,SAAUxH,GAClD,IAAIV,EAAQnC,KACRwI,EAAW3F,EAAG2F,SAAU8B,EAAYzH,EAAGyH,UAAWC,EAAO,EAAO1H,EAAI,CAAC,WAAY,cACrF,GAAkB,IAAdyH,EAAiB,CACjB,IAAI2D,EAAkB5I,MAAMwD,KAAK7I,KAAK6N,aAAaK,WAC9C5K,QAAO,SAAUT,GAClB,IAAIyI,EAAKgC,EAAOzK,EAAI,GAAIsL,EAAI7C,EAAG,GAC/B,OAAO6C,EAAE3F,WAAaA,CAC1B,IACKrF,KAAI,SAAUN,GACf,IAAIyI,EAAKgC,EAAOzK,EAAI,GAAIxD,EAAIiM,EAAG,GAC/B,OAAOjM,CACX,IACA4O,EAAgBpD,SAAQ,SAAU9C,GAC1B5F,EAAM0H,gBAAgBwE,IAAItG,KAC1B5F,EAAM0H,gBAAgBlJ,IAAIoH,GAAO8C,SAAQ,SAAUyD,GAC1CA,EAAIC,QACLD,EAAIvD,MAAMR,EAElB,IACApI,EAAM0H,gBAAgBb,OAAOjB,GAErC,IACA/H,KAAKgO,SAASxF,EAClB,CACJ,EACAoF,EAAmBhO,UAAUwM,WAAa,SAAU5D,GAChD,OAAO,EAAUxI,UAAM,OAAQ,GAAQ,WAEnC,OAAO,EAAYA,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKmM,aAAaxL,IAAI6H,GAAU,WAAc,OAAO,IAAM,KACxF,KAAK,EAED,OADS3F,EAAGmE,OACL,CAAC,EAAayC,EAAO7J,UAAUwM,WAAWtM,KAAKE,KAAMwI,IAChE,KAAK,EAGD,OAFA3F,EAAGmE,OACHhH,KAAKgO,SAASxF,GACP,CAAC,GAEpB,GACJ,GACJ,EACAoF,EAAmBhO,UAAUgD,UAAY,SAAU2J,EAAQpM,GACvD,IAAIgC,EAAQnC,UACI,IAAZG,IAAsBA,EAAU,CAAC,GACrC,IAAImG,EAAS,IAAI,KAAW,SAAUwE,GAClC,IAAI0B,EAAe,GAAGC,OAAOF,GAkF7B,OAjFA,EAAOhM,MAAM,0BAA2BiM,EAAaG,KAAK,MAC1D,WAAsB,EAAUxK,OAAO,OAAQ,GAAQ,WACnD,IAAIU,EAAI2L,EAAiBC,EAAkBC,EAAYvL,EACnDhB,EAAQnC,KACZ,OAAO,EAAYA,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EA8BD,OA5BAyF,EAAa3B,SAAQ,SAAUxL,GACtB8C,EAAM0H,gBAAgBwE,IAAIhP,IAC3B8C,EAAM0H,gBAAgBjB,IAAIvJ,EAAG,IAAI4N,KAErC9K,EAAM0H,gBAAgBlJ,IAAItB,GAAG6N,IAAIpC,EACrC,IACAjI,EAAK1C,EAAQqO,gBAAiBA,OAAyB,IAAP3L,EAAgB,GAAKA,EAAI4L,EAAmBtO,EAAQsO,iBACpGC,EAAavP,OAAO+O,QAAQO,GAAkBtL,KAAI,SAAUN,GACxD,IAAIyI,EAAKgC,EAAOzK,EAAI,GAAI8L,EAAQrD,EAAG,GAAIjE,EAAIiE,EAAG,GAC9C,MAAO,CAACjE,EAAEU,MAAO4G,EACrB,IAEA3O,KAAK8N,YAAc,IAAIvF,IAAIoF,EAAStI,MAAMwD,KAAK7I,KAAK8N,YAAYI,WAAYQ,IAC5EvL,EAAMhE,OAAO+O,QAAQ1B,EAAaoC,QAAO,SAAUC,EAAKC,GACpD,IAAIC,EAAyBP,EAAgBQ,MAAK,SAAUb,GAAK,OAAOA,EAAE5B,OAAO5E,QAAQmH,IAAS,CAAG,IACrG,GAAIC,EAAwB,CACxB,IAAIvG,EAAWuG,EAAuB1D,OAAQD,EAAM2D,EAAuB3D,IACtEyD,EAAIrG,KACLqG,EAAIrG,GAAY,CACZ4C,IAAKA,EACLmB,OAAQ,IAAIU,MAGpB4B,EAAIrG,GAAU+D,OAAOW,IAAI4B,EAC7B,CACA,OAAOD,CACX,GAAG,CAAC,IAEG,CAAC,EAAa7I,QAAQiJ,IAAI9L,EAAIA,KAAI,SAAUN,GAC3C,IAAIyI,EAAKgC,EAAOzK,EAAI,GAAI2F,EAAW8C,EAAG,GAAI+B,EAAK/B,EAAG,GAAIF,EAAMiC,EAAGjC,IAAKmB,EAASc,EAAGd,OAChF,OAAO,EAAUpK,OAAO,OAAQ,GAAQ,WACpC,IAAIkJ,EAAQ6D,EACR/M,EAAQnC,KACZ,OAAO,EAAYA,MAAM,SAAUmP,GAC/B,OAAQA,EAAGpI,OACP,KAAK,EACDsE,EAAS,KACT8D,EAAGpI,MAAQ,EACf,KAAK,EAED,OADAoI,EAAGlI,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazH,KAAK6L,QAAQrD,EAAU,CACpCA,SAAUA,EACV4C,IAAKA,KAEjB,KAAK,EAED,OADAC,EAAS8D,EAAGnI,OACL,CAAC,EAAa,GACzB,KAAK,EAID,OAHAkI,EAAQC,EAAGnI,OACX8D,EAASC,MAAM,CAAE3B,QAAS,oBAAqB2B,MAAOmE,IACtDpE,EAASsE,WACF,CAAC,OAAc/M,GAC1B,KAAK,EASD,OANAkK,EAAO1B,SAAQ,SAAU9C,GACjBsD,EAAOgB,gBACPhB,EAAOzI,UAAUmF,GACjB5F,EAAM0L,aAAajF,IAAIb,EAAOsD,GAEtC,IACO,CAAC,EAAcA,GAElC,GACJ,GACJ,MACR,KAAK,EAGD,OADAC,EAAGtE,OACI,CAAC,GAEpB,GACJ,GAAK,CA/EL,GAgFO,WACH,EAAOzG,MAAM,8BAA+BiM,EAAaG,KAAK,MAC9DH,EAAa3B,SAAQ,SAAUxL,GAC3B,IAAIgM,EAASlJ,EAAM0L,aAAalN,IAAItB,GAChCgM,GAAUA,EAAOgB,gBACjBhB,EAAOpI,YAAY5D,GACnB8C,EAAM0L,aAAa7E,OAAO3J,GACrBgG,MAAMwD,KAAK1G,EAAM0L,aAAawB,UAAUC,MAAK,SAAUnB,GAAK,OAAOA,IAAM9C,CAAQ,KAClFlJ,EAAMiK,WAAWf,EAAO7C,WAGhCrG,EAAM0H,gBAAgBb,OAAO3J,EACjC,GACJ,CACJ,IACA,OAAO,IAAWwJ,KAAKvC,GAAQnD,KAAI,SAAUC,GACzC,IAAI2E,EAAQ5F,EAAMiI,iBAAiBhH,GAC/BuL,EAAQxM,EAAM2L,YAAYnN,IAAIoH,GAKlC,OAJA3E,EAAM+F,KAAOhK,OAAO+O,QAAQ9K,EAAM+F,MAAMyF,QAAO,SAAUW,EAAK1M,GAC1D,IAAIyI,EAAKgC,EAAOzK,EAAI,GAAI2M,EAAUlE,EAAG,GAAImE,EAAMnE,EAAG,GAClD,OAASiE,EAAKZ,GAASa,GAAYC,EAAMF,CAC7C,GAAG,CAAC,GACGnM,CACX,GACJ,EACOwK,CACX,CArMuC,CAqMrCpE,G,gGC5RE,GAAwC,WACxC,IAAIxE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB7F,OAAOgG,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIvF,KAAKuF,EAAOA,EAAErF,eAAeF,KAAIsF,EAAEtF,GAAKuF,EAAEvF,GAAI,EACtEqF,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAEhB,SAASI,IAAOtF,KAAKuF,YAAcN,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAErF,UAAkB,OAANsF,EAAa/F,OAAOqG,OAAON,IAAMI,EAAG1F,UAAYsF,EAAEtF,UAAW,IAAI0F,EACnF,CACH,CAZ2C,GAaxC,GAAsC,WAStC,OARA,GAAWnG,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACO,GAASU,MAAMC,KAAMP,UAChC,EACI,GAAwC,SAAUiG,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACI,GAA4C,SAAUiD,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EACI,GAAkC,SAAUgH,EAAG/N,GAC/C,IAAIgO,EAAsB,oBAAXjJ,QAAyBgJ,EAAEhJ,OAAO6C,UACjD,IAAKoG,EAAG,OAAOD,EACf,IAAmBE,EAAYrH,EAA3B7G,EAAIiO,EAAE1N,KAAKyN,GAAOG,EAAK,GAC3B,IACI,YAAc,IAANlO,GAAgBA,KAAM,MAAQiO,EAAIlO,EAAEkD,QAAQ8D,KAAMmH,EAAGjG,KAAKgG,EAAErK,MACxE,CACA,MAAO2H,GAAS3E,EAAI,CAAE2E,MAAOA,EAAS,CACtC,QACI,IACQ0C,IAAMA,EAAElH,OAASiH,EAAIjO,EAAE,YAAYiO,EAAE1N,KAAKP,EAClD,CACA,QAAU,GAAI6G,EAAG,MAAMA,EAAE2E,KAAO,CACpC,CACA,OAAO2C,CACX,EAyBI,GAAS,IAAI,IAAO,8BACpBgC,GAAmB,SAAUxG,EAAOC,EAAMC,GAC1CC,EAAA,GAAIC,SAAS,MAAO,CAAEJ,MAAOA,EAAOC,KAAMA,EAAMC,QAASA,GAAW,SAAU9E,EAClF,EACIqL,GAAwB,wFACxBC,GAAmB,YACnBC,GAA4C,SAAUpG,GAEtD,SAASoG,EAA2B1P,QAChB,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAIgC,EAAQsH,EAAO3J,KAAKE,KAAMG,IAAYH,KAa1C,OAZAmC,EAAM2N,aAAe9O,EAAcc,OACnCK,EAAM4N,iBAAmBlL,EACzB1C,EAAM6N,wBAA0B,IAAIzH,IACpCpG,EAAM8N,aAAe,GACrB9N,EAAMyH,uBAAyB,IAAI1H,EAEnCC,EAAMyH,uBAAuBG,0BAA0BnH,WAAU,SAAU3D,GACvEyQ,GAAiBrL,EAAyB,CACtC4F,SAAU9H,EACVV,gBAAiBxC,GAClB,uBAAyBA,EAChC,IACOkD,CACX,CA2vBA,OA5wBA,GAAU0N,EAA4BpG,GAkBtCoG,EAA2BjQ,UAAUsQ,gBAAkB,SAAU9E,EAAK+E,GAClE,OAAO,IAAIC,UAAUhF,EAAK+E,EAC9B,EACAN,EAA2BjQ,UAAUY,gBAAkB,WACnD,MAAO,4BACX,EACAqP,EAA2BjQ,UAAUuL,UAAY,WAC7C,MAAM,IAAI4C,MAAM,gBACpB,EACA8B,EAA2BjQ,UAAU0M,QAAU,SAAU+D,EAASC,EAAMC,GACpE,OAAO,GAAUvQ,UAAM,OAAQ,GAAQ,WACnC,OAAO,GAAYA,MAAM,SAAU6C,GAC/B,MAAM,IAAIkL,MAAM,0BACpB,GACJ,GACJ,EAEA8B,EAA2BjQ,UAAU4Q,eAAiB,SAAUpF,GAC5D,OAA4C,OAArCA,EAAIqF,MAAMd,GACrB,EACAE,EAA2BjQ,UAAUgD,UAAY,SAAUyN,EAASlQ,GAChE,IAAIgC,EAAQnC,KACR0Q,EAAqC,OAAZvQ,QAAgC,IAAZA,OAAqB,EAASA,EAAQuQ,uBACvF,OAAO,IAAI,KAAW,SAAU5F,GAC5B,GAAK3K,GAAYuQ,EAQZ,CACD,IAAIC,GAAmB,EAAAjH,EAAA,MAcvB,OAbAvH,EAAMyO,yCAAyC,CAC3CzQ,QAASA,EACT2K,SAAUA,EACV+F,eAAgBF,IACjBG,OAAM,SAAUC,GACfjG,EAASC,MAAM,CACXiG,OAAQ,CACJ,GAAS,CAAC,EAAG,IAAIC,EAAA,EAAajS,EAAYkS,iCAAmC,KAAOH,OAG5F5O,EAAMyH,uBAAuB7G,OAAO3B,EAAkBU,QACtDgJ,EAASsE,UACb,IACO,WAAc,OAAO,GAAUjN,OAAO,OAAQ,GAAQ,WACzD,IAAIgP,EAAmBjC,EACvB,OAAO,GAAYlP,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAGD,OAFAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,EAAG,IAEhB,CAAC,EAAazH,KAAKoR,kCAAkCT,IAChE,KAAK,EAID,GAFA9N,EAAGmE,OACHmK,GAAqBnR,KAAKgQ,wBAAwBrP,IAAIgQ,IAAqB,CAAC,GAAGQ,mBAC1EA,EAED,MAAO,CAAC,GAEZ,GAAIA,IAAsBpQ,EAAoBsQ,UAI1C,MAAM,IAAItD,MAAM,gCAEpB,OALI/N,KAAKsR,2BAA2BX,GAK7B,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAzB,EAAQrM,EAAGmE,OACX,GAAOzG,MAAM,6BAA+B2O,GACrC,CAAC,EAAa,GACzB,KAAK,EAED,OADAlP,KAAKuR,4BAA4BZ,GAC1B,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAI,CACR,CAxDI7F,EAASC,MAAM,CACXiG,OAAQ,CACJ,GAAS,CAAC,EAAG,IAAIC,EAAA,EAAa,yDAGtCnG,EAASsE,UAoDjB,GACJ,EACAjQ,OAAOuB,eAAemP,EAA2BjQ,UAAW,eAAgB,CACxEe,IAAK,WACD,OAAQX,KAAKG,QACRgK,4DACT,EACAvJ,YAAY,EACZC,cAAc,IAElBgP,EAA2BjQ,UAAUgR,yCAA2C,SAAU/N,GACtF,IACIyI,EAAI+B,EADJlN,EAAU0C,EAAG1C,QAAS2K,EAAWjI,EAAGiI,SAAU+F,EAAiBhO,EAAGgO,eAEtE,OAAO,GAAU7Q,UAAM,OAAQ,GAAQ,WACnC,IAAI0Q,EAAwBc,EAAoBC,EAAOC,EAAWC,EAAQC,EAAQzC,EAAI0C,EAAiBC,EAAIC,EAAmBZ,EAAmBhI,EAAM6I,EAAYC,EAAWC,EAAIC,EAAIC,EAAqBC,EAAqBC,EAAOlJ,EAASmJ,EAA8BC,EAAIC,EAA4BC,EAC1SC,EACAxQ,EAAQnC,KACZ,OAAO,GAAYA,MAAM,SAAU4S,GAC/B,OAAQA,EAAG7L,OACP,KAAK,EAiBD,OAhBA2J,EAAyBvQ,EAAQuQ,uBAAwBc,EAAqBrR,EAAQqR,mBAAoBC,EAAQtR,EAAQsR,MAAOC,EAAYvR,EAAQuR,UAAWC,EAASxR,EAAQwR,OAAQC,EAASzR,EAAQyR,OAAQzC,EAAKhP,EAAQ0R,gBAAiBA,OAAyB,IAAP1C,EAAgB,WAAc,MAAO,CAAG,CAAG,EAAIA,EAAI2C,EAAK3R,EAAQ4R,kBAAmBA,OAA2B,IAAPD,EAAgB,CAAC,EAAIA,EAC9XX,EAAoBpQ,EAAoB8R,QACxC1J,EAAO,CACHsI,MAAOA,EACPC,UAAWA,GAGf1R,KAAKgQ,wBAAwBpH,IAAIiI,EAAgB,CAC7C/F,SAAUA,EACV2G,MAAiB,OAAVA,QAA4B,IAAVA,EAAmBA,EAAQ,GACpDC,UAAyB,OAAdA,QAAoC,IAAdA,EAAuBA,EAAY,CAAC,EACrEP,kBAAmBA,EACnB2B,uBAAmBzQ,IAEvB2P,EAAavH,KAAKC,UAAUvB,GAC5B+I,EAAK,CAAC,CAAC,GACA,CAAC,EAAalS,KAAK+S,4BAA4B,CAC9CpB,OAAQA,EACRjB,uBAAwBA,EACxBc,mBAAoBA,EACpBwB,QAAShB,EACTiB,aAAc,GACdrB,OAAQA,EACRG,kBAAmBA,KAE/B,KAAK,EAED,OADAI,EAAK,CAAC,GAASpS,WAAM,EAAQmS,EAAGzF,OAAO,CAAEmG,EAAG5L,WACrC,CAAC,EAAa6K,KACzB,KAAK,EACDI,EAAY,GAASlS,WAAM,EAAQ,CAAC,GAASA,WAAM,EAAQ,CAAC,GAASA,WAAM,EAAQoS,EAAG1F,OAAO,CAAEmG,EAAG5L,UAAY+K,KAAsBY,EAAK,CAAC,EAAGA,EAAG,MAAqB,MAAUO,UAAWP,KAC1LP,EAAsB,CAClBe,GAAItC,EACJmC,QAAS,CACL7J,KAAM6I,EACNoB,WAAY,CACRC,cAAe,GAAS,CAAC,EAAGpB,KAGpCqB,KAAMxS,EAAcyS,WAExBlB,EAAsB5H,KAAKC,UAAU0H,GACrCQ,EAAG7L,MAAQ,EACf,KAAK,EAGD,OAFA6L,EAAG3L,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBzH,KAAK4J,uBAAuB7G,OAAO3B,EAAkBS,oBAC9C,CAAC,EAAa7B,KAAKwT,+BAA+B,CACjD7B,OAAQA,EACRjB,uBAAwBA,EACxBc,mBAAoBA,EACpBI,OAAQA,EACRG,kBAAmBA,KAE/B,KAAK,EAED,OADAa,EAAG5L,OACI,CAAC,EAAa,GACzB,KAAK,EAgBD,OAfAsL,EAAQM,EAAG5L,OACX,GAAOzG,MAAM,CAAEwQ,IAAKuB,IACpBlJ,EAAsC,QAA3BkC,EAAKgH,EAAM,kBAA+B,IAAPhH,EAAgBA,EAAK,GACnEtL,KAAK4J,uBAAuB7G,OAAO3B,EAAkBU,QACrDgJ,EAASC,MAAM,CACXiG,OAAQ,CACJ,GAAS,CAAC,EAAG,IAAIC,EAAA,EAAajS,EAAY0C,kBAAoB,KAAO0H,OAG7E0B,EAASsE,WACTmD,GAAgCvS,KAAKgQ,wBAAwBrP,IAAIkQ,IAAmB,CAAC,GAAG4B,2BAE5C,oBAAjCF,GACPA,IAEG,CAAC,GACZ,KAAK,EAiBD,OAhBAC,EAAiE,QAA3DnF,EAAKrN,KAAKgQ,wBAAwBrP,IAAIkQ,UAAoC,IAAPxD,EAAgBA,EAAK,CAAC,EAAGoF,EAA6BD,EAAGC,2BAA4BC,EAA4BF,EAAGE,0BAE7L1S,KAAKgQ,wBAAwBpH,IAAIiI,EAAgB,CAC7C/F,SAAUA,EACVqG,kBAAmBA,EACnBM,MAAiB,OAAVA,QAA4B,IAAVA,EAAmBA,EAAQ,GACpDC,UAAyB,OAAdA,QAAoC,IAAdA,EAAuBA,EAAY,CAAC,EACrEgB,0BAA2BA,EAC3BD,2BAA4BA,EAC5BK,kBAAmBW,YAAW,WAC1BtR,EAAMuR,6BAA6B5T,KAAKqC,EAAO0O,EACnD,GAAGjM,KAEH5E,KAAK2T,mBACL3T,KAAK2T,kBAAkB/G,KAAKyF,GAEzB,CAAC,GAEpB,GACJ,GACJ,EAEAxC,EAA2BjQ,UAAUwR,kCAAoC,SAAUP,GAC/E,OAAO,GAAU7Q,UAAM,OAAQ,GAAQ,WACnC,IAAI4T,EAAsBzC,EACtBhP,EAAQnC,KACZ,OAAO,GAAYA,MAAM,SAAU6C,GAE/B,OADA+Q,EAAuB5T,KAAKgQ,wBAAwBrP,IAAIkQ,GACpD+C,IACAzC,EAAoByC,EAAqBzC,kBAErCA,IAAsBpQ,EAAoB8R,SACnC,CAAC,EAAc,IAAI7M,SAAQ,SAAU6N,EAAKC,GACzC,IAAIhJ,EAAW8I,EAAqB9I,SAAUqG,EAAoByC,EAAqBzC,kBAAmBO,EAAYkC,EAAqBlC,UAAWD,EAAQmC,EAAqBnC,MACnLtP,EAAM6N,wBAAwBpH,IAAIiI,EAAgB,CAC9C/F,SAAUA,EACVqG,kBAAmBA,EACnBO,UAAWA,EACXD,MAAOA,EACPiB,0BAA2BmB,EAC3BpB,2BAA4BqB,GAEpC,KAGL,CAAC,EACZ,GACJ,GACJ,EACAjE,EAA2BjQ,UAAU0R,2BAA6B,SAAUT,GACxE,IACI,GAAI7Q,KAAK2T,mBACL3T,KAAK2T,kBAAkBI,aAAe3D,UAAU4D,MAChDhU,KAAK8P,eAAiB9O,EAAciT,MAAO,CAE3C,IAAIC,EAAqB,CACrBf,GAAItC,EACJyC,KAAMxS,EAAcqT,UAEpB9B,EAAsB5H,KAAKC,UAAUwJ,GACzClU,KAAK2T,kBAAkB/G,KAAKyF,EAChC,CACJ,CACA,MAAOtB,GAEH,GAAOxQ,MAAM,CAAEwQ,IAAKA,GACxB,CACJ,EACAlB,EAA2BjQ,UAAU2R,4BAA8B,SAAUV,GACzE7Q,KAAKgQ,wBAAwBhH,OAAO6H,GAEpC4C,WAAWzT,KAAKoU,uBAAuBC,KAAKrU,MAAO,IACvD,EACA6P,EAA2BjQ,UAAUwU,uBAAyB,WAC1D,KAAIpU,KAAKgQ,wBAAwB9E,KAAO,GAIxC,GAAKlL,KAAK2T,kBAKV,GADA3T,KAAK4J,uBAAuB7G,OAAO3B,EAAkBQ,oBACjD5B,KAAK2T,kBAAkBW,eAAiB,EAExCb,WAAWzT,KAAKoU,uBAAuBC,KAAKrU,MAAO,SAElD,CACD,GAAOO,MAAM,wBACTP,KAAKuU,oBACLC,aAAaxU,KAAKuU,oBAElBvU,KAAKyU,yBACLD,aAAaxU,KAAKyU,yBAEtB,IAAIC,EAAa1U,KAAK2T,kBAEtBe,EAAWC,QAAU,KACrBD,EAAWE,QAAU,KACrBF,EAAWG,MAAM,KACjB7U,KAAK2T,uBAAoBtR,EACzBrC,KAAK8P,aAAe9O,EAAcc,OAClC9B,KAAK4J,uBAAuB7G,OAAO3B,EAAkBU,OACzD,MAxBI9B,KAAK8P,aAAe9O,EAAcc,MAyB1C,EACA+N,EAA2BjQ,UAAUkV,mCAAqC,SAAU1L,GAChF,IAAIjH,EAAQnC,KACZ,GAAOO,MAAM,mDAAqD6I,EAAQD,MAC1E,IAAItG,EAAK4H,KAAKsC,MAAM3D,EAAQD,MAAOmC,EAAKzI,EAAGsQ,GAAIA,OAAY,IAAP7H,EAAgB,GAAKA,EAAI0H,EAAUnQ,EAAGmQ,QAASM,EAAOzQ,EAAGyQ,KACzGjG,EAAKrN,KAAKgQ,wBAAwBrP,IAAIwS,IAAO,CAAC,EAAGhE,EAAK9B,EAAGvC,SAAUA,OAAkB,IAAPqE,EAAgB,KAAOA,EAAI2C,EAAKzE,EAAGoE,MAAOA,OAAe,IAAPK,EAAgB,GAAKA,EAAII,EAAK7E,EAAGqE,UAAWA,OAAmB,IAAPQ,EAAgB,CAAC,EAAIA,EAAIY,EAAoBzF,EAAGyF,kBAAmBJ,EAA4BrF,EAAGqF,0BAA2BD,EAA6BpF,EAAGoF,2BAEzV,GADA,GAAOlS,MAAM,CAAE4S,GAAIA,EAAIrI,SAAUA,EAAU2G,MAAOA,EAAOC,UAAWA,IAChE4B,IAASxS,EAAciU,UAAY/B,GAAWA,EAAQ7J,KAClD2B,EACAA,EAASrI,KAAKuQ,GAGd,GAAOzS,MAAM,8BAAgC4S,OALrD,CASA,GAAIG,IAASxS,EAAckU,cAAe,CACtC,GAAOzU,MAAM,0BAA4BkK,KAAKC,UAAU,CAAE+G,MAAOA,EAAOC,UAAWA,KAC1C,oBAA9BgB,GACPA,IAEAI,GACA0B,aAAa1B,GACjBpD,GAAiB1Q,EAAYiW,iBAAkB,CAAExD,MAAOA,EAAOC,UAAWA,GAAa,2CACvF,IAAIP,EAAoBpQ,EAAoBsQ,UAa5C,OAZIvG,GACA9K,KAAKgQ,wBAAwBpH,IAAIuK,EAAI,CACjCrI,SAAUA,EACV2G,MAAOA,EACPC,UAAWA,EACXoB,uBAAmBzQ,EACnB8O,kBAAmBA,EACnBuB,0BAA2BA,EAC3BD,2BAA4BA,SAGpCzS,KAAK4J,uBAAuB7G,OAAO3B,EAAkBI,uBAEzD,CACA,GAAI8R,IAASxS,EAAcoU,0BAUvB,OATIlV,KAAKuU,oBACLC,aAAaxU,KAAKuU,oBAClBvU,KAAKyU,yBACLD,aAAaxU,KAAKyU,yBACtBzU,KAAKuU,mBAAqBd,YAAW,WAAc,OAAOtR,EAAMgT,iBAAiBnW,EAAYoW,mBAAqB,GAAGpV,KAAK+P,kBAC1H/P,KAAKyU,wBAA0BhB,YAAW,WACtCtR,EAAMyH,uBAAuB7G,OAAO3B,EAAkBC,kBAC1D,GAAGyD,QACH9E,KAAK4J,uBAAuB7G,OAAO3B,EAAkBG,YAGzD,GAAI+R,IAASxS,EAAcuU,UAAW,CAC9BlE,EAAoBpQ,EAAoBuU,OACxCxK,IACA9K,KAAKgQ,wBAAwBpH,IAAIuK,EAAI,CACjCrI,SAAUA,EACV2G,MAAOA,EACPC,UAAWA,EACXoB,kBAAmBA,EACnBJ,0BAA2BA,EAC3BD,2BAA4BA,EAC5BtB,kBAAmBA,IAEvBrG,EAASC,MAAM,CACXiG,OAAQ,CACJ,GAAS,CAAC,EAAG,IAAIC,EAAA,EAAajS,EAAY0C,kBAAoB,KAAO+I,KAAKC,UAAUsI,QAGxFF,GACA0B,aAAa1B,GACjBhI,EAASsE,WACiC,oBAA/BqD,GACPA,IAGZ,CA5DA,CA6DJ,EACA5C,EAA2BjQ,UAAUuV,iBAAmB,SAAU1J,GAC9D,GAAOlL,MAAM,qBAAuBkL,GACpCzL,KAAKgQ,wBAAwBnF,SAAQ,SAAUhI,GAC3C,IAAIiI,EAAWjI,EAAGiI,SACdA,IAAaA,EAASyD,QACtBzD,EAASC,MAAM,CACXiG,OAAQ,CAAC,GAAS,CAAC,EAAG,IAAIC,EAAA,EAAaxF,MAGnD,IACAzL,KAAKgQ,wBAAwBuF,QACzBvV,KAAK2T,oBACL3T,KAAK4J,uBAAuB7G,OAAO3B,EAAkBU,QACrD9B,KAAK2T,kBAAkBkB,SAE3B7U,KAAK8P,aAAe9O,EAAcc,MACtC,EACA+N,EAA2BjQ,UAAU8T,6BAA+B,SAAU7C,GAC1E,IAAI+C,EAAuB5T,KAAKgQ,wBAAwBrP,IAAIkQ,GAC5D,GAAI+C,EAAsB,CACtB,IAAI9I,EAAW8I,EAAqB9I,SAAU2G,EAAQmC,EAAqBnC,MAAOC,EAAYkC,EAAqBlC,UACnH,IAAK5G,EACD,OAEJ9K,KAAKgQ,wBAAwBpH,IAAIiI,EAAgB,CAC7C/F,SAAUA,EACV2G,MAAOA,EACPC,UAAWA,EACXP,kBAAmBpQ,EAAoBuU,SAEvCxK,IAAaA,EAASyD,SACtBzD,EAASC,MAAM,CACXiG,OAAQ,CACJ,GAAS,CAAC,EAAG,IAAIC,EAAA,EAAa,wBAA0BxG,KAAKC,UAAU,CACnE+G,MAAOA,EACPC,UAAWA,SAKvB5G,EAASsE,YAEb,GAAO7O,MAAM,2BAA4BkK,KAAKC,UAAU,CAAE+G,MAAOA,EAAOC,UAAWA,IACvF,CACJ,EACA7B,EAA2BjQ,UAAU4T,+BAAiC,SAAU3Q,GAC5E,IAAIV,EAAQnC,KACR0Q,EAAyB7N,EAAG6N,uBAAwBc,EAAqB3O,EAAG2O,mBAAoBG,EAAS9O,EAAG8O,OAAQC,EAAS/O,EAAG+O,OAAQG,EAAoBlP,EAAGkP,kBACnK,GAAI/R,KAAK8P,eAAiB9O,EAAciT,MAGxC,OAAO,IAAIjO,SAAQ,SAAU6N,EAAKC,GAAO,OAAO,GAAU3R,OAAO,OAAQ,GAAQ,WAC7E,IAAIuJ,EAAe8J,EAAc3S,EAAIyI,EAAImK,EAAUC,EAAWC,EAAsBxF,EAAUyF,EAAgBC,EAC9G,OAAO,GAAY7V,MAAM,SAAUqN,GAC/B,OAAQA,EAAGtG,OACP,KAAK,EAED,GADA/G,KAAKiQ,aAAaxI,KAAK,CAAEoM,IAAKA,EAAKC,IAAKA,IAClC9T,KAAK8P,eAAiB9O,EAAcc,OAAS,MAAO,CAAC,EAAa,GACxEuL,EAAGtG,MAAQ,EACf,KAAK,EAKD,OAJAsG,EAAGpG,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBzH,KAAK8P,aAAe9O,EAAc8U,WAClCpK,EAAgB,KAChBJ,GAAMzI,EAAK4H,MAAMC,UACV,CAAC,EAAa1K,KAAK+S,4BAA4B,CAC9CvB,mBAAoBA,EACpBwB,QAAStH,EACTuH,aAAc,WACdtB,OAAQA,EACRjB,uBAAwBA,EACxBkB,OAAQA,EACRG,kBAAmBA,KAE/B,KAAK,EAmBD,OAlBAyD,EAAelK,EAAGvL,MAAM8C,EAAI,CAACwK,EAAGrG,SAChCyO,EAAW,MAAO5M,KAAK2M,GAAcO,SAAS,UAC9CL,EAAY,MAAO7M,KAAK6C,GAAeqK,SAAS,UAChDJ,EAAkD,OAA3BjF,QAA8D,IAA3BA,EAAoCA,EAAyB,GAEnHiF,EADA3V,KAAKwQ,eAAemF,GAEhBA,EAAqBlJ,OAAOmD,IAGT+F,EAClBK,QAAQ,cAAe,wBACvBA,QAAQ,YAAa,YAE9B7F,EAAWnQ,KAAK+L,aAAe,SAAW,QAC1C4J,EAAuBA,EAClBK,QAAQ,WAAY7F,GACpB6F,QAAQ,UAAW7F,GACxByF,EAAiBD,EAAuB,WAAaF,EAAW,YAAcC,EACvE,CAAC,EAAa1V,KAAKiW,8BAA8BL,IAC5D,KAAK,EASD,OARAvI,EAAGrG,OACHhH,KAAKiQ,aAAapF,SAAQ,SAAUhI,GAChC,IAAIgR,EAAMhR,EAAGgR,IACb,GAAOtT,MAAM,mCACbsT,GACJ,IACA7T,KAAK8P,aAAe9O,EAAciT,MAClCjU,KAAKiQ,aAAe,GACb,CAAC,EAAa,GACzB,KAAK,EAaD,OAZA4F,EAAQxI,EAAGrG,OACXhH,KAAKiQ,aAAapF,SAAQ,SAAUhI,GAChC,IAAIiR,EAAMjR,EAAGiR,IACb,OAAOA,EAAI+B,EACf,IACA7V,KAAKiQ,aAAe,GAChBjQ,KAAK2T,mBACL3T,KAAK2T,kBAAkBI,aAAe3D,UAAU4D,MAChDhU,KAAK2T,kBAAkBkB,MAAM,MAEjC7U,KAAK2T,uBAAoBtR,EACzBrC,KAAK8P,aAAe9O,EAAcc,OAC3B,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAI,GACR,EACA+N,EAA2BjQ,UAAUqW,8BAAgC,SAAUL,GAC3E,OAAO,GAAU5V,UAAM,OAAQ,GAAQ,WACnC,OAAO,GAAYA,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAED,OADA,GAAOxG,MAAM,sCACN,CAAC,GAAa,SAAyBP,KAAKkW,qBAAqB7B,KAAKrU,MAAO,CAAC4V,GAAiBzR,IAC1G,KAAK,EAED,OADAtB,EAAGmE,OACI,CAAC,GAEpB,GACJ,GACJ,EACA6I,EAA2BjQ,UAAUsW,qBAAuB,SAAUN,GAClE,OAAO,GAAU5V,UAAM,OAAQ,GAAQ,WACnC,IAAImW,EAAOtT,EAAIuT,EAAW9L,EACtBnI,EAAQnC,KACZ,OAAO,GAAYA,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EACD,GAAOxG,MAAM,0BAA4BqV,GACzCtK,EAAGvE,MAAQ,EACf,KAAK,EAED,OADAuE,EAAGrE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa,WACb,OAAO,IAAIzB,SAAQ,SAAU6N,EAAKC,GAC9B,IAAIuC,EAAYlU,EAAM+N,gBAAgB0F,EAAgB,cACtDS,EAAUzB,QAAU,WAChB,GAAOrU,MAAM,6BACjB,EACA8V,EAAU1B,QAAU,WAChBxS,EAAMyH,uBAAuB7G,OAAO3B,EAAkBM,mBACtDoS,EAAI,IAAI/F,MAAM,8BAClB,EACAsI,EAAUC,OAAS,WAEf,OADAnU,EAAMwR,kBAAoB0C,EACnBxC,GACX,CACJ,GACH,CAfgB,IAgBzB,KAAK,EAGD,OAFAvI,EAAGtE,OAEI,CAAC,EAAa,WACb,OAAO,IAAIhB,SAAQ,SAAU6N,EAAKC,GAC9B,GAAI3R,EAAMwR,kBAAmB,CACzB,IAAI4C,GAAU,EACdpU,EAAMwR,kBAAkBiB,QAAU,SAAU7J,GACxC,GAAOxK,MAAM,mBAAqBkK,KAAKC,UAAUK,GACrD,EACA5I,EAAMwR,kBAAkBgB,QAAU,SAAUzL,GACxC,GAAO3I,MAAM,oBAAsB2I,EAAMsN,QACzC1C,EAAI,IAAI/F,MAAMtD,KAAKC,UAAUxB,IACjC,EACA/G,EAAMwR,kBAAkB8C,UAAY,SAAUrN,GAC1C,GAAO7I,MAAM,kDAAoD6I,EAAQD,KAAO,KAChF,IAAIA,EAAOsB,KAAKsC,MAAM3D,EAAQD,MAC1BmK,EAAOnK,EAAKmK,KAAMzQ,EAAKsG,EAAK6J,QAAS1H,QAAa,IAAPzI,EAAgB,CAAC,EAAIA,GAAI6T,oBAAqBA,OAA6B,IAAPpL,EAAgBzG,EAA6ByG,EAChK,GAAIgI,IAASxS,EAAc6V,mBAgBvB,OAfAJ,GAAU,EACNpU,EAAMwR,oBACNxR,EAAM4N,iBAAmB2G,EACzBvU,EAAMwR,kBAAkB8C,UACpBtU,EAAM2S,mCAAmCT,KAAKlS,GAClDA,EAAMwR,kBAAkBiB,QAAU,SAAU7D,GACxC,GAAOxQ,MAAMwQ,GACb5O,EAAMgT,iBAAiBnW,EAAY4X,kBACvC,EACAzU,EAAMwR,kBAAkBgB,QAAU,SAAUzL,GACxC,GAAO3I,MAAM,oBAAsB2I,EAAMsN,QACzCrU,EAAMgT,iBAAiBnW,EAAY4X,kBACvC,QAEJ/C,EAAI,0CAGR,GAAIP,IAASxS,EAAc+V,qBAAsB,CAC7C,IAAIxJ,EAAKlE,EAAK6J,QAAS7D,QAAa,IAAP9B,EAAgB,CAAC,EAAIA,GAAI2D,OAAQc,EAAK,QAAc,IAAP3C,EAAgB,GAAKA,EAAI,GAAI+C,EAAKJ,EAAG,GAAIK,OAAY,IAAPD,EAAgB,CAAC,EAAIA,EAAIM,EAAKL,EAAGiE,UAAWA,OAAmB,IAAP5D,EAAgB,GAAKA,EAAIG,EAAKR,EAAG7H,UAAWA,OAAmB,IAAPqI,EAAgB,EAAIA,EAC5PmB,EAAI,CAAEsC,UAAWA,EAAW9L,UAAWA,GAC3C,CACJ,EACA,IAAIwM,EAAU,CACVxD,KAAMxS,EAAciW,qBAExB5U,EAAMwR,kBAAkB/G,KAAKnC,KAAKC,UAAUoM,IAC5C,IAAIE,EAAe,SAAUC,GACpBA,IACD9U,EAAMyH,uBAAuB7G,OAAO3B,EAAkBM,mBACtDoS,EAAI,IAAI/F,MAAM,0EAA4EpJ,EAA0B,QAE5H,EACA8O,YAAW,WAAc,OAAOuD,EAAaT,EAAU,GAAG5R,EAC9D,CACJ,GACH,CAnDgB,IAoDzB,KAAK,EAGD,OADA2G,EAAGtE,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,MAFAmP,EAAQ7K,EAAGtE,OACXnE,EAAKsT,EAAOC,EAAYvT,EAAGuT,UAAW9L,EAAYzH,EAAGyH,UACjDlG,EAAoB8S,SAAS5M,GACvB,IAAI,MAAkB8L,GAEvBA,EACC,IAAIrI,MAAMqI,GAGVD,EAGd,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAtG,EAA2BjQ,UAAUmT,4BAA8B,SAAUlQ,GACzE,IAAI2O,EAAqB3O,EAAG2O,mBAAoBwB,EAAUnQ,EAAGmQ,QAASC,EAAepQ,EAAGoQ,aAAcvC,EAAyB7N,EAAG6N,uBAAwBiB,EAAS9O,EAAG8O,OAAQC,EAAS/O,EAAG+O,OAAQG,EAAoBlP,EAAGkP,kBACzN,OAAO,GAAU/R,UAAM,OAAQ,GAAQ,WACnC,IAAImX,EAAeC,EAASC,EAAM/Q,EAClC,OAAO,GAAYtG,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EAQD,OAPAoQ,EAAgB,CACZG,QAAStX,KAAKuX,yBAAyBlD,KAAKrU,MAC5CwX,QAASxX,KAAKyX,sBAAsBpD,KAAKrU,MACzC0X,eAAgB1X,KAAK2X,yBAAyBtD,KAAKrU,MACnD4X,0BAA2B5X,KAAK6X,sBAAsBxD,KAAKrU,MAC3D8X,WAAY9X,KAAK+X,mBAEdvG,GAAuB2F,EAAc3F,GAA6B,CAAC,EAAa,IACvF,GAAOjR,MAAM,uBAAyBiR,EAAqB,kBACpD,CAAC,EAAc,KAC1B,KAAK,EAID,OAHA4F,EAAUD,EAAc3F,GACxB6F,EAAOjM,EAAA,GAAqC,OAA3BsF,QAA8D,IAA3BA,EAAoCA,EAAyB,IAAI2G,KACrH,GAAO9W,MAAM,uBAAyBiR,GAC/B,CAAC,EAAa4F,EAAQ,CACrBpE,QAASA,EACTC,aAAcA,EACdvC,uBAAwBA,EACxBiB,OAAQA,EACRC,OAAQA,EACRyF,KAAMA,EACNtF,kBAAmBA,KAE/B,KAAK,EAED,OADAzL,EAASgF,EAAGtE,OACL,CAAC,EAAcV,GAElC,GACJ,GACJ,EACAuJ,EAA2BjQ,UAAUiY,sBAAwB,SAAUhV,GACnE,IAAIwU,EAAOxU,EAAGwU,KACd,OAAO,GAAUrX,UAAM,OAAQ,GAAQ,WACnC,IAAIgY,EACJ,OAAO,GAAYhY,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa,MAAKkR,kBAClC,KAAK,EAED,OADAD,EAAU1M,EAAGtE,OACN,CAAC,EAAc,CACdkR,cAAeF,EAAQG,iBAAiBC,cACxCf,KAAMA,IAG1B,GACJ,GACJ,EACAxH,EAA2BjQ,UAAU+X,yBAA2B,SAAU9U,GACtE,IAAIwU,EAAOxU,EAAGwU,KACd,OAAO,GAAUrX,UAAM,OAAQ,GAAQ,WACnC,IAAIqY,EAAOC,EAAeC,EAC1B,OAAO,GAAYvY,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa,MAAMyR,QAAQ,kBAC3C,KAAK,EAED,OADAF,EAAgBhN,EAAGtE,OACdsR,GACLD,EAAQC,EAAcD,MACf,CAAC,EAAa,IAFM,CAAC,EAAa,GAG7C,KAAK,EAAG,MAAO,CAAC,EAAa,MAAKI,4BAClC,KAAK,EACDF,EAAcjN,EAAGtE,OACbuR,IACAF,EAAQE,EAAYF,OAExB/M,EAAGvE,MAAQ,EACf,KAAK,EACD,IAAKsR,EACD,MAAM,IAAItK,MAAM,oBAEpB,MAAO,CAAC,EAAc,CACdmK,cAAeG,EACfhB,KAAMA,IAG1B,GACJ,GACJ,EACAxH,EAA2BjQ,UAAU2X,yBAA2B,SAAU1U,GACtE,IAAI8O,EAAS9O,EAAG8O,OAAQ0F,EAAOxU,EAAGwU,KAClC,OAAO,GAAUrX,UAAM,OAAQ,GAAQ,WACnC,IAAI0Y,EAAIC,EACR,OAAO,GAAY3Y,MAAM,SAAUsL,GAG/B,OAFAoN,EAAK,IAAIE,KACTD,EAAQD,EAAGG,cAAc7C,QAAQ,iBAAkB,IAC5C,CAAC,EAAc,CACdqB,KAAMA,EACN,aAAcsB,EACd,YAAahH,GAEzB,GACJ,GACJ,EACA9B,EAA2BjQ,UAAU6X,sBAAwB,SAAU5U,GACnE,IAAImQ,EAAUnQ,EAAGmQ,QAASC,EAAepQ,EAAGoQ,aAAcvC,EAAyB7N,EAAG6N,uBAAwBkB,EAAS/O,EAAG+O,OAC1H,OAAO,GAAU5R,UAAM,OAAQ,GAAQ,WACnC,IAAI8Y,EAAcC,EAAeC,EAAOC,EAASC,EACjD,OAAO,GAAYlZ,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EAKD,OAJA+R,EAAe,CACXlH,OAAQA,EACRuH,QAAS,WAEN,CAAC,EAAanZ,KAAKoZ,sBAC9B,KAAK,EAED,GADAL,EAAgBzN,EAAGtE,QACd+R,EACD,MAAM,IAAIhL,MAAM,kBAEpB,MAAO,CAAC,EAAasL,GAAA,GAAY1Y,MAAM6F,MAAK,SAAU8S,GAC9C,IAAIzW,EAAKyW,EAAaC,EAAkB1W,EAAG0W,gBAAiBC,EAAc3W,EAAG2W,YAAaC,EAAe5W,EAAG4W,aAC5G,MAAO,CACHC,WAAYH,EACZI,WAAYH,EACZI,cAAeH,EAEvB,KACR,KAAK,EASD,OARAT,EAAQ1N,EAAGtE,OACXiS,EAAU,CACN7N,IAAK,GAAKsF,EAAyBuC,EACnC9J,KAAM6J,EACN6G,OAAQ,OACRC,QAAS,GAAS,CAAC,EAAGrV,IAE1ByU,EAAgBa,GAAA,EAAOC,KAAKf,EAASD,EAAOF,GACrC,CAAC,EAAcI,EAAcY,SAEhD,GACJ,GACJ,EACAjK,EAA2BjQ,UAAUmY,kBAAoB,SAAUlV,GAC/D,IAAIwU,EAAOxU,EAAGwU,KAAMtF,EAAoBlP,EAAGkP,kBAC3C,IAAKA,IAAsBA,EAAkB,iBACzC,MAAM,IAAIhE,MAAM,2BAEpB,MAAO,CACHmK,cAAenG,EAAkBmG,cACjCb,KAAMA,EAEd,EAIAxH,EAA2BjQ,UAAUwZ,mBAAqB,WACtD,OAAOC,GAAA,GAAY1Y,MACd6F,MAAK,SAAU8S,GAChB,IAAKA,EACD,OAAO,EACX,IAAIW,EAAOZ,GAAA,GAAYa,MAAMZ,GAE7B,OADA,GAAO/Y,MAAM,iDAAkD0Z,IACxD,CACX,IACKnJ,OAAM,SAAUC,GAEjB,OADA,GAAOvG,KAAK,2BAA4BuG,IACjC,CACX,GACJ,EACOlB,CACX,CA9wB+C,CA8wB7C3P,GCx3BE,GAAwC,SAAUwF,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACI,GAA4C,SAAUiD,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EAiBI4T,IAAS,UAAgBA,OACzB,GAAS,IAAI,IAAO,UACpBC,GAA6B,WAM7B,SAASA,EAAYja,GACjBH,KAAKuQ,SAAuB,OAAZpQ,QAAgC,IAAZA,EAAqBA,EAAU,CAAC,EACpE,GAAOI,MAAM,iBAAkBP,KAAKuQ,UACpCvQ,KAAKqa,YAAc,GACnBra,KAAK4C,UAAY5C,KAAK4C,UAAUyR,KAAKrU,KACzC,CA0HA,OAzHAb,OAAOuB,eAAe0Z,EAAYxa,UAAW,qBAAsB,CAI/De,IAAK,WAID,OAHKX,KAAKsa,sBACNta,KAAKsa,oBAAsB,IAAI1M,EAAmB5N,KAAKuQ,WAEpDvQ,KAAKsa,mBAChB,EACA1Z,YAAY,EACZC,cAAc,IAElB1B,OAAOuB,eAAe0Z,EAAYxa,UAAW,6BAA8B,CAIvEe,IAAK,WAID,OAHKX,KAAKua,8BACNva,KAAKua,4BAA8B,IAAI1K,GAA2B7P,KAAKuQ,WAEpEvQ,KAAKua,2BAChB,EACA3Z,YAAY,EACZC,cAAc,IAElBuZ,EAAYxa,UAAU4a,cAAgB,WAClC,MAAO,QACX,EAOAJ,EAAYxa,UAAUS,UAAY,SAAUF,GACxC,IAAIgC,EAAQnC,KACRya,EAAMta,EAAUA,EAAQua,QAAUva,EAAU,CAAC,EAIjD,OAHA,GAAOI,MAAM,mBAAoB,CAAEka,IAAKA,IACxCza,KAAKuQ,SAAWpR,OAAOC,OAAO,CAAC,EAAGY,KAAKuQ,SAAUkK,GACjDza,KAAKqa,YAAYlX,KAAI,SAAUwX,GAAa,OAAOA,EAAUta,UAAU8B,EAAMoO,SAAW,IACjFvQ,KAAKuQ,QAChB,EAKA6J,EAAYxa,UAAUgb,aAAe,SAAUD,GAC3C,OAAO,GAAU3a,UAAM,OAAQ,GAAQ,WACnC,IAAIM,EACJ,OAAO,GAAYN,MAAM,SAAU6C,GAC/B,OAAI8X,GAAyC,WAA5BA,EAAUla,eACvBT,KAAKqa,YAAY5S,KAAKkT,GACtBra,EAASqa,EAAUta,UAAUL,KAAKuQ,UAC3B,CAAC,EAAcjQ,IAEnB,CAAC,EACZ,GACJ,GACJ,EAKA8Z,EAAYxa,UAAUib,gBAAkB,SAAUC,GAC9C9a,KAAKqa,YAAcra,KAAKqa,YAAY/W,QAAO,SAAUqX,GAAa,OAAOA,EAAUna,oBAAsBsa,CAAc,GAC3H,EACAV,EAAYxa,UAAUmb,kBAAoB,SAAUD,GAChD,OAAIA,IAAiB,KACV9a,KAAKgb,mBAEZF,IAAiB,KACV9a,KAAKib,2BAETjb,KAAKqa,YAAYrL,MAAK,SAAU2L,GAAa,OAAOA,EAAUna,oBAAsBsa,CAAc,GAC7G,EACAV,EAAYxa,UAAUsb,aAAe,SAAU/a,QAC3B,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAI2a,EAAe3a,EAAQ8J,SAC3B,IAAK6Q,EACD,OAAO9a,KAAKqa,YAEhB,IAAIpQ,EAAWjK,KAAK+a,kBAAkBD,GACtC,IAAK7Q,EACD,MAAM,IAAI8D,MAAM,iCAAmC+M,GAEvD,MAAO,CAAC7Q,EACZ,EACAmQ,EAAYxa,UAAU0M,QAAU,SAAUC,EAAQd,EAAKtL,GACnD,OAAO,GAAUH,UAAM,OAAQ,GAAQ,WACnC,OAAO,GAAYA,MAAM,SAAU6C,GAC/B,MAAO,CAAC,EAAcmD,QAAQiJ,IAAIjP,KAAKkb,aAAa/a,GAASgD,KAAI,SAAU8G,GACnE,OAAOA,EAASqC,QAAQC,EAAQd,EAAKtL,EACzC,KACR,GACJ,GACJ,EACAia,EAAYxa,UAAUgD,UAAY,SAAU2J,EAAQpM,GAChD,GAAIga,IAAUna,KAAKuQ,UAAYvQ,KAAKuQ,SAAS4K,IACzC,MAAM,IAAIpN,MAAM,mEAEpB,GAAOxN,MAAM,oBAAqBJ,GAClC,IAAIib,EAAYpb,KAAKkb,aAAa/a,GAClC,OAAO,IAAI,KAAW,SAAU2K,GAC5B,IAAIuQ,EAAcD,EAAUjY,KAAI,SAAU8G,GAAY,MAAO,CACzDA,SAAUA,EACVqR,WAAYrR,EAASrH,UAAU2J,EAAQpM,GACvC,IACAob,EAAgBF,EAAYlY,KAAI,SAAUN,GAC1C,IAAIoH,EAAWpH,EAAGoH,SAAUqR,EAAazY,EAAGyY,WAC5C,OAAOA,EAAW1Y,UAAU,CACxB4Y,MAAOC,QAAQ1Q,MACftI,KAAM,SAAUW,GAAS,OAAO0H,EAASrI,KAAK,CAAEwH,SAAUA,EAAU7G,MAAOA,GAAU,EACrF2H,MAAO,SAAUA,GAAS,OAAOD,EAASC,MAAM,CAAEd,SAAUA,EAAUc,MAAOA,GAAU,GAE/F,IACA,OAAO,WACH,OAAOwQ,EAAc1Q,SAAQ,SAAU6Q,GAAgB,OAAOA,EAAazY,aAAe,GAC9F,CACJ,GACJ,EACOmX,CACX,CAtIgC,GAwIrBM,GAAS,IAAIN,GACxBuB,EAAA,GAAQC,SAASlB,G,uBC/LjB,IAAImB,EAAK,EAAQ,KACbC,EAAK,EAAQ,MAEbpS,EAAOoS,EACXpS,EAAKmS,GAAKA,EACVnS,EAAKoS,GAAKA,EAEVC,EAAOC,QAAUtS,C,mBCFjB,IADA,IAAIuS,EAAY,GACP1c,EAAI,EAAGA,EAAI,MAAOA,EACzB0c,EAAU1c,IAAMA,EAAI,KAAOwW,SAAS,IAAImG,OAAO,GAGjD,SAASC,EAAYC,EAAKC,GACxB,IAAI9c,EAAI8c,GAAU,EACdC,EAAML,EAEV,MAAO,CACLK,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,MACvB+c,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,MAAO,IAC9B+c,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,MAAO,IAC9B+c,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,MAAO,IAC9B+c,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,MAAO,IAC9B+c,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,MACvB+c,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,MACvB+c,EAAIF,EAAI7c,MAAO+c,EAAIF,EAAI7c,OACtBoN,KAAK,GACV,CAEAoP,EAAOC,QAAUG,C,mBClBjB,IAAII,EAAqC,oBAAZ,QAA2BC,OAAOD,iBAAmBC,OAAOD,gBAAgBlI,KAAKmI,SACnE,oBAAd,UAAuE,mBAAnCC,OAAOC,SAASH,iBAAiCG,SAASH,gBAAgBlI,KAAKqI,UAEhJ,GAAIH,EAAiB,CAEnB,IAAII,EAAQ,IAAIC,WAAW,IAE3Bb,EAAOC,QAAU,WAEf,OADAO,EAAgBI,GACTA,CACT,CACF,KAAO,CAKL,IAAIE,EAAO,IAAIxX,MAAM,IAErB0W,EAAOC,QAAU,WACf,IAAK,IAAWvO,EAAPlO,EAAI,EAAMA,EAAI,GAAIA,IACN,KAAV,EAAJA,KAAiBkO,EAAoB,WAAhBqP,KAAKC,UAC/BF,EAAKtd,GAAKkO,MAAY,EAAJlO,IAAa,GAAK,IAGtC,OAAOsd,CACT,CACF,C,sBCjCA,IAQIG,EACAC,EATAC,EAAM,EAAQ,MACdf,EAAc,EAAQ,MAWtBgB,EAAa,EACbC,EAAa,EAGjB,SAASvB,EAAG1b,EAASic,EAAKC,GACxB,IAAI9c,EAAI6c,GAAOC,GAAU,EACrBnX,EAAIkX,GAAO,GAEfjc,EAAUA,GAAW,CAAC,EACtB,IAAIkd,EAAOld,EAAQkd,MAAQL,EACvBM,OAAgCjb,IAArBlC,EAAQmd,SAAyBnd,EAAQmd,SAAWL,EAKnE,GAAY,MAARI,GAA4B,MAAZC,EAAkB,CACpC,IAAIC,EAAYL,IACJ,MAARG,IAEFA,EAAOL,EAAU,CACA,EAAfO,EAAU,GACVA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,KAGtD,MAAZD,IAEFA,EAAWL,EAAiD,OAApCM,EAAU,IAAM,EAAIA,EAAU,IAE1D,CAMA,IAAIC,OAA0Bnb,IAAlBlC,EAAQqd,MAAsBrd,EAAQqd,OAAQ,IAAI5E,MAAO6E,UAIjEC,OAA0Brb,IAAlBlC,EAAQud,MAAsBvd,EAAQud,MAAQN,EAAa,EAGnE1E,EAAM8E,EAAQL,GAAeO,EAAQN,GAAY,IAcrD,GAXI1E,EAAK,QAA0BrW,IAArBlC,EAAQmd,WACpBA,EAAWA,EAAW,EAAI,QAKvB5E,EAAK,GAAK8E,EAAQL,SAAiC9a,IAAlBlC,EAAQud,QAC5CA,EAAQ,GAINA,GAAS,IACX,MAAM,IAAI3P,MAAM,mDAGlBoP,EAAaK,EACbJ,EAAaM,EACbT,EAAYK,EAGZE,GAAS,YAGT,IAAIG,GAA4B,KAAb,UAARH,GAA6BE,GAAS,WACjDxY,EAAE3F,KAAOoe,IAAO,GAAK,IACrBzY,EAAE3F,KAAOoe,IAAO,GAAK,IACrBzY,EAAE3F,KAAOoe,IAAO,EAAI,IACpBzY,EAAE3F,KAAY,IAALoe,EAGT,IAAIC,EAAOJ,EAAQ,WAAc,IAAS,UAC1CtY,EAAE3F,KAAOqe,IAAQ,EAAI,IACrB1Y,EAAE3F,KAAa,IAANqe,EAGT1Y,EAAE3F,KAAOqe,IAAQ,GAAK,GAAM,GAC5B1Y,EAAE3F,KAAOqe,IAAQ,GAAK,IAGtB1Y,EAAE3F,KAAO+d,IAAa,EAAI,IAG1BpY,EAAE3F,KAAkB,IAAX+d,EAGT,IAAK,IAAI9d,EAAI,EAAGA,EAAI,IAAKA,EACvB0F,EAAE3F,EAAIC,GAAK6d,EAAK7d,GAGlB,OAAO4c,GAAYD,EAAYjX,EACjC,CAEA6W,EAAOC,QAAUH,C,uBC5GjB,IAAIqB,EAAM,EAAQ,MACdf,EAAc,EAAQ,MAE1B,SAASL,EAAG3b,EAASic,EAAKC,GACxB,IAAI9c,EAAI6c,GAAOC,GAAU,EAEF,iBAAb,IACRD,EAAkB,WAAZjc,EAAuB,IAAIkF,MAAM,IAAM,KAC7ClF,EAAU,MAEZA,EAAUA,GAAW,CAAC,EAEtB,IAAI0c,EAAO1c,EAAQ4c,SAAW5c,EAAQ+c,KAAOA,KAO7C,GAJAL,EAAK,GAAgB,GAAVA,EAAK,GAAa,GAC7BA,EAAK,GAAgB,GAAVA,EAAK,GAAa,IAGzBT,EACF,IAAK,IAAIyB,EAAK,EAAGA,EAAK,KAAMA,EAC1BzB,EAAI7c,EAAIse,GAAMhB,EAAKgB,GAIvB,OAAOzB,GAAOD,EAAYU,EAC5B,CAEAd,EAAOC,QAAUF,C,wCC5BNgC,EAOAC,EAQAC,E,wKAdX,SAAWF,GACPA,EAAoB,kBAAoB,iBACxCA,EAAoB,cAAgB,qFACpCA,EAAoB,eAAiB,0FACrCA,EAAoB,gBAAkB,oCACzC,EALD,CAKGA,IAAwBA,EAAsB,CAAC,IAElD,SAAWC,GACPA,EAAmC,kBAAoB,iCACvDA,EAAmC,mBAAqB,wBACxDA,EAAmC,qBAAuB,uCAC1DA,EAAmC,iBAAmB,iCACtDA,EAAmC,0BAA4B,2CAClE,CAND,CAMGA,IAAuCA,EAAqC,CAAC,IAEhF,SAAWC,GACPA,EAAgC,yBAA2B,QAC9D,CAFD,CAEGA,IAAoCA,EAAkC,CAAC,ICN1E,IAAIC,EAAsC,SAAS1Q,GAC/C,IAAIjO,EAAsB,oBAAXiF,QAAyBA,OAAO6C,SAAUoG,EAAIlO,GAAKiO,EAAEjO,GAAIC,EAAI,EAC5E,GAAIiO,EAAG,OAAOA,EAAE1N,KAAKyN,GACrB,GAAIA,GAAyB,kBAAbA,EAAE7N,OAAqB,MAAO,CAC1C+C,KAAM,WAEF,OADI8K,GAAKhO,GAAKgO,EAAE7N,SAAQ6N,OAAI,GACrB,CAAEnK,MAAOmK,GAAKA,EAAEhO,KAAMgH,MAAOgH,EACxC,GAEJ,MAAM,IAAIhG,UAAUjI,EAAI,0BAA4B,kCACxD,EACIgO,EAAkC,SAAUC,EAAG/N,GAC/C,IAAIgO,EAAsB,oBAAXjJ,QAAyBgJ,EAAEhJ,OAAO6C,UACjD,IAAKoG,EAAG,OAAOD,EACf,IAAmBE,EAAYrH,EAA3B7G,EAAIiO,EAAE1N,KAAKyN,GAAOG,EAAK,GAC3B,IACI,YAAc,IAANlO,GAAgBA,KAAM,MAAQiO,EAAIlO,EAAEkD,QAAQ8D,KAAMmH,EAAGjG,KAAKgG,EAAErK,MACxE,CACA,MAAO2H,GAAS3E,EAAI,CAAE2E,MAAOA,EAAS,CACtC,QACI,IACQ0C,IAAMA,EAAElH,OAASiH,EAAIjO,EAAE,YAAYiO,EAAE1N,KAAKP,EAClD,CACA,QAAU,GAAI6G,EAAG,MAAMA,EAAE2E,KAAO,CACpC,CACA,OAAO2C,CACX,EAMIzN,EAAS,IAAI,IAAO,sBACbie,EAA6B,qBAC7BC,EAA+B,uBAC1C,SAASC,EAAO1X,GACZ,MAAuB,qBAAT2X,MAAwB3X,aAAgB2X,IAC1D,CACA,SAASC,EAAiBvT,GACtB,MAAyB,qBAAVA,GACX5L,OAAOS,UAAUC,eAAeC,KAAKiL,EAAO,aAClB,qBAAnBA,EAAMwT,UACbpf,OAAOS,UAAUC,eAAeC,KAAKiL,EAAMwT,SAAU,WACpB,kBAA1BxT,EAAMwT,SAASC,MAC9B,CACA,IAAIC,EAAmB,SAAU3E,EAAS4E,GACtC,IAAItR,EAAKvK,EACT,IACI,IAAK,IAAIyI,EAAK2S,EAAS9e,OAAO+O,QAAQ4L,IAAWzM,EAAK/B,EAAG7I,QAAS4K,EAAG9G,KAAM8G,EAAK/B,EAAG7I,OAAQ,CACvF,IAAI0M,EAAK7B,EAAOD,EAAGjK,MAAO,GAAIub,EAAIxP,EAAG,GAAI9H,EAAI8H,EAAG,GAC5CwP,IAAMD,GACNC,EAAEC,gBAAkBF,EAAeE,gBACnC9E,EAAQ4E,GAAkBrX,SACnByS,EAAQ6E,GAEvB,CACJ,CACA,MAAOE,GAASzR,EAAM,CAAErC,MAAO8T,EAAS,CACxC,QACI,IACQxR,IAAOA,EAAG9G,OAAS1D,EAAKyI,EAAGwT,SAASjc,EAAG/C,KAAKwL,EACpD,CACA,QAAU,GAAI8B,EAAK,MAAMA,EAAIrC,KAAO,CACxC,CACJ,EACWgU,EAAgC,CACvC,SAAU5V,EAAM2Q,GACZ,OAAIsE,EAAOjV,IACPsV,EAAiB3E,EAAS,gBAC1B2E,EAAiB3E,EAAS,UACnB3Q,GAGJ,aAAe6V,iBAAiB,GAAGlf,KAAK,KAAMqJ,EAAM2Q,EAC/D,GAEAmF,EAAkC,WAClC,SAASA,EAAiBC,EAAaC,EAASC,QACxB,IAAhBF,IAA0BA,EAAc,CAAC,GAC7Clf,KAAKkf,YAAcA,EACnBlf,KAAKmf,QAAUA,EACfnf,KAAKof,kBAAoBA,CAC7B,CAqHA,OApHAH,EAAiBrf,UAAUyf,QAAU,WAGrC,EACAJ,EAAiBrf,UAAU0f,OAAS,SAAUrG,EAAS9Y,GACnD,IAAIof,EAAqBvf,KAAKkf,YAAYM,eAGtCL,EAAUhf,EAAQgf,SAAWnf,KAAKmf,QAClCM,EAAOxG,EAAQwG,KACnB,GAAIxG,EAAQxH,MAAO,CACf,IAAIiO,GAAc,OAAiBzG,EAAQxH,OACvCiO,IACAD,GAAQ,IAAMC,EAEtB,CACA,IAAIC,EAAO1G,EAAQ0G,KACfvU,EAAM6N,EAAQ9I,SAAW,KAAO8I,EAAQ2G,UAAYD,EAAO,IAAMA,EAAO,IAAMF,EAC9EI,EAAe,CAAC,EACpBA,EAAazU,IAAMA,EACnByU,EAAahG,OAASZ,EAAQY,OAC9BgG,EAAa/F,QAAUb,EAAQa,eAUxB+F,EAAa/F,QAAQ,QACxBb,EAAQvS,KACRmZ,EAAa1W,KAAO8P,EAAQvS,KASxBmZ,EAAa/F,QAAQ3a,OAAO2J,KAAK+W,EAAa/F,SAAS9K,MAAK,SAAU8Q,GAAO,MAA6B,iBAAtBA,EAAIC,aAAkC,OAC1HF,EAAa1W,KAAO,MAGxBgW,IAEAU,EAAaG,iBAAmB,SAAU9W,GACtCiW,EAAQc,KAAK/B,EAA4BhV,GACzCjJ,EAAOM,MAAM2I,EACjB,EAEA2W,EAAaK,mBAAqB,SAAUhX,GACxCiW,EAAQc,KAAK9B,EAA8BjV,GAC3CjJ,EAAOM,MAAM2I,EACjB,GAGAlJ,KAAKof,oBACLS,EAAaM,YAAcngB,KAAKof,kBAAkB/G,OAElDlY,EAAQif,oBACRS,EAAaM,YAAchgB,EAAQif,kBAAkB/G,OAGzDwH,EAAaO,aAAe,OAKxBC,EAAA,GAASC,gBACTT,EAAab,iBAAmBD,GAEpC,IAAIwB,EAAiB,CACjB,YACaV,GACRrZ,MAAK,SAAU+X,GAChB,MAAO,CACHA,SAAU,IAAI,KAAa,CACvBzE,QAASyE,EAASzE,QAClB0G,WAAYjC,EAASC,OACrB9X,KAAM6X,EAASpV,OAG3B,IACK2H,OAAM,SAAU/F,GACjB,IAAIlI,EAAIyI,EAYR,GAVIP,EAAM3B,UACN4U,EAAgCyC,uBAChCxgB,EAAO8K,MAAMA,EAAM3B,SAQnB,aAAe2B,KAAWuT,EAAiBvT,GAC3C,MAAMA,EAIV,MAAO,CACHwT,SAAU,IAAI,KAAa,CACvBiC,WAAYzV,EAAMwT,SAASC,OAC3B9X,KAAgC,QAAzB7D,EAAKkI,EAAMwT,gBAA6B,IAAP1b,OAAgB,EAASA,EAAGsG,KACpE2Q,QAAmC,QAAzBxO,EAAKP,EAAMwT,gBAA6B,IAAPjT,OAAgB,EAASA,EAAGwO,UAGnF,IACA0F,EAAeD,IAEnB,OAAOvZ,QAAQ0a,KAAKH,EACxB,EACOtB,CACX,CA5HqC,GA8HrC,SAASO,EAAemB,GAEpB,YADoB,IAAhBA,IAA0BA,EAAc,GACrC,IAAI3a,SAAQ,SAAUD,EAASE,GAC9B0a,GACAlN,YAAW,WACP,IAAImN,EAAe,IAAI7S,MAAM,mCAAqC4S,EAAc,OAChFC,EAAaC,KAAO,eACpB5a,EAAO2a,EACX,GAAGD,EAEX,GACJ,CCjOO,IC+DIG,EAQAC,EDvEAzc,EAAoC,qBAAXC,QACV,oBAAfA,OAAOC,IACZD,OAAOC,IAAI,mBACX,oBACKwc,EAA4B,0BAC5BC,EAA8B,yBAC9BC,EAAsB,qBEJtBC,EAAa,SAAUC,GAC9B,GAAiB,kBAANA,EACP,OAAOA,EAAE1hB,OAER,GAAI2hB,EAAcD,GACnB,OAAOA,EAAED,WAER,GAAI,EAAOC,GACZ,OAAOA,EAAElW,KAGT,MAAM,IAAI6C,MAAM,mCAAqCqT,EAE7D,EACWE,EAAuB,SAAUC,EAAOrY,EAAOsY,EAAOC,EAASrY,GACtE,GAAImY,EAAO,CACP,IAAIpY,EAAO,CAAEqY,MAAOA,GAChBC,IACAtY,EAAK,WAAasY,GAEtBpY,EAAA,GAAIC,SAAS,UAAW,CACpBJ,MAAOA,EACPC,KAAMA,EACNC,QAASA,GACV,UAAW9E,EAClB,CACJ,EACWod,EAAS,SAAUN,GAC1B,MAAoB,qBAANA,GAAqBA,aAAaO,IACpD,EACW,EAAS,SAAUP,GAC1B,MAAoB,qBAANA,GAAqBA,aAAa/C,IACpD,EACIgD,EAAgB,SAAUD,GAC1B,MAAoB,qBAANA,GAAqBA,aAAaQ,WACpD,E,SCrCI1iB,EAAsC,WAStC,OARAA,EAAWC,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACOH,EAASa,MAAMC,KAAMP,UAChC,EACIgG,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACIgE,EAA4C,SAAUf,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EAKI,EAAS,IAAI,IAAO,iBAEpBsb,EAAe,CAAErI,YAAa,GAAID,gBAAiB,IAC5CuI,EAAY,SAAUxhB,GAC7B,IAAIgZ,EAAchZ,EAAOgZ,YAAayI,EAAQzhB,EAAOyhB,MAAOC,EAAe1hB,EAAO0hB,aAAcC,EAAa3hB,EAAO2hB,WAChHC,EAAuBF,GAAgB,CAAC,EACxCG,EAAqBF,GAAc3I,EAAY2I,WAC/CG,QAAgD/f,IAAjC6f,EAAqBG,QAClCH,EAAqBG,QACrB,YACFF,EACA,IACAG,QAAoDjgB,IAAnC6f,EAAqBK,UACpCL,EAAqBK,UACrB,cACFJ,EACA,IACAK,OAA6CngB,IAAhC6f,EAAqBO,OAChCP,EAAqBO,OACrB,UACN,OAAQV,GACJ,IAAK,UACD,OAAOK,EACX,IAAK,YACD,OAAOE,EACX,QACI,OAAOE,EAEnB,EACWE,EAAyB,SAAUjI,EAAKqF,GAAO,OAAO,SAAUrd,EAAMkgB,GAAY,OAAO,SAAUpY,GAAQ,OAAO9E,OAAU,OAAQ,OAAQ,GAAQ,WAC3J,IAAI6T,EAAaW,EAAM2I,EAAQC,EAAavc,EAC5C,OAAOG,EAAYzG,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAasS,EAAA,GAAY1Y,OACzC,KAAK,EAcD,OAbA2Y,EAAczW,EAAGmE,OACjBiT,EAAOZ,EAAA,GAAYa,MAAMZ,GACzBsJ,EAASd,EAAU5iB,EAASA,EAAS,CAAC,EAAGub,GAAM,CAAEnB,YAAaW,KAC9D4I,EAAc1jB,OAAOC,OAAO,CAAC,EAAGmL,EAAKuY,OACjC3jB,OAAOS,UAAUC,eAAeC,KAAKyK,EAAKuY,MAAO,QACjDD,EAAYE,IAAMH,EAAS9C,EAC3BvV,EAAKuY,MAAQD,GAER1jB,OAAOS,UAAUC,eAAeC,KAAKyK,EAAKuY,MAAO,YACtDD,EAAYG,OAASJ,EAAS9C,EAC9BvV,EAAKuY,MAAQD,GAEjBvc,EAAS7D,EAAK8H,GACP,CAAC,EAAcjE,GAElC,GACJ,GAAI,CAAG,CAAG,EACN2c,EAAoB,SAAUlS,GAC9B,OAAOA,EAAImS,YACa,kBAAbnS,EAAIoS,MACE,yBAAbpS,EAAIoS,IACZ,EAEWC,GAAgC,SAAU9iB,GAAU,OAAO,SAAUmC,EAAMkgB,GAAY,OAAO,SAAUpY,GAAQ,OAAO9E,OAAU,OAAQ,OAAQ,GAAQ,WAChK,IAAIyJ,EAAOmU,EACX,OAAO5c,EAAYzG,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahF,EAAK8H,IAC9B,KAAK,EAAG,MAAO,CAAC,EAAc1H,EAAGmE,QACjC,KAAK,EAMD,MALAkI,EAAQrM,EAAGmE,OACPic,EAAkB/T,KAClBmU,EAAa,IAAIzK,KAAK1J,EAAMgU,YAC5B5iB,EAAOgjB,kBAAoBD,EAAW5F,UAAY7E,KAAK2K,OAErDrU,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAI,CAAG,CAAG,EACCsU,GAAuC,CAC9Crd,KAAM,kBACN0a,KAAM,iCAEC4C,GAA0B,CACjCtd,KAAM,aACN0a,KAAM,uBAEC6C,GAAsB,WAAc,OAAOje,OAAU,OAAQ,OAAQ,GAAQ,WACpF,IAAI6T,EAAaW,EAAM0J,EACvB,OAAOld,EAAYzG,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa4R,EAAA,GAAY1Y,OACrC,KAAK,EAED,OADA2Y,EAAczW,EAAGmE,OACZsS,GAELW,EAAOZ,EAAA,GAAYa,MAAMZ,GACzB,EAAO/Y,MAAM,uCAAwC0Z,GAC9C,CAAC,EAAcA,IAHX,CAAC,EAAc4H,GAI9B,KAAK,EAGD,OAFA8B,EAAU9gB,EAAGmE,OACb,EAAOwD,KAAK,6BAA8BmZ,GACnC,CAAC,EAAc9B,GAC1B,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAI,EACO+B,GAAiB,SAAUtjB,EAAQ6e,GAC1C,IAAIvN,EAAStR,EAAOsR,OAAQwN,EAAoB9e,EAAO8e,kBAAmByE,EAA6CvjB,EAAOujB,2CAA4CC,EAAwBxjB,EAAOwjB,sBACrMC,EAAqB,CAAC,EACtBF,IACAE,EAAqB,CACjBrX,SAAUuU,EACV+C,KAAK,EACLC,gBAAgB,EAChBC,gBAAgB,IAGxB,IAAIC,EAAW,IAAIC,EAAA,EAASllB,EAASA,EAAS,CAAE0S,OAAQA,EAGpD0H,YAAaoK,GAAqBW,iBAAiB,WAAyBN,GAAqB,CAAEO,eAAgB,IAAIrF,EAAiB,CAAC,EAAGE,EAASC,GAAoB0E,sBAAuBA,KAEpM,OADAK,EAASI,gBAAgBxb,OAAOiY,GACzBmD,CACX,E,6ECnKI,GAAsC,WAStC,OARA,GAAWhlB,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACO,GAASU,MAAMC,KAAMP,UAChC,EACI,GAAwC,SAAUiG,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACI,GAA4C,SAAUiD,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EAMI,GAAS,IAAI,IAAO,8BACpBie,GAA4C,WAC5C,SAASA,EAA2BC,EAAQC,EAAMvF,GAE9Cnf,KAAK2kB,YAAc,QACnB3kB,KAAK4kB,UAAY,EAEjB5kB,KAAK0G,KAAO,KACZ1G,KAAKykB,OAAS,KACdzkB,KAAK0kB,KAAO,KACZ1kB,KAAK6kB,eAAiB,GACtB7kB,KAAK8kB,SAAW,KAEhB9kB,KAAK+kB,cAAgB,EACrB/kB,KAAKglB,mBAAqB,EAC1BhlB,KAAKmf,QAAU,KACfnf,KAAKykB,OAASA,EACdzkB,KAAK0kB,KAAOA,EACZ1kB,KAAKmf,QAAUA,EACfnf,KAAKmkB,SAAWnkB,KAAKilB,mBAAmBP,EAAMvF,EAClD,CA+RA,OA9RAqF,EAA2B5kB,UAAUslB,OAAS,WAC1C,OAAO,GAAUllB,UAAM,OAAQ,GAAQ,WACnC,IAAI6C,EAAIsiB,EAAkB7Z,EAAI8Z,EAAuBC,EAAO7J,EAAOmI,EAC/DxhB,EAAQnC,KACZ,OAAO,GAAYA,MAAM,SAAUqN,GAC/B,OAAQA,EAAGtG,OACP,KAAK,EAGD,OAFAsG,EAAGpG,KAAKQ,KAAK,CAAC,EAAG,GAAI,CAAE,KACvB5E,EAAK7C,KACE,CAAC,EAAaA,KAAKslB,wBAAwBtlB,KAAKykB,OAAOc,OAClE,KAAK,EAGD,OAFA1iB,EAAG6D,KAAO2G,EAAGrG,OACbhH,KAAKglB,mBAAqBhlB,KAAKmhB,WAAWnhB,KAAK0G,MACzC1G,KAAKglB,oBAAsBhlB,KAAK2kB,aAEtC3kB,KAAKykB,OAAOc,KAAOvlB,KAAK0G,KACxBye,EAAmB,IAAIK,GAAA,EAAiBxlB,KAAKykB,QACtC,CAAC,EAAczkB,KAAKmkB,SAASvX,KAAKuY,KAJkB,CAAC,EAAa,GAK7E,KAAK,EAGD,OADA7Z,EAAKtL,KACE,CAAC,EAAaA,KAAKylB,yBAC9B,KAAK,EAEDna,EAAGwZ,SAAWzX,EAAGrG,OACjBoe,EAAwBtI,KAAK4I,KAAK1lB,KAAKglB,mBAAqBhlB,KAAK2kB,aACjEU,EAAQrlB,KAAK2lB,cACbnK,EAAQ,EACRnO,EAAGtG,MAAQ,EACf,KAAK,EACD,OAAMyU,EAAQ4J,EAEP,CAAC,EAAaplB,KAAK4lB,YAAY5lB,KAAK8kB,SAAUO,EAAMQ,MAAMrK,EAAOA,EAAQxb,KAAK4kB,aAFxC,CAAC,EAAa,GAG/D,KAAK,EAEDvX,EAAGrG,OACHqG,EAAGtG,MAAQ,EACf,KAAK,EAED,OADAyU,GAASxb,KAAK4kB,UACP,CAAC,EAAa,GACzB,KAAK,EAID,OAHAS,EAAMliB,KAAI,SAAU2iB,GAChB3jB,EAAM4jB,oBAAoBD,EAC9B,IACO,CAAC,EAAa9lB,KAAKgmB,sBAAsBhmB,KAAK8kB,WACzD,KAAK,EAEL,MAAO,CAAC,EAAczX,EAAGrG,QACzB,KAAK,EAAG,MAAO,CAAC,EAAa,IAC7B,KAAK,GAGD,OAFA2c,EAAUtW,EAAGrG,OAEN,CAAC,EAAahH,KAAKimB,QAAQjmB,KAAK8kB,WAC3C,KAAK,GAID,MAFAzX,EAAGrG,OACH,GAAO+D,MAAM,2CACP4Y,EACV,KAAK,GAAI,MAAO,CAAC,GAEzB,GACJ,GACJ,EACAa,EAA2B5kB,UAAU+lB,YAAc,WAC/C,IAEI,IADA,IAAIN,EAAQ,GACHa,EAAY,EAAGA,EAAYlmB,KAAKglB,oBAAqB,CAC1D,IAAImB,EAAUrJ,KAAKsJ,IAAIF,EAAYlmB,KAAK2kB,YAAa3kB,KAAKglB,oBAC1DK,EAAM5d,KAAK,CACP4e,SAAUrmB,KAAK0G,KAAKmf,MAAMK,EAAWC,GACrCG,WAAYjB,EAAM3lB,OAAS,EAC3Byf,QAAS,IAAIoH,GAAOC,aACpBC,mBAAoB,IAExBP,GAAalmB,KAAK2kB,WACtB,CACA,OAAOU,CACX,CACA,MAAOta,GAEH,MADA,GAAOA,MAAMA,GACPA,CACV,CACJ,EACAyZ,EAA2B5kB,UAAU6lB,sBAAwB,WACzD,OAAO,GAAUzlB,UAAM,OAAQ,GAAQ,WACnC,IAAI0mB,EAA8BnI,EAAUoI,EAC5C,OAAO,GAAY3mB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAGD,OAFAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBif,EAA+B,IAAIE,GAAA,EAA6B5mB,KAAKykB,QAC9D,CAAC,EAAazkB,KAAKmkB,SAASvX,KAAK8Z,IAC5C,KAAK,EAGD,OAFAnI,EAAW1b,EAAGmE,OACd,GAAOzG,MAAMge,EAASsI,UACf,CAAC,EAActI,EAASsI,UACnC,KAAK,EAGD,MAFAF,EAAU9jB,EAAGmE,OACb,GAAO+D,MAAM4b,GACPA,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAKAnC,EAA2B5kB,UAAUgmB,YAAc,SAAUd,EAAUO,GACnE,OAAO,GAAUrlB,UAAM,OAAQ,GAAQ,WACnC,IAAI8mB,EAAYvnB,EAAGwnB,EACf5kB,EAAQnC,KACZ,OAAO,GAAYA,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazB,QAAQiJ,IAAIoW,EAAMliB,KAAI,SAAU2iB,GAAQ,OAAO,GAAU3jB,OAAO,OAAQ,GAAQ,WAC7F,IAAIhC,EAAS0C,EAAIkgB,EAAKiE,EAAQC,EAAsBC,EAAgBC,EAAmBtT,EACvF,OAAO,GAAY7T,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EAID,OAHA/G,KAAKonB,mBAAmBtB,GACxB3lB,EAAU,CAAEgf,QAAS2G,EAAK3G,SAC1Btc,EAAK7C,KAAKykB,OAAQ1B,EAAMlgB,EAAGkgB,IAAKiE,EAASnkB,EAAGmkB,OAAQC,EAAuBpkB,EAAGokB,qBAAsBC,EAAiBrkB,EAAGqkB,eAAgBC,EAAoBtkB,EAAGskB,kBACxJ,CAAC,EAAannB,KAAKmkB,SAASvX,KAAK,IAAIya,GAAA,EAAkB,GAAS,GAAS,GAAS,CAAEC,WAAYxB,EAAKQ,WAAYf,KAAMO,EAAKO,SAAUQ,SAAU/B,EAAU/B,IAAKA,EAC9JiE,OAAQA,GAAWC,GAAwB,CAAEA,qBAAsBA,IAA2BC,GAAkB,CAAEA,eAAgBA,IAAqBC,GAAqB,CAAEA,kBAAmBA,KAAwBhnB,IACrO,KAAK,EAED,OADA0T,EAAMvI,EAAGtE,OACF,CAAC,EAAc6M,GAElC,GACJ,GAAI,MACZ,KAAK,EAGD,IAFAiT,EAAajkB,EAAGmE,OAEXzH,EAAI,EAAGA,EAAIunB,EAAWpnB,OAAQH,IAC/BS,KAAK6kB,eAAepd,KAAK,CACrB6f,WAAYjC,EAAM9lB,GAAG+mB,WACrBiB,KAAMT,EAAWvnB,GAAGgoB,OAG5B,MAAO,CAAC,EAAa,GACzB,KAAK,EAGD,MAFAR,EAAUlkB,EAAGmE,OACb,GAAO+D,MAAM,0EACPgc,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAvC,EAA2B5kB,UAAUomB,sBAAwB,SAAUlB,GACnE,OAAO,GAAU9kB,UAAM,OAAQ,GAAQ,WACnC,IAAI8iB,EAAO0E,EAAuBre,EAAMse,EACxC,OAAO,GAAYznB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EACD+b,EAAQ,CACJkE,OAAQhnB,KAAKykB,OAAOuC,OACpBjE,IAAK/iB,KAAKykB,OAAO1B,IACjB8D,SAAU/B,EACV4C,gBAAiB,CAAEC,MAAO3nB,KAAK6kB,iBAEnC2C,EAAwB,IAAII,GAAA,EAA+B9E,GAC3DjgB,EAAGkE,MAAQ,EACf,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazH,KAAKmkB,SAASvX,KAAK4a,IAC5C,KAAK,EAED,OADAre,EAAOtG,EAAGmE,OACH,CAAC,EAAcmC,EAAK4Z,KAC/B,KAAK,EAGD,MAFA0E,EAAU5kB,EAAGmE,OACb,GAAO+D,MAAM,8CACP0c,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAjD,EAA2B5kB,UAAUqmB,QAAU,SAAUnB,GACrD,OAAO,GAAU9kB,UAAM,OAAQ,GAAQ,WACnC,IAAI8iB,EAAO3Z,EACX,OAAO,GAAYnJ,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAWD,OATA/G,KAAK0G,KAAO,KACZ1G,KAAK6kB,eAAiB,GACtB7kB,KAAK+kB,cAAgB,EACrB/kB,KAAKglB,mBAAqB,EAC1BlC,EAAQ,CACJkE,OAAQhnB,KAAKykB,OAAOuC,OACpBjE,IAAK/iB,KAAKykB,OAAO1B,IACjB8D,SAAU/B,GAEP,CAAC,EAAa9kB,KAAKmkB,SAASvX,KAAK,IAAIib,GAAA,EAA4B/E,KAC5E,KAAK,EAED,OADAjgB,EAAGmE,OACI,CAAC,EAAahH,KAAKmkB,SAASvX,KAAK,IAAIkb,GAAA,EAAiBhF,KACjE,KAAK,EAED,GADA3Z,EAAOtG,EAAGmE,OACNmC,GAAQA,EAAKwe,OAASxe,EAAKwe,MAAMjoB,OAAS,EAC1C,MAAM,IAAIqO,MAAM,qCAEpB,MAAO,CAAC,GAEpB,GACJ,GACJ,EACAyW,EAA2B5kB,UAAUmmB,oBAAsB,SAAUD,GACjEA,EAAK3G,QAAQ4I,mBAAmB7J,GAChC4H,EAAK3G,QAAQ4I,mBAAmB5J,EACpC,EACAqG,EAA2B5kB,UAAUwnB,mBAAqB,SAAUtB,GAChE,IAAI3jB,EAAQnC,KACZ8lB,EAAK3G,QAAQ6I,GAAG9J,GAA4B,SAAU+J,GAClD9lB,EAAM+lB,gBAAgBpC,EAAKQ,WAAY2B,EAASE,OAASrC,EAAKW,oBAC9DX,EAAKW,mBAAqBwB,EAASE,MACvC,GACJ,EACA3D,EAA2B5kB,UAAUsoB,gBAAkB,SAAU5B,EAAY8B,GACzEpoB,KAAK+kB,eAAiBqD,EACtBpoB,KAAKmf,QAAQc,KAAK/B,EAA4B,CAC1CiK,OAAQnoB,KAAK+kB,cACbsD,MAAOroB,KAAKglB,mBACZc,KAAMQ,EACNxG,IAAK9f,KAAKykB,OAAO1B,KAEzB,EACAyB,EAA2B5kB,UAAUuhB,WAAa,SAAU2B,GACxD,GAAc,OAAVA,QAA4BzgB,IAAVygB,EAClB,OAAO,EACX,GAAgC,kBAArBA,EAAM3B,WACb,OAAO2B,EAAM3B,WAEZ,GAA4B,kBAAjB2B,EAAMpjB,OAClB,OAAOojB,EAAMpjB,OAEZ,GAA0B,kBAAfojB,EAAM5X,KAClB,OAAO4X,EAAM5X,KAEZ,GAA0B,kBAAf4X,EAAMrD,KAMlB,MAAM,IAAI1R,MAAM,8BAAgC+U,EAExD,EACA0B,EAA2B5kB,UAAU0lB,wBAA0B,SAAU5e,GACrE,OAAO,GAAU1G,UAAM,OAAQ,GAAQ,WACnC,OAAO,GAAYA,MAAM,SAAU6C,GAC/B,OAAI7C,KAAKsoB,gBAAgB5hB,GAEd,CAAC,EAAc+D,KAAKC,UAAUhE,IAI9B,CAAC,EAAcA,EAG9B,GACJ,GACJ,EACA8d,EAA2B5kB,UAAU0oB,gBAAkB,SAAU5hB,GAC7D,GAAa,OAATA,GAAiC,kBAATA,EACxB,IACI,QAAS1G,KAAKmhB,WAAWza,IAAS,EACtC,CACA,MAAOqE,GAGH,OAAO,CACX,CAEJ,OAAO,CACX,EACAyZ,EAA2B5kB,UAAUqlB,mBAAqB,SAAU3kB,EAAQ6e,GACxE,IAAIgF,EAAWP,GAAetjB,EAAQ6e,GAGtC,OAFAgF,EAASI,gBAAgBrX,IAAIwV,EAAuB1iB,KAAK0kB,KAAM1kB,KAAKykB,OAAO1B,KAAMU,IACjFU,EAASI,gBAAgBrX,IAAIkW,GAA8Be,EAAS7jB,QAASkjB,IACtEW,CACX,EACOK,CACX,CAnT+C,GHjE3C,GAAwC,SAAU9e,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACI,GAA4C,SAAUiD,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EACI,GAAkC,SAAUgH,EAAG/N,GAC/C,IAAIgO,EAAsB,oBAAXjJ,QAAyBgJ,EAAEhJ,OAAO6C,UACjD,IAAKoG,EAAG,OAAOD,EACf,IAAmBE,EAAYrH,EAA3B7G,EAAIiO,EAAE1N,KAAKyN,GAAOG,EAAK,GAC3B,IACI,YAAc,IAANlO,GAAgBA,KAAM,MAAQiO,EAAIlO,EAAEkD,QAAQ8D,KAAMmH,EAAGjG,KAAKgG,EAAErK,MACxE,CACA,MAAO2H,GAAS3E,EAAI,CAAE2E,MAAOA,EAAS,CACtC,QACI,IACQ0C,IAAMA,EAAElH,OAASiH,EAAIjO,EAAE,YAAYiO,EAAE1N,KAAKP,EAClD,CACA,QAAU,GAAI6G,EAAG,MAAMA,EAAE2E,KAAO,CACpC,CACA,OAAO2C,CACX,EACIC,GAAsC,WACtC,IAAK,IAAID,EAAK,GAAInO,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAKmO,EAAKA,EAAGjB,OAAO,GAAOhN,UAAUF,KACpF,OAAOmO,CACX,EAOI,GAAS,IAAI,IAAO,oBAExB,SAAWoT,GACPA,EAAqBA,EAAqB,QAAU,GAAK,OACzDA,EAAqBA,EAAqB,eAAiB,GAAK,cAChEA,EAAqBA,EAAqB,UAAY,GAAK,SAC3DA,EAAqBA,EAAqB,aAAe,GAAK,YAC9DA,EAAqBA,EAAqB,aAAe,GAAK,WACjE,EAND,CAMGA,IAAyBA,EAAuB,CAAC,IAEpD,SAAWC,GACPA,EAAW,UAAY,SACvBA,EAAW,mBAAqB,iBAChCA,EAAW,mBAAqB,qBAChCA,EAAW,SAAW,OACzB,CALD,CAKGA,IAAeA,EAAa,CAAC,IAGhC,IAAIwH,GAAY,IAEZC,GAAY,QACZC,GAAqB,EACzB,SAASC,GAAkBC,EAAGzjB,GAC1B,OAAOyjB,EAAErB,WAAapiB,EAAEoiB,UAC5B,CACA,IAAIsB,GAAiC,WACjC,SAASA,EAAgB/lB,GACrB,IAAIgmB,EAAWhmB,EAAGgmB,SAAUC,EAAOjmB,EAAGimB,KAAM3J,EAAUtc,EAAGsc,QAAS4J,EAAUlmB,EAAGkmB,QAAStE,EAAS5hB,EAAG4hB,OAAQ1C,EAAQlf,EAAGkf,MAAOiH,EAAgBnmB,EAAGmmB,cACjJhpB,KAAKipB,SAAWT,GAChBxoB,KAAK4kB,UAAY6D,GACjBzoB,KAAKkpB,WAAa,GAClBlpB,KAAK6kB,eAAiB,GACtB7kB,KAAKmpB,OAAS,GACdnpB,KAAK+kB,cAAgB,EACrB/kB,KAAKopB,WAAa,EAClBppB,KAAKqpB,MAAQvI,EAAqBwI,KAClCtpB,KAAKgpB,cAAgBA,EACrBhpB,KAAKmkB,SAAW0E,EAChB7oB,KAAKmkB,SAASI,gBAAgBxb,OAAOiY,GACrChhB,KAAK+oB,QAAUA,EACf/oB,KAAKupB,YAAcvjB,QAAQD,UACS,oBAAzB/F,KAAK+oB,QAAQ,UACpB/oB,KAAKupB,YAAcvpB,KAAK+oB,QAAQ,WAEpC/oB,KAAKykB,OAASA,EACdzkB,KAAK8oB,KAAOA,EACZ9oB,KAAKopB,WAAappB,KAAK8oB,KAAK5d,KAC5BlL,KAAK+kB,cAAgB,EACrB/kB,KAAKmf,QAAUA,EACfnf,KAAKmpB,OAAS,GACdnpB,KAAKwpB,OAASxpB,KAAKypB,WAAW1H,GAC9B/hB,KAAK0pB,kBAGL1pB,KAAKmf,QAAQ6I,GAAGjH,EAAW4I,OAAO,WAAc,GACpD,CAoeA,OAneAxqB,OAAOuB,eAAekoB,EAAgBhpB,UAAW,UAAW,CACxDe,IAAK,WACD,OAAQX,KAAK+kB,cAAgB/kB,KAAKopB,WAAc,GACpD,EACAxoB,YAAY,EACZC,cAAc,IAElB1B,OAAOuB,eAAekoB,EAAgBhpB,UAAW,eAAgB,CAC7De,IAAK,WACD,OAAOX,KAAKqpB,QAAUvI,EAAqB8I,WAC/C,EACAhpB,YAAY,EACZC,cAAc,IAElB+nB,EAAgBhpB,UAAUiqB,gBAAkB,SAAUhnB,GAClD,IAAIid,EAAMjd,EAAGid,IAAKgK,EAASjnB,EAAGinB,OAC9B,OAAO,GAAU9pB,UAAM,OAAQ,GAAQ,WACnC,IAAI+pB,EAAeze,EAAI0e,EAAUpH,EAAQrT,EACzC,OAAO,GAAYvP,MAAM,SAAUqN,GAC/B,OAAQA,EAAGtG,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKmkB,SAASvX,KAAK,IAAIqd,EAAA,EAAqB,CACjEjD,OAAQ8C,EACR9G,OAAQlD,MAEhB,KAAK,EAGD,OAFAiK,EAAgB1c,EAAGrG,OACnBsE,EAAKye,EAAcC,SAAUA,OAAkB,IAAP1e,EAAgB,GAAKA,EACtD,CAAC,EAAatL,KAAKgpB,eAC9B,KAAK,EAGD,OAFApG,EAASvV,EAAGrG,OACZuI,EAAMya,EAAShb,MAAK,SAAUzB,GAAK,OAAOA,EAAEwV,MAAQ,GAAKH,EAAS9C,CAAK,IAChE,CAAC,EAAcvQ,GAElC,GACJ,GACJ,EACAqZ,EAAgBhpB,UAAU6pB,WAAa,SAAU1H,GAE7C,OAAIL,EAAO1hB,KAAK8oB,MACL,CACH9oB,KAAK8oB,KAAKjI,KACV7gB,KAAK8oB,KAAKoB,aACVlqB,KAAK8oB,KAAK5d,KACVlL,KAAK8oB,KAAKxV,KACVtT,KAAKykB,OAAOuC,OACZjF,EACA/hB,KAAKykB,OAAO1B,KACdpW,KAAK,KAGA,CACH3M,KAAK8oB,KAAK5d,KACVlL,KAAK8oB,KAAKxV,KACVtT,KAAKykB,OAAOuC,OACZjF,EACA/hB,KAAKykB,OAAO1B,KACdpW,KAAK,IAEf,EACAic,EAAgBhpB,UAAUuqB,uBAAyB,WAC/C,OAAO,GAAUnqB,UAAM,OAAQ,GAAQ,WACnC,IAAIoqB,EAAgBC,EAAsBC,EAC1C,OAAO,GAAYtqB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKuqB,0BAClC,KAAK,EAED,OADAH,EAAiBvnB,EAAGmE,OACuB,IAAvC7H,OAAO2J,KAAKshB,GAAgB1qB,QAC3BP,OAAOS,UAAUC,eAAeC,KAAKsqB,EAAgBpqB,KAAKwpB,SAG/Da,EAAuBD,EAAepqB,KAAKwpB,QAC3Ca,EAAqBG,YAAc5R,KAAK2K,MACxCvjB,KAAK+oB,QAAQ0B,QAAQvJ,EAAqBzW,KAAKC,UAAU0f,IAClD,CAAC,EAAapqB,KAAKmkB,SAASvX,KAAK,IAAIkb,GAAA,EAAiB,CACrDd,OAAQhnB,KAAKykB,OAAOuC,OACpBjE,IAAK/iB,KAAKykB,OAAO1B,IACjB8D,SAAUwD,EAAqBvF,cAR5B,CAAC,EAAc,CAAEO,MAAO,GAAIP,SAAU,OAUrD,KAAK,EAED,OADAwF,EAAkBznB,EAAGmE,OACd,CAAC,EAAc,CACdqe,MAAOiF,EAAgB3C,OAAS,GAChC7C,SAAUuF,EAAqBvF,WAGnD,GACJ,GACJ,EACA8D,EAAgBhpB,UAAU8qB,WAAa,SAAUxhB,EAAO8J,GACpDhT,KAAKmf,QAAQc,KAAK/W,EAAO8J,EAC7B,EACA4V,EAAgBhpB,UAAU8pB,gBAAkB,WACxC,GAAI1pB,KAAK8oB,KAAK5d,KAAOlL,KAAKipB,SAAWV,GACjC,MAAM,IAAIxa,MAAM,sCAAwC/N,KAAK8oB,KAAK5d,KAC9DlL,KAAKipB,SAAW,gBAAkBV,GAAY,IAE1D,EACAK,EAAgBhpB,UAAU2qB,uBAAyB,WAC/C,OAAO,GAAUvqB,UAAM,OAAQ,GAAQ,WACnC,IAAI2qB,EACJ,OAAO,GAAY3qB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKupB,aAClC,KAAK,EAGD,OAFA1mB,EAAGmE,OACH2jB,EAAQ3qB,KAAK+oB,QAAQvQ,QAAQ0I,IAAwB,KAC9C,CAAC,EAAczW,KAAKsC,MAAM4d,IAE7C,GACJ,GACJ,EACA/B,EAAgBhpB,UAAUgrB,OAAS,SAAUC,GACzC,OAAO,GAAU7qB,UAAM,OAAQ,GAAQ,WACnC,IAAIoqB,EACJ,OAAO,GAAYpqB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKuqB,0BAClC,KAAK,EAID,OAHAH,EAAiBvnB,EAAGmE,OACpBojB,EAAepqB,KAAKwpB,QAAUqB,EAC9B7qB,KAAK+oB,QAAQ0B,QAAQvJ,EAAqBzW,KAAKC,UAAU0f,IAClD,CAAC,GAEpB,GACJ,GACJ,EACAxB,EAAgBhpB,UAAUkrB,UAAY,WAClC,OAAO,GAAU9qB,UAAM,OAAQ,GAAQ,WACnC,IAAI6C,EAAIyI,EACR,OAAO,GAAYtL,MAAM,SAAUqN,GAC/B,OAAQA,EAAGtG,OACP,KAAK,EAED,OADAuE,GAAMzI,EAAK1D,OAAOS,UAAUC,gBAAgBC,KACrC,CAAC,EAAaE,KAAKuqB,0BAC9B,KAAK,EAAG,MAAO,CAAC,EAAcjf,EAAGvL,MAAM8C,EAAI,CAACwK,EAAGrG,OACvChH,KAAKwpB,UAErB,GACJ,GACJ,EACAZ,EAAgBhpB,UAAUmrB,iBAAmB,WACzC,OAAO,GAAU/qB,UAAM,OAAQ,GAAQ,WACnC,IAAIoqB,EACJ,OAAO,GAAYpqB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKuqB,0BAClC,KAAK,EAID,OAHAH,EAAiBvnB,EAAGmE,cACbojB,EAAepqB,KAAKwpB,QAC3BxpB,KAAK+oB,QAAQ0B,QAAQvJ,EAAqBzW,KAAKC,UAAU0f,IAClD,CAAC,GAEpB,GACJ,GACJ,EACAxB,EAAgBhpB,UAAUorB,wBAA0B,SAAUnoB,GAC1D,IAAIooB,EAAOpoB,EAAGooB,KAAM3E,EAAazjB,EAAGyjB,WAAY4E,EAAQroB,EAAGqoB,MAC3D,OAAO,GAAUlrB,UAAM,OAAQ,GAAQ,WACnC,OAAO,GAAYA,MAAM,SAAUsL,GAgB/B,OAfAtL,KAAK6kB,eAAepd,KAAK,CACrB8f,KAAM0D,EACN3D,WAAYhB,IAEhBtmB,KAAK+kB,eAAiB5D,EAAW+J,GACjClrB,KAAK0qB,WAAW3J,EAAWoK,gBAAiB,CACxChD,OAAQnoB,KAAK+kB,cACbsD,MAAOroB,KAAKopB,aAGhBppB,KAAKkpB,WAAalpB,KAAKkpB,WAAW5lB,QAAO,SAAU8nB,GAAO,OAAOA,EAAIC,gBAAgB/D,aAAehB,CAAY,IAC5GtmB,KAAKmpB,OAAOzpB,QAAUM,KAAKqpB,QAAUvI,EAAqBwK,QAC1DtrB,KAAKurB,iBACLvrB,KAAKwrB,WACLxrB,KAAKyrB,kBACF,CAAC,EACZ,GACJ,GACJ,EACA7C,EAAgBhpB,UAAU6rB,gBAAkB,WACxC,OAAO,GAAUzrB,UAAM,OAAQ,GAAQ,WACnC,IAAIkP,EACJ,OAAO,GAAYlP,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazH,KAAKmkB,SAASvX,KAAK,IAAIgb,GAAA,EAA+B,CACnEZ,OAAQhnB,KAAKykB,OAAOuC,OACpBjE,IAAK/iB,KAAKykB,OAAO1B,IACjB8D,SAAU7mB,KAAK8kB,SACf4C,gBAAiB,CAEbC,MAAO3nB,KAAK6kB,eAAe6G,KAAKhD,SAGhD,KAAK,EAQD,OAPA7lB,EAAGmE,OACHhH,KAAK2rB,kBACL3rB,KAAK0qB,WAAW3J,EAAW6K,gBAAiB,CACxC9L,IAAK9f,KAAKykB,OAAOuC,OAAS,IAAMhnB,KAAKykB,OAAO1B,MAEhD/iB,KAAK+qB,mBACL/qB,KAAKqpB,MAAQvI,EAAqB+K,UAC3B,CAAC,EAAa,GACzB,KAAK,EAID,OAHA3c,EAAQrM,EAAGmE,OACX,GAAO+D,MAAM,0BAA2BmE,GACxClP,KAAK0qB,WAAW3J,EAAW4I,MAAOza,GAC3B,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACA0Z,EAAgBhpB,UAAUksB,uBAAyB,SAAUhJ,EAAO1D,GAChE,OAAO,GAAUpf,UAAM,OAAQ,GAAQ,WACnC,IAAI6T,EAAKvB,EACT,OAAO,GAAYtS,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazH,KAAKmkB,SAASvX,KAAK,IAAIya,GAAA,EAAkBvE,GAAQ,CAC9D1D,kBAAmBA,KAE/B,KAAK,EAED,OADAvL,EAAMhR,EAAGmE,OACF,CAAC,EAAahH,KAAKgrB,wBAAwB,CAC1CC,KAAMpX,EAAI0T,KACVjB,WAAYxD,EAAMwE,WAClB4D,MAAOpI,EAAMyC,QAEzB,KAAK,EAED,OADA1iB,EAAGmE,OACI,CAAC,EAAa,GACzB,KAAK,EAkBD,OAjBAsL,EAAQzP,EAAGmE,OACPhH,KAAKqpB,QAAUvI,EAAqBwK,OACpC,GAAOS,IAAI,iBAEN/rB,KAAKqpB,QAAUvI,EAAqBkL,UACzC,GAAOD,IAAI,kBAGX,GAAOhhB,MAAM,uCAAwCuH,GAIpD,aAAeA,IAChBA,EAAMlJ,UAAY4U,EAAgCyC,wBAClDzgB,KAAK0qB,WAAW3J,EAAW4I,MAAOrX,GAClCtS,KAAKisB,SAEF,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACArD,EAAgBhpB,UAAU2rB,eAAiB,WACvC,GAAIvrB,KAAKmpB,OAAOzpB,OAAS,GAAKM,KAAKqpB,QAAUvI,EAAqBwK,OAAQ,CACtE,IAAIlM,EAAoB,gBAAkB8M,SACtCC,EAAWnsB,KAAKmpB,OAAOiD,QAC3BpsB,KAAKkpB,WAAWzhB,KAAK,CACjB4jB,gBAAiBc,EACjBE,UAAWrsB,KAAK8rB,uBAAuBK,EAAU/M,GACjDkN,OAAQlN,EAAkBkN,QAElC,CACJ,EAOA1D,EAAgBhpB,UAAU+rB,gBAAkB,WACxC,OAAO,GAAU3rB,UAAM,OAAQ,GAAQ,WACnC,IAAIuP,EAAKgd,EACT,OAAO,GAAYvsB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAK6pB,gBAAgB,CAC1C/J,IAAK9f,KAAKykB,OAAO1B,IACjB+G,OAAQ9pB,KAAKykB,OAAOuC,UAE5B,KAAK,EAGD,GAFAzX,EAAM1M,EAAGmE,OACTulB,EAAQC,QAAQjd,GAAOA,EAAIkd,OAASzsB,KAAK8oB,KAAK5d,OACzCqhB,EACD,MAAM,IAAIxe,MAAM,8DAEpB,MAAO,CAAC,EAAcwe,GAElC,GACJ,GACJ,EACA3D,EAAgBhpB,UAAU4rB,QAAU,WAChC,OAASxrB,KAAKmpB,OAAOzpB,SAChBM,KAAKkpB,WAAWxpB,QACjBM,KAAK+kB,gBAAkB/kB,KAAKopB,UACpC,EACAR,EAAgBhpB,UAAU8sB,aAAe,WAGrC,IAFA,IAAIxhB,EAAOlL,KAAK8oB,KAAK5d,KACjBma,EAAQ,GACHa,EAAY,EAAGA,EAAYhb,GAAO,CACvC,IAAIib,EAAUrJ,KAAKsJ,IAAIF,EAAYlmB,KAAKipB,SAAU/d,GAClDma,EAAM5d,KAAK,CACP8d,KAAMvlB,KAAK8oB,KAAKjD,MAAMK,EAAWC,GACjCpD,IAAK/iB,KAAKykB,OAAO1B,IACjBiE,OAAQhnB,KAAKykB,OAAOuC,OACpBM,WAAYjC,EAAM3lB,OAAS,EAC3BmnB,SAAU7mB,KAAK8kB,WAEnBoB,GAAalmB,KAAKipB,QACtB,CACA,OAAO5D,CACX,EACAuD,EAAgBhpB,UAAU+sB,uBAAyB,SAAUC,GACzD5sB,KAAK+kB,eAAiB6H,EAAYhe,QAAO,SAAUC,EAAKiX,GAAQ,OAAOjX,EAAMiX,EAAK2G,IAAM,GAAG,GAE3F,IAAII,EAAqB,IAAI5f,IAAI2f,EAAYzpB,KAAI,SAAU2iB,GAAQ,OAAOA,EAAKwB,UAAY,KAC3FtnB,KAAKmpB,OAASnpB,KAAKmpB,OAAO7lB,QAAO,SAAUwiB,GAAQ,OAAQ+G,EAAmBxe,IAAIyX,EAAKwB,WAAa,IACpGtnB,KAAK6kB,eAAiB+H,EAAYzpB,KAAI,SAAU2iB,GAAQ,MAAO,CAC3DwB,WAAYxB,EAAKwB,WACjBC,KAAMzB,EAAKyB,KACX,IACJvnB,KAAK0qB,WAAW3J,EAAWoK,gBAAiB,CACxChD,OAAQnoB,KAAK+kB,cACbsD,MAAOroB,KAAKopB,YAEpB,EACAR,EAAgBhpB,UAAUktB,qBAAuB,WAC7C,OAAO,GAAU9sB,UAAM,OAAQ,GAAQ,WACnC,IAAI6T,EACJ,OAAO,GAAY7T,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKmkB,SAASvX,KAAK,IAAIga,GAAA,EAA6B5mB,KAAKykB,UACtF,KAAK,EASD,OARA5Q,EAAMhR,EAAGmE,OACThH,KAAK4qB,OAAO,CACR9F,SAAUjR,EAAIgT,SACd2D,YAAa5R,KAAK2K,MAClBuG,OAAQ9pB,KAAKykB,OAAOuC,OACpBlH,IAAK9f,KAAKykB,OAAO1B,IACjBgK,SAAU/sB,KAAK8oB,gBAAgBnH,KAAO3hB,KAAK8oB,KAAKjI,KAAO,KAEpD,CAAC,EAAchN,EAAIgT,UAEtC,GACJ,GACJ,EACA+B,EAAgBhpB,UAAUotB,sBAAwB,WAC9C,OAAO,GAAUhtB,UAAM,OAAQ,GAAQ,WACnC,IAAI6C,EAAIwiB,EAAiBP,EAAUjP,EACnC,OAAO,GAAY7V,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EACD/G,KAAKqpB,MAAQvI,EAAqB8I,YAClCte,EAAGvE,MAAQ,EACf,KAAK,EAED,OADAuE,EAAGrE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazH,KAAK8qB,aAC9B,KAAK,EACD,OAAKxf,EAAGtE,OACD,CAAC,EAAahH,KAAKmqB,0BADH,CAAC,EAAa,GAEzC,KAAK,EAMD,OALAtnB,EAAKyI,EAAGtE,OAAQqe,EAAQxiB,EAAGwiB,MAAOP,EAAWjiB,EAAGiiB,SAChD9kB,KAAK8kB,SAAWA,EAChB9kB,KAAKmpB,OAASnpB,KAAK0sB,eACnB1sB,KAAK2sB,uBAAuBtH,GAC5BrlB,KAAKitB,eACE,CAAC,EAAa,GACzB,KAAK,EACD,OAAMjtB,KAAK8kB,SAAiB,CAAC,EAAa,GACnC,CAAC,EAAa9kB,KAAK8sB,wBAC9B,KAAK,EACDhI,EAAWxZ,EAAGtE,OACdhH,KAAK8kB,SAAWA,EAChB9kB,KAAKmpB,OAASnpB,KAAK0sB,eACnB1sB,KAAKitB,eACL3hB,EAAGvE,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAKD,OAJA8O,EAAQvK,EAAGtE,OACN,aAAe6O,IAChB,GAAO9K,MAAM,qCAAsC8K,GAEhD,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACA+S,EAAgBhpB,UAAUstB,OAAS,WAC3BltB,KAAKqpB,QAAUvI,EAAqBkL,UACpC,GAAOxhB,KAAK,wCAEPxK,KAAKqpB,QAAUvI,EAAqB+K,UACzC,GAAOrhB,KAAK,wCAEPxK,KAAKqpB,QAAUvI,EAAqB8I,YACzC,GAAOpf,KAAK,mCAINxK,KAAK8kB,SAIX9kB,KAAKitB,eAHLjtB,KAAKgtB,uBAKb,EACApE,EAAgBhpB,UAAUqtB,aAAe,WACrCjtB,KAAKqpB,MAAQvI,EAAqB8I,YAClC,IAAK,IAAIrqB,EAAI,EAAGA,EAAIS,KAAK4kB,UAAWrlB,IAChCS,KAAKurB,gBAEb,EACA3C,EAAgBhpB,UAAUutB,QAAU,WAChC,OAAO,GAAUntB,UAAM,OAAQ,GAAQ,WACnC,IAAImW,EACJ,OAAO,GAAYnW,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EACD,OAAM/G,KAAKqpB,QAAUvI,EAAqBkL,UAAmB,CAAC,EAAa,IAC3E,GAAOxhB,KAAK,wCACL,CAAC,GAAc,IAC1B,KAAK,EACD,OAAMxK,KAAKqpB,QAAUvI,EAAqB+K,UAAmB,CAAC,EAAa,IAC3E,GAAOrhB,KAAK,wCACL,CAAC,GAAc,IAC1B,KAAK,EACDxK,KAAKisB,QACLjsB,KAAKmpB,OAAS,GACdnpB,KAAK6kB,eAAiB,GACtB7kB,KAAK+kB,cAAgB,EACrB/kB,KAAKqpB,MAAQvI,EAAqBkL,UAClCnpB,EAAGkE,MAAQ,EACf,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAazH,KAAKmkB,SAASvX,KAAK,IAAIib,GAAA,EAA4B,CAChEb,OAAQhnB,KAAKykB,OAAOuC,OACpBjE,IAAK/iB,KAAKykB,OAAO1B,IACjB8D,SAAU7mB,KAAK8kB,aAE3B,KAAK,EAED,OADAjiB,EAAGmE,OACI,CAAC,EAAahH,KAAK+qB,oBAC9B,KAAK,EAED,OADAloB,EAAGmE,OACI,CAAC,GAAc,GAC1B,KAAK,EAGD,OAFAmP,EAAQtT,EAAGmE,OACX,GAAO+D,MAAM,+BAAgCoL,GACtC,CAAC,GAAc,GAC1B,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAIAyS,EAAgBhpB,UAAUqsB,MAAQ,WAC9B,IAAIppB,EACA7C,KAAKqpB,QAAUvI,EAAqBkL,UACpC,GAAOxhB,KAAK,wCAEPxK,KAAKqpB,QAAUvI,EAAqB+K,UACzC,GAAOrhB,KAAK,wCAEPxK,KAAKqpB,QAAUvI,EAAqBwK,QACzC,GAAO9gB,KAAK,+BAEhBxK,KAAKqpB,MAAQvI,EAAqBwK,OAGlC,IAAI8B,EAAuBptB,KAAKkpB,WAAWmE,OAAO,EAAGrtB,KAAKkpB,WAAWxpB,QACrE0tB,EAAqBviB,SAAQ,SAAUyiB,GACnCA,EAAIhB,OAAOtO,EAAgCyC,sBAC/C,KAEC5d,EAAK7C,KAAKmpB,QAAQoE,QAAQxtB,MAAM8C,EAAI8K,GAASyf,EAAqBjqB,KAAI,SAAUmqB,GAAO,OAAOA,EAAIjC,eAAiB,KACxH,EACOzC,CACX,CAngBoC,GIvFhC,GAAsC,WAStC,OARA,GAAWzpB,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACO,GAASU,MAAMC,KAAMP,UAChC,EACI,GAAwC,SAAUiG,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM1C,GAAS,OAAOA,aAAiBwC,EAAIxC,EAAQ,IAAIwC,GAAE,SAAUG,GAAWA,EAAQ3C,EAAQ,GAAI,CAC3G,OAAO,IAAKwC,IAAMA,EAAII,WAAU,SAAUD,EAASE,GAC/C,SAASC,EAAU9C,GAAS,IAAM+C,EAAKN,EAAUpD,KAAKW,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC1F,SAASC,EAASjD,GAAS,IAAM+C,EAAKN,EAAU,SAASzC,GAAS,CAAE,MAAOgD,GAAKH,EAAOG,EAAI,CAAE,CAC7F,SAASD,EAAKG,GAAUA,EAAOC,KAAOR,EAAQO,EAAOlD,OAAS0C,EAAMQ,EAAOlD,OAAOoD,KAAKN,EAAWG,EAAW,CAC7GF,GAAMN,EAAYA,EAAU9F,MAAM2F,EAASC,GAAc,KAAKlD,OAClE,GACJ,EACI,GAA4C,SAAUiD,EAASgB,GAC/D,IAAsGC,EAAGC,EAAGvH,EAAGwH,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEpE,KAAM0E,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX5C,SAA0BsC,EAAEtC,OAAO6C,UAAY,WAAa,OAAOpH,IAAM,GAAI6G,EACvJ,SAASM,EAAK3H,GAAK,OAAO,SAAU6H,GAAK,OAAOlB,EAAK,CAAC3G,EAAG6H,GAAK,CAAG,CACjE,SAASlB,EAAKmB,GACV,GAAIX,EAAG,MAAM,IAAIY,UAAU,mCAC3B,MAAOT,MACH,GAAIH,EAAI,EAAGC,IAAMvH,EAAY,EAARiI,EAAG,GAASV,EAAE,UAAYU,EAAG,GAAKV,EAAE,YAAcvH,EAAIuH,EAAE,YAAcvH,EAAES,KAAK8G,GAAI,GAAKA,EAAEnE,SAAWpD,EAAIA,EAAES,KAAK8G,EAAGU,EAAG,KAAKf,KAAM,OAAOlH,EAE3J,OADIuH,EAAI,EAAGvH,IAAGiI,EAAK,CAAS,EAARA,EAAG,GAAQjI,EAAE+D,QACzBkE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjI,EAAIiI,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE3D,MAAOkE,EAAG,GAAIf,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIM,MAAOV,EAAEG,KAAKO,MAAO,SACxC,QACI,GAAMnI,EAAIyH,EAAEG,OAAM5H,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAV4H,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcjI,GAAMiI,EAAG,GAAKjI,EAAE,IAAMiI,EAAG,GAAKjI,EAAE,IAAM,CAAEyH,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIA,EAAIiI,EAAI,KAAO,CACpE,GAAIjI,GAAKyH,EAAEC,MAAQ1H,EAAE,GAAI,CAAEyH,EAAEC,MAAQ1H,EAAE,GAAIyH,EAAEI,IAAIO,KAAKH,GAAK,KAAO,CAC9DjI,EAAE,IAAIyH,EAAEI,IAAIM,MAChBV,EAAEG,KAAKO,MAAO,SAEtBF,EAAKZ,EAAK5G,KAAK4F,EAASoB,EAC5B,CAAE,MAAOV,GAAKkB,EAAK,CAAC,EAAGlB,GAAIQ,EAAI,CAAG,CAAE,QAAUD,EAAItH,EAAI,CAAG,CACzD,GAAY,EAARiI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElE,MAAOkE,EAAG,GAAKA,EAAG,QAAK,EAAQf,MAAM,EAC9E,CACJ,EACI,GAAkC,SAAUgH,EAAG/N,GAC/C,IAAIgO,EAAsB,oBAAXjJ,QAAyBgJ,EAAEhJ,OAAO6C,UACjD,IAAKoG,EAAG,OAAOD,EACf,IAAmBE,EAAYrH,EAA3B7G,EAAIiO,EAAE1N,KAAKyN,GAAOG,EAAK,GAC3B,IACI,YAAc,IAANlO,GAAgBA,KAAM,MAAQiO,EAAIlO,EAAEkD,QAAQ8D,KAAMmH,EAAGjG,KAAKgG,EAAErK,MACxE,CACA,MAAO2H,GAAS3E,EAAI,CAAE2E,MAAOA,EAAS,CACtC,QACI,IACQ0C,IAAMA,EAAElH,OAASiH,EAAIjO,EAAE,YAAYiO,EAAE1N,KAAKP,EAClD,CACA,QAAU,GAAI6G,EAAG,MAAMA,EAAE2E,KAAO,CACpC,CACA,OAAO2C,CACX,EACI,GAAsC,WACtC,IAAK,IAAIA,EAAK,GAAInO,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAKmO,EAAKA,EAAGjB,OAAO,GAAOhN,UAAUF,KACpF,OAAOmO,CACX,EA0BI,GAAS,IAAI,IAAO,iBACpB8f,GAAwB,SACxBC,GAA6B,IAI7BC,GAA+B,WAK/B,SAASA,EAAcptB,GACnB,IAAI6B,EAAQnC,KACZA,KAAKI,QAAUE,GAAkB,CAAC,EAClCN,KAAK2tB,UAAW,IAAIC,EAAA,IAAgBC,aACpCxkB,EAAA,GAAIykB,OAAO,QAAQ,SAAU3kB,GACzB,IAAI6J,EAAU7J,EAAK6J,QACG,YAAlBA,EAAQ9J,OAAyC,WAAlB8J,EAAQ9J,OACvC/G,EAAMwrB,SAASI,WAAW7M,EAElC,IACA,GAAO3gB,MAAM,kBAAmBP,KAAKI,QACzC,CA2kBA,OAvkBAstB,EAAc9tB,UAAUa,YAAc,WAClC,OAAOitB,EAAcM,QACzB,EAIAN,EAAc9tB,UAAUY,gBAAkB,WACtC,OAAOktB,EAAcO,aACzB,EAMAP,EAAc9tB,UAAUS,UAAY,SAAUC,GAE1C,GADA,GAAOC,MAAM,oBAAqBD,IAC7BA,EACD,OAAON,KAAKI,QAChB,IAAI8tB,EAAgBC,EAAA,GAAOC,qBAAqB9tB,GAKhD,OAJAN,KAAKI,QAAUjB,OAAOC,OAAO,CAAC,EAAGY,KAAKI,QAAS8tB,EAAcG,SACxDruB,KAAKI,QAAQ0pB,QACd,GAAOvpB,MAAM,0BAEVP,KAAKI,OAChB,EACAstB,EAAc9tB,UAAU0uB,qBAAuB,SAAUC,EAAcjuB,GACnE,IAAIuoB,EAAW0F,EAAa1F,SAAU1J,EAAUoP,EAAapP,QAASW,EAAMyO,EAAazO,IAAKgJ,EAAOyF,EAAazF,KAAMrE,EAAS8J,EAAa9J,OAC1I+J,EAAmBluB,EAAOkuB,iBAAkBC,EAAmBnuB,EAAOmuB,iBAAkBC,EAAgBpuB,EAAOouB,cAAe7rB,EAAKvC,EAAOihB,MAAOA,OAAe,IAAP1e,GAAwBA,EACrL,KAAMimB,aAAgBzK,MAClB,MAAM,IAAItQ,MAAM+P,EAAoB6Q,cAExCxP,EAAQ6I,GAAGjH,EAAWoK,iBAAiB,SAAUjiB,GACzCslB,IACgC,oBAArBA,EACPA,EAAiBtlB,GAGjB,GAAOsB,KAAK,uDACDgkB,GAGvB,IACArP,EAAQ6I,GAAGjH,EAAW6K,iBAAiB,SAAU1iB,GACzCulB,IACgC,oBAArBA,EACPA,EAAiBvlB,GAGjB,GAAOsB,KAAK,uDACDikB,GAGvB,IACAtP,EAAQ6I,GAAGjH,EAAW4I,OAAO,SAAU5Y,GAC/B2d,IAC6B,oBAAlBA,EACPA,EAAc3d,GAGd,GAAOvG,KAAK,oDAAsDkkB,GAG9E,IAGA,IAAI1F,EAAgB3P,EAAA,GAAY1Y,MAAM6F,MAAK,SAAU8S,GACjD,IAAIW,EAAOZ,EAAA,GAAYa,MAAMZ,GAC7B,OAAOwI,EAAU,GAAS,GAAS,CAAC,EAAGxhB,GAAS,CAAEgZ,YAAaW,IACnE,IACI2U,EAAO,IAAIhG,GAAgB,CAC3BC,SAAUA,EACVC,KAAMA,EACN3J,QAASA,EACT4C,MAAOzhB,EAAOyhB,MACdgH,QAAS/oB,KAAK2tB,SACdlJ,OAAQA,EACRuE,cAAeA,IAKnB,OAHA1H,EAAqBC,EAAO,SAAU,CAAE1H,OAAQ,MAAOvT,OAAQ,WAAa,KAAM,wCAA0CwZ,GAE5H8O,EAAK1B,SACE0B,CACX,EAWAlB,EAAc9tB,UAAUivB,KAAO,SAAUC,EAAKC,EAAMzuB,GAChD,OAAO,GAAUN,UAAM,OAAQ,GAAQ,WACnC,IAAI+Y,EAAe0B,EAAKuU,EAAKlF,EAAQmF,EAAcC,EAAS3N,EAAO4N,EAAsBlI,EAAsBC,EAAgBC,EAAmBiI,EAAavsB,EAAIwsB,EAAUC,EAAeC,EAAQjkB,EAAIkkB,EAAWC,EAASC,EAAWC,EAAYC,EAAaC,EAAcpL,EAAQqL,EAAInM,EAC1R,OAAO,GAAY3jB,MAAM,SAAUqN,GAC/B,OAAQA,EAAGtG,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKoZ,sBAClC,KAAK,EAED,GADAL,EAAgB1L,EAAGrG,QACd+R,IAAkB/Y,KAAK+vB,mBAAmB/vB,KAAKI,SAChD,MAAM,IAAI2N,MAAM+P,EAAoBkS,gBAMxC,GAJAvV,EAAMtb,OAAOC,OAAO,CAAC,EAAGY,KAAKI,QAASE,GACtC0uB,EAAMvU,EAAIuU,IAAKlF,EAASrP,EAAIqP,OAAQmF,EAAexU,EAAIwU,aAAcC,EAAUzU,EAAIyU,QAAS3N,EAAQ9G,EAAI8G,MAAO4N,EAAuB1U,EAAI0U,qBAAsBlI,EAAuBxM,EAAIwM,qBAAsBC,EAAiBzM,EAAIyM,eAAgBC,EAAoB1M,EAAI0M,kBAAmBiI,EAAc3U,EAAI2U,YACnTvsB,EAAKisB,EAAI/M,MAAOsN,OAAkB,IAAPxsB,EAAgB2qB,GAAwB3qB,EAAIysB,EAAgBR,EAAI7M,WAAYsN,EAAST,EAAIhP,IACpHxU,EAAKyjB,EAAKhN,MAAOyN,OAAmB,IAAPlkB,EAAgBkiB,GAAwBliB,EAAImkB,EAAUV,EAAKjP,KACnFyP,GAA4B,kBAAXA,EAClB,MAAM,IAAIxhB,MAAM+P,EAAoBmS,YAExC,IAAKR,GAA8B,kBAAZA,EACnB,MAAM,IAAI1hB,MAAM+P,EAAoBoS,aAEvB,cAAbb,GAA4BC,GAC5B,GAAO9kB,KAAK,4FAA+F6kB,GAE/GK,EAAY1vB,KAAKmwB,QAAQ,GAAS,GAAS,GAAS,CAAC,EAAG1V,GAAM,CAAEsH,MAAOsN,IAAcC,GAAiB,CAAErN,WAAYqN,KACpHK,EAAa3vB,KAAKmwB,QAAQ,GAAS,GAAS,CAAC,EAAG1V,GAAM,CAAEsH,MAAOyN,KAC/DI,EAAc9F,EAAS,IAAM4F,EAAYH,EACzCM,EAAe,GAAKF,EAAaF,EACjC,GAAOlvB,MAAM,WAAaqvB,EAAc,OAASC,GACjDpL,EAAS,CACLuC,OAAQ8C,EACRsG,WAAYR,EACZ7M,IAAK8M,EAELQ,kBAAmB,QAEnBpB,IACAxK,EAAO6L,aAAerB,GACtBC,IACAzK,EAAO8L,QAAUrB,GACjBC,IACA1K,EAAO+L,qBAAuBrB,GAE9BlI,IACAxC,EAAOwC,qBAAuBA,GAE9BC,IACAzC,EAAOyC,eAAiBA,GAExBC,IACA1C,EAAO0C,kBAAoBA,GAE3BiI,IACA3K,EAAO2K,YAAcA,GAErBJ,IACAvK,EAAOgM,IAAMzB,GACjBc,EAAK9vB,KAAKilB,mBAAmBxK,GAC7BpN,EAAGtG,MAAQ,EACf,KAAK,EAED,OADAsG,EAAGpG,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaqoB,EAAGljB,KAAK,IAAI8jB,EAAA,EAAkBjM,KACvD,KAAK,EAMD,OALApX,EAAGrG,OACHsa,EAAqBC,EAAO,OAAQ,CAChC1H,OAAQ,OACRvT,OAAQ,WACT,KAAM,qBAAuBipB,EAAS,OAASE,GAC3C,CAAC,EAAc,CACd3P,IAAK2P,IAEjB,KAAK,EAMD,MALA9L,EAAUtW,EAAGrG,OACbsa,EAAqBC,EAAO,OAAQ,CAChC1H,OAAQ,OACRvT,OAAQ,UACT,KAAM,oBAAsBipB,EAAS,OAASE,GAC3C9L,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACA+J,EAAc9tB,UAAUe,IAAM,SAAUmf,EAAKxf,GACzC,OAAO,GAAUN,UAAM,OAAQ,GAAQ,WACnC,IAAI+Y,EAAe0B,EAAKqP,EAAQ6G,EAAU1B,EAAc2B,EAAoBC,EAAiBC,EAAiBC,EAAa7B,EAAS3N,EAAO0F,EAAsBC,EAAgBC,EAAmBqH,EAAkB5L,EAAQoO,EAAW7R,EAAS2Q,EAAIrL,EAAQwM,EAAkB1S,EAAUoI,EAASuK,EAAQjY,EAAS7N,EAAKvI,EAAIkkB,EAC7T,OAAO,GAAY/mB,MAAM,SAAUsL,GAC/B,OAAQA,EAAGvE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKoZ,sBAClC,KAAK,EAED,GADAL,EAAgBzN,EAAGtE,QACd+R,IAAkB/Y,KAAK+vB,mBAAmB/vB,KAAKI,SAChD,MAAM,IAAI2N,MAAM+P,EAAoBkS,gBAiCxC,GA/BAvV,EAAMtb,OAAOC,OAAO,CAAC,EAAGY,KAAKI,QAASE,GACtCwpB,EAASrP,EAAIqP,OAAQ6G,EAAWlW,EAAIkW,SAAU1B,EAAexU,EAAIwU,aAAc2B,EAAqBnW,EAAImW,mBAAoBC,EAAkBpW,EAAIoW,gBAAiBC,EAAkBrW,EAAIqW,gBAAiBC,EAActW,EAAIsW,YAAa7B,EAAUzU,EAAIyU,QAAS3N,EAAQ9G,EAAI8G,MAAO0F,EAAuBxM,EAAIwM,qBAAsBC,EAAiBzM,EAAIyM,eAAgBC,EAAoB1M,EAAI0M,kBAAmBqH,EAAmB/T,EAAI+T,iBAC3a5L,EAAS5iB,KAAKmwB,QAAQ1V,GACtBuW,EAAYpO,EAAS9C,EACrBX,EAAU,IAAIoH,GAAOC,aACrBsJ,EAAK9vB,KAAKilB,mBAAmBxK,EAAK0E,GAClC,GAAO5e,MAAM,OAASuf,EAAM,SAAWkR,GACvCvM,EAAS,CACLuC,OAAQ8C,EACR/G,IAAKiO,GAGL/B,IACAxK,EAAO0M,qBAAuBlC,GAC9B2B,IACAnM,EAAO2M,2BAA6BR,GACpCC,IACApM,EAAO4M,wBAA0BR,GACjCC,IACArM,EAAO6M,wBAA0BR,GACjCC,IACAtM,EAAO8M,oBAAsBR,GAC7B9J,IACAxC,EAAOwC,qBAAuBA,GAE9BC,IACAzC,EAAOyC,eAAiBA,GAExBC,IACA1C,EAAO0C,kBAAoBA,IAEZ,IAAbwJ,EAAoB,MAAO,CAAC,EAAa,GAC/CM,EAAmB,IAAIO,EAAA,EAAiB/M,GACxCnZ,EAAGvE,MAAQ,EACf,KAAK,EAaD,OAZAuE,EAAGrE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IAClB+mB,IACgC,oBAArBA,EACPrP,EAAQ6I,GAAG7J,GAA8B,SAAU8J,GAC/CuG,EAAiBvG,EACrB,IAGA,GAAOzd,KAAK,uDACDgkB,IAGZ,CAAC,EAAasB,EAAGljB,KAAKqkB,IACjC,KAAK,EAMD,OALA1S,EAAWjT,EAAGtE,OACdmY,EAAQ4I,mBAAmB5J,GAC3BmD,EAAqBC,EAAO,WAAY,CAAE1H,OAAQ,MAAOvT,OAAQ,WAAa,CAC1EmrB,SAAUC,OAAOnT,EAASgH,KAAK,SAAWhH,EAASgH,KAAK,YACzD,wBAA0BzF,GACtB,CAAC,EAAcvB,GAC1B,KAAK,EAMD,MALAoI,EAAUrb,EAAGtE,OACbsa,EAAqBC,EAAO,WAAY,CACpC1H,OAAQ,MACRvT,OAAQ,UACT,KAAM,wBAA0BqgB,EAAQvd,SACrCud,EACV,KAAK,EAGD,OAFArb,EAAGrE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBypB,EAAS,IAAI,IAAmB,GAAS,CAAC,EAAGpB,EAAGxvB,SACzC,CAAC,GAAa,OAAcwvB,EAAI,IAAI0B,EAAA,EAAiB/M,KAChE,KAAK,EAGD,OAFAxL,EAAU3N,EAAGtE,OACbnE,EAAK,IACE,CAAC,EAAaquB,EAAOS,QAAQ1Y,EAAS,CACrC2Y,UAAW1C,GAAWzB,MAElC,KAAK,EAGD,OAFAriB,EAAMvI,EAAG9C,WAAM,EAAQ,CAACuL,EAAGtE,SAC3Bsa,EAAqBC,EAAO,eAAgB,CAAE1H,OAAQ,MAAOvT,OAAQ,WAAa,KAAM,eAAiB8E,GAClG,CAAC,EAAcA,GAC1B,KAAK,EAID,MAHA2b,EAAUzb,EAAGtE,OACb,GAAOwD,KAAK,uBAAwBuc,GACpCzF,EAAqBC,EAAO,eAAgB,CAAE1H,OAAQ,MAAOvT,OAAQ,UAAY,KAAM,kCAAoCwZ,GACrHiH,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EASA2G,EAAc9tB,UAAUiyB,IAAM,SAAU/R,EAAKgS,EAAQxxB,GACjD,IAAIma,EAAMtb,OAAOC,OAAO,CAAC,EAAGY,KAAKI,QAASE,GACtCwpB,EAASrP,EAAIqP,OAAQvI,EAAQ9G,EAAI8G,MAAOiN,EAAmB/T,EAAI+T,iBAAkBzM,EAAQtH,EAAIsH,MAAOgQ,EAAYtX,EAAIsX,UACpHhB,EAActW,EAAIsW,YAAaH,EAAqBnW,EAAImW,mBAAoBC,EAAkBpW,EAAIoW,gBAAiB5B,EAAexU,EAAIwU,aAAcC,EAAUzU,EAAIyU,QAAS8C,EAAWvX,EAAIuX,SAAUC,EAAUxX,EAAIwX,QAASjD,EAAMvU,EAAIuU,IACrOG,EAAuB1U,EAAI0U,qBAAsBlI,EAAuBxM,EAAIwM,qBAAsBC,EAAiBzM,EAAIyM,eAAgBC,EAAoB1M,EAAI0M,kBAAmBiI,EAAc3U,EAAI2U,YACpM9b,EAAOyd,GAA4B,sBACnCtM,EAAS,CACTuC,OAAQ8C,EACR/G,IAAKjD,EACLyF,KAAMuM,EACNI,YAAa5e,GAEb2b,IACAxK,EAAO6L,aAAerB,GAEtB2B,IACAnM,EAAO0N,mBAAqBvB,GAE5BC,IACApM,EAAO2N,gBAAkBvB,GAEzB3B,IACAzK,EAAO8L,QAAUrB,GAEjB8C,IACAvN,EAAO4N,SAAWL,GAElBC,IACAxN,EAAO6N,QAAUL,GAEjB9C,IACA1K,EAAO+L,qBAAuBrB,GAE9BlI,IACAxC,EAAOwC,qBAAuBA,GAE9BC,IACAzC,EAAOyC,eAAiBA,GAExBC,IACA1C,EAAO0C,kBAAoBA,GAE3BiI,IACA3K,EAAO2K,YAAcA,GAEzB,IAAIjQ,EAAU,IAAIoH,GAAOC,aACrB+L,EAAW,IAAI/N,GAA2BC,EAAQhK,EAAK0E,GAI3D,GAHI6P,IACAvK,EAAOgM,IAAMzB,IAEC,IAAd+C,EAAoB,CACpB,IAAIlJ,EAAW7oB,KAAKilB,mBAAmBxK,GAGvCoO,EAAStE,gBAAgBrX,IAAIwV,EAAuBjI,EAAKqF,GAAM2D,IAC/D,IAAI8K,EAAe,CACfzE,OAAQA,EACRhK,IAAKA,EACL+I,SAAUA,EACVC,KAAMgJ,EACN3S,QAASA,EACTqT,YAAazQ,EACb0C,OAAQA,GAGZ,OAAOzkB,KAAKsuB,qBAAqBC,EAAcjuB,EACnD,CACA,IAYI,OAXIkuB,IACgC,oBAArBA,EACPrP,EAAQ6I,GAAG9J,GAA4B,SAAU+J,GAC7CuG,EAAiBvG,EACrB,IAGA,GAAOzd,KAAK,uDACDgkB,IAGZ+D,EAASrN,SAAS1e,MAAK,SAAU+X,GAGpC,OAFA,GAAOhe,MAAM,gBAAiBge,GAC9B+C,EAAqBC,EAAO,SAAU,CAAE1H,OAAQ,MAAOvT,OAAQ,WAAa,KAAM,sBAAwBwZ,GACnG,CAAEA,IAAKA,EAClB,GACJ,CACA,MAAO/U,GAGH,MAFA,GAAOP,KAAK,kBAAmBO,GAC/BuW,EAAqBC,EAAO,SAAU,CAAE1H,OAAQ,MAAOvT,OAAQ,UAAY,KAAM,mBAAqBwZ,GAChG/U,CACV,CACJ,EAOA2iB,EAAc9tB,UAAUmJ,OAAS,SAAU+W,EAAKxf,GAC5C,OAAO,GAAUN,UAAM,OAAQ,GAAQ,WACnC,IAAI+Y,EAAe0B,EAAKqP,EAAQvI,EAAOqB,EAAQoO,EAAWlB,EAAIrL,EAAQgO,EAAqBlU,EAAUkJ,EACrG,OAAO,GAAYznB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKoZ,sBAClC,KAAK,EAED,GADAL,EAAgBlW,EAAGmE,QACd+R,IAAkB/Y,KAAK+vB,mBAAmB/vB,KAAKI,SAChD,MAAM,IAAI2N,MAAM+P,EAAoBkS,gBAExCvV,EAAMtb,OAAOC,OAAO,CAAC,EAAGY,KAAKI,QAASE,GACtCwpB,EAASrP,EAAIqP,OAAQvI,EAAQ9G,EAAI8G,MACjCqB,EAAS5iB,KAAKmwB,QAAQ1V,GACtBuW,EAAYpO,EAAS9C,EACrBgQ,EAAK9vB,KAAKilB,mBAAmBxK,GAC7B,GAAOla,MAAM,UAAYuf,EAAM,SAAWkR,GAC1CvM,EAAS,CACLuC,OAAQ8C,EACR/G,IAAKiO,GAETyB,EAAsB,IAAIC,EAAA,EAAoBjO,GAC9C5hB,EAAGkE,MAAQ,EACf,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaqoB,EAAGljB,KAAK6lB,IACjC,KAAK,EAGD,OAFAlU,EAAW1b,EAAGmE,OACdsa,EAAqBC,EAAO,SAAU,CAAE1H,OAAQ,SAAUvT,OAAQ,WAAa,KAAM,WAAawZ,EAAM,iBACjG,CAAC,EAAcvB,GAC1B,KAAK,EAGD,MAFAkJ,EAAU5kB,EAAGmE,OACbsa,EAAqBC,EAAO,SAAU,CAAE1H,OAAQ,SAAUvT,OAAQ,UAAY,KAAM,eAAiBwZ,EAAM,gBAAkB2H,GACvHA,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAiG,EAAc9tB,UAAU+yB,MAAQ,SAAUlO,EAAQhK,EAAKmI,GACnD,OAAO,GAAU5iB,UAAM,OAAQ,GAAQ,WACnC,IAAIsG,EAAQwpB,EAAI8C,EAAsBrU,EACtC,OAAO,GAAYve,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAOD,OANAT,EAAS,CACLusB,SAAU,GACVC,UAAW,IAEfhD,EAAK9vB,KAAKilB,mBAAmBxK,GAC7BmY,EAAuB,IAAI3I,EAAA,EAAqB,GAAS,CAAC,EAAGxF,IACtD,CAAC,EAAaqL,EAAGljB,KAAKgmB,IACjC,KAAK,EAaD,OAZArU,EAAW1b,EAAGmE,OACVuX,GAAYA,EAASyL,WACrB1jB,EAAOusB,SAAWtU,EAASyL,SAAS7mB,KAAI,SAAU4vB,GAC9C,MAAO,CACHjT,IAAKiT,EAAKhQ,IAAI7G,OAAO0G,EAAOljB,QAC5BurB,KAAM8H,EAAKxL,KACX2C,aAAc6I,EAAKC,aACnB9nB,KAAM6nB,EAAKtG,KAEnB,IACAnmB,EAAOwsB,UAAYvU,EAAS0U,uBAEzB,CAAC,EAAc3sB,GAElC,GACJ,GACJ,EAQAonB,EAAc9tB,UAAUszB,KAAO,SAAUzT,EAAMnf,GAC3C,OAAO,GAAUN,UAAM,OAAQ,GAAQ,WACnC,IAAI+Y,EAAe0B,EAAKqP,EAAQvI,EAAO4R,EAASvQ,EAAQwQ,EAAYF,EAAM7a,EAAOgb,EAAY5O,EAAQ6O,EACrG,OAAO,GAAYtzB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa/G,KAAKoZ,sBAClC,KAAK,EAED,GADAL,EAAgBlW,EAAGmE,QACd+R,IAAkB/Y,KAAK+vB,mBAAmB/vB,KAAKI,SAChD,MAAM,IAAI2N,MAAM+P,EAAoBkS,gBAExCvV,EAAMtb,OAAOC,OAAO,CAAC,EAAGY,KAAKI,QAASE,GACtCwpB,EAASrP,EAAIqP,OAAQvI,EAAQ9G,EAAI8G,MAAO4R,EAAU1Y,EAAI0Y,QACtDvQ,EAAS5iB,KAAKmwB,QAAQ1V,GACtB2Y,EAAaxQ,EAASnD,EACtB,GAAOlf,MAAM,QAAUkf,EAAO,SAAW2T,GACzCvwB,EAAGkE,MAAQ,EACf,KAAK,EAUD,GATAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,GAAI,CAAE,KACvByrB,EAAO,GACP7a,OAAQ,EACRgb,OAAa,EACb5O,EAAS,CACLuC,OAAQ8C,EACR9G,OAAQoQ,EACRG,QAAS,KAEK,QAAZJ,EAAoB,MAAO,CAAC,EAAa,GAC/CtwB,EAAGkE,MAAQ,EACf,KAAK,EAGD,OAFA0d,EAAO+O,kBAAoBnb,EAC3BoM,EAAO8O,QAAU,IACV,CAAC,EAAavzB,KAAK2yB,MAAMlO,EAAQhK,EAAKmI,IACjD,KAAK,EACDyQ,EAAaxwB,EAAGmE,OAChBksB,EAAKzrB,KAAK1H,MAAMmzB,EAAM,GAASG,EAAWR,WACtCQ,EAAWP,YACXza,EAAQgb,EAAWP,WACvBjwB,EAAGkE,MAAQ,EACf,KAAK,EACD,GAAIssB,EAAWP,UAAW,MAAO,CAAC,EAAa,GAC/CjwB,EAAGkE,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAID,OAFO0d,EAAO8O,QADdJ,EAAU,KAA2B,kBAAZA,EACDA,EACA,IACjB,CAAC,EAAanzB,KAAK2yB,MAAMlO,EAAQhK,EAAKmI,IACjD,KAAK,EACDyQ,EAAaxwB,EAAGmE,OAChBksB,EAAKzrB,KAAK1H,MAAMmzB,EAAM,GAASG,EAAWR,WACtCM,EAAU,KACV,GAAO3oB,KAAK,0FAChB3H,EAAGkE,MAAQ,EACf,KAAK,EAGD,OAFAua,EAAqBC,EAAO,OAAQ,CAAE1H,OAAQ,OAAQvT,OAAQ,WAAa,KAAM4sB,EAAKxzB,OAAS,uCAC/F,GAAOa,MAAM,OAAQ2yB,GACd,CAAC,EAAcA,GAC1B,KAAK,GAID,MAHAI,EAAUzwB,EAAGmE,OACb,GAAOwD,KAAK,aAAc8oB,GAC1BhS,EAAqBC,EAAO,OAAQ,CAAE1H,OAAQ,OAAQvT,OAAQ,UAAY,KAAM,yBAA2BgtB,EAAQlqB,SAC7GkqB,EACV,KAAK,GAAI,MAAO,CAAC,GAEzB,GACJ,GACJ,EACA5F,EAAc9tB,UAAUwZ,mBAAqB,WACzC,OAAO,GAAUpZ,UAAM,OAAQ,GAAQ,WACnC,IAAIsZ,EAAaW,EAAMwZ,EACvB,OAAO,GAAYzzB,MAAM,SAAU6C,GAC/B,OAAQA,EAAGkE,OACP,KAAK,EAED,OADAlE,EAAGoE,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa4R,EAAA,GAAY1Y,OACrC,KAAK,EAED,OADA2Y,EAAczW,EAAGmE,OACZsS,GAELW,EAAOZ,EAAA,GAAYa,MAAMZ,GACzB,GAAO/Y,MAAM,8BAA+B0Z,GAC5Cja,KAAKI,QAAQkZ,YAAcW,EACpB,CAAC,GAAc,IAJX,CAAC,GAAc,GAK9B,KAAK,EAGD,OAFAwZ,EAAU5wB,EAAGmE,OACb,GAAOwD,KAAK,2BAA4BipB,GACjC,CAAC,GAAc,GAC1B,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACA/F,EAAc9tB,UAAUmwB,mBAAqB,SAAUzvB,GACnD,MAAyB,kBAAXA,GAAuBA,EAAOT,eAAe,cAC/D,EACA6tB,EAAc9tB,UAAUuwB,QAAU,SAAU7vB,GACxC,IAAIgZ,EAAchZ,EAAOgZ,YAAayI,EAAQzhB,EAAOyhB,MACjDC,EAAe1hB,EAAO0hB,cAAgB,CAAC,EACvCC,EAAa3hB,EAAO2hB,YAAc3I,EAAY2I,WAC9CG,QAAwC/f,IAAzB2f,EAAaK,QAAwBL,EAAaK,QAAU,YAC3EJ,EACA,IACAK,QAA4CjgB,IAA3B2f,EAAaO,UAC5BP,EAAaO,UACb,cACFN,EACA,IACAO,OAAqCngB,IAAxB2f,EAAaS,OAAuBT,EAAaS,OAAS,UAC3E,OAAQV,GACJ,IAAK,UACD,OAAOK,EACX,IAAK,YACD,OAAOE,EACX,QACI,OAAOE,EAEnB,EAIAkL,EAAc9tB,UAAUqlB,mBAAqB,SAAU3kB,EAAQ6e,GAC3D,IAAIgF,EAAWP,GAAetjB,EAAQ6e,GAEtC,OADAgF,EAASI,gBAAgBrX,IAAIkW,GAA8Be,EAAS7jB,QAASkjB,IACtEW,CACX,EACAuJ,EAAcM,SAAW,UACzBN,EAAcO,cAAgB,QACvBP,CACX,CA5lBkC,GCtF9B,GAAsC,WAStC,OARA,GAAWvuB,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACO,GAASU,MAAMC,KAAMP,UAChC,EACI,GAAkC,SAAU8N,EAAG/N,GAC/C,IAAIgO,EAAsB,oBAAXjJ,QAAyBgJ,EAAEhJ,OAAO6C,UACjD,IAAKoG,EAAG,OAAOD,EACf,IAAmBE,EAAYrH,EAA3B7G,EAAIiO,EAAE1N,KAAKyN,GAAOG,EAAK,GAC3B,IACI,YAAc,IAANlO,GAAgBA,KAAM,MAAQiO,EAAIlO,EAAEkD,QAAQ8D,KAAMmH,EAAGjG,KAAKgG,EAAErK,MACxE,CACA,MAAO2H,GAAS3E,EAAI,CAAE2E,MAAOA,EAAS,CACtC,QACI,IACQ0C,IAAMA,EAAElH,OAASiH,EAAIjO,EAAE,YAAYiO,EAAE1N,KAAKP,EAClD,CACA,QAAU,GAAI6G,EAAG,MAAMA,EAAE2E,KAAO,CACpC,CACA,OAAO2C,CACX,EAKI,GAAS,IAAI,IAAO,gBACpBgmB,GAAmB,QAInBrF,GAAyB,WAKzB,SAASA,IACLruB,KAAKI,QAAU,CAAC,EAChBJ,KAAKqa,YAAc,GACnBra,KAAK2zB,sBAAwB,IAAIC,QACjC,GAAOrzB,MAAM,kBAAmBP,KAAKI,SACrCJ,KAAKW,IAAMX,KAAKW,IAAI0T,KAAKrU,MACzBA,KAAK6xB,IAAM7xB,KAAK6xB,IAAIxd,KAAKrU,MACzBA,KAAK+I,OAAS/I,KAAK+I,OAAOsL,KAAKrU,MAC/BA,KAAKkzB,KAAOlzB,KAAKkzB,KAAK7e,KAAKrU,KAC/B,CAkLA,OAjLAquB,EAAQzuB,UAAU4a,cAAgB,WAC9B,MAAO,SACX,EAKA6T,EAAQzuB,UAAUgb,aAAe,SAAUD,GACvC,GAAIA,GAAyC,YAA5BA,EAAUla,cAA6B,CACpDT,KAAKqa,YAAY5S,KAAKkT,GACtB,IAAIra,EAAS,CAAC,EAEd,OADAA,EAASqa,EAAUta,UAAUL,KAAKI,QAAQua,EAAUna,oBAC7CF,CACX,CACJ,EAKA+tB,EAAQzuB,UAAUi0B,aAAe,SAAU/Y,GACvC,IAAIH,EAAY3a,KAAKqa,YAAYrL,MAAK,SAAU2L,GAAa,OAAOA,EAAUna,oBAAsBsa,CAAc,IAClH,YAAkBzY,IAAdsY,GACA,GAAOpa,MAAM,oCAAqCua,GAC3C,MAGAH,CACf,EAKA0T,EAAQzuB,UAAUib,gBAAkB,SAAUC,GAC1C9a,KAAKqa,YAAcra,KAAKqa,YAAY/W,QAAO,SAAUqX,GAAa,OAAOA,EAAUna,oBAAsBsa,CAAc,GAE3H,EAMAuT,EAAQzuB,UAAUS,UAAY,SAAUC,GACpC,IAAI6B,EAAQnC,KAEZ,GADA,GAAOO,MAAM,sBACRD,EACD,OAAON,KAAKI,QAChB,IAAI8tB,EAAgBC,EAAA,GAAOC,qBAAqB9tB,GAC5CwzB,EAAwB30B,OAAO2J,KAAKolB,EAAcG,SAClD0F,EAAmB,CACnB,SACA,SACA,QACA,QACA,eACA,uBACA,uBACA,iBACA,oBACA,eAEAC,EAAuB,SAAUrV,GACjC,OAAOoV,EAAiBzkB,MAAK,SAAU8R,GAAK,OAAOA,IAAMzC,CAAG,GAChE,EACIsV,EAA2B,SAAUtV,GACrC,OAAOA,EAAE3P,MAAK,SAAU2P,GAAK,OAAOqV,EAAqBrV,EAAI,GACjE,EAyBA,OAxBImV,GACAG,EAAyBH,KACxB5F,EAAcG,QAAQqF,MACvBxF,EAAcG,QAAQqF,IAAoB,CAAC,GAE/Cv0B,OAAO+O,QAAQggB,EAAcG,SAASlrB,KAAI,SAAUN,GAChD,IAAIyI,EAAK,GAAOzI,EAAI,GAAIid,EAAMxU,EAAG,GAAIlI,EAAQkI,EAAG,GAC5CwU,GAAOkU,EAAqBlU,SAAkBzd,IAAVe,IACpC8qB,EAAcG,QAAQqF,IAAkB5T,GAAO1c,SACxC8qB,EAAcG,QAAQvO,GAErC,IAEA3gB,OAAO2J,KAAKolB,EAAcG,SAASxjB,SAAQ,SAAUiQ,GACE,kBAAxCoT,EAAcG,QAAQvT,KAC7B3Y,EAAM/B,QAAQ0a,GAAgB,GAAS,GAAS,CAAC,EAAG3Y,EAAM/B,QAAQ0a,IAAgBoT,EAAcG,QAAQvT,IAEhH,IACA9a,KAAKqa,YAAYxP,SAAQ,SAAU8P,GAC/BA,EAAUta,UAAU8B,EAAM/B,QAAQua,EAAUna,mBAChD,IACgC,IAA5BR,KAAKqa,YAAY3a,QACjBM,KAAK4a,aAAa,IAAI8S,IAEnB1tB,KAAKI,OAChB,EACAiuB,EAAQzuB,UAAUs0B,0BAA4B,WAC1C,OAAO,gBAAkBhI,QAC7B,EACAmC,EAAQzuB,UAAUu0B,6BAA+B,SAAUlb,EAASmG,GAChEpf,KAAK2zB,sBAAsB/qB,IAAIqQ,EAASmG,EAC5C,EACAiP,EAAQzuB,UAAUw0B,aAAe,SAAUhT,GACvC,MAAqB,qBAANA,GACW,oBAAfA,EAAE,UACc,oBAAhBA,EAAE,SACjB,EACAiN,EAAQzuB,UAAU0sB,OAAS,SAAUrT,EAAS7P,GAC1C,GAAI6P,aAAmB2P,GACnB,OAAO3P,EAAQkU,UAEnB,IAAI/N,EAAoBpf,KAAK2zB,sBAAsBhzB,IAAIsY,GACnDmG,EACAA,EAAkBkN,OAAOljB,GAGzB,GAAO7I,MAAM,+CAErB,EACA8tB,EAAQzuB,UAAUivB,KAAO,SAAUC,EAAKC,EAAMzuB,GAC1C,IAAI2J,GAAuB,OAAX3J,QAA8B,IAAXA,OAAoB,EAASA,EAAO2J,WAAaypB,GAChFW,EAAOr0B,KAAKqa,YAAYrL,MAAK,SAAU2L,GAAa,OAAOA,EAAUna,oBAAsByJ,CAAU,IACzG,QAAa5H,IAATgyB,EAEA,OADA,GAAO9zB,MAAM,oCAAqC0J,GAC3CjE,QAAQC,OAAO,+CAE1B,IAAImZ,EAAoBpf,KAAKk0B,4BAC7B,GAAyB,oBAAdG,EAAKxF,KACZ,OAAO7oB,QAAQC,OAAO,wCAA0CouB,EAAK7zB,mBAEzE,IAAI8zB,EAAkBD,EAAKxF,KAAKC,EAAKC,EAAM,GAAS,GAAS,CAAC,EAAGzuB,GAAS,CAAE8e,kBAAmBA,KAE/F,OADApf,KAAKm0B,6BAA6BG,EAAiBlV,GAC5CkV,CACX,EACAjG,EAAQzuB,UAAUe,IAAM,SAAUmf,EAAKxf,GACnC,IAAI2J,GAAuB,OAAX3J,QAA8B,IAAXA,OAAoB,EAASA,EAAO2J,WAAaypB,GAChFW,EAAOr0B,KAAKqa,YAAYrL,MAAK,SAAU2L,GAAa,OAAOA,EAAUna,oBAAsByJ,CAAU,IACzG,QAAa5H,IAATgyB,EAEA,OADA,GAAO9zB,MAAM,oCAAqC0J,GAC3CjE,QAAQC,OAAO,+CAE1B,IAAImZ,EAAoBpf,KAAKk0B,4BACzBI,EAAkBD,EAAK1zB,IAAImf,EAAK,GAAS,GAAS,CAAC,EAAGxf,GAAS,CAAE8e,kBAAmBA,KAExF,OADApf,KAAKm0B,6BAA6BG,EAAiBlV,GAC5CkV,CACX,EACAjG,EAAQzuB,UAAU20B,cAAgB,SAAUxpB,GACxC,OAAO,aAAeA,EAC1B,EACAsjB,EAAQzuB,UAAUiyB,IAAM,SAAU/R,EAAKgS,EAAQxxB,GAC3C,IAAI2J,GAAuB,OAAX3J,QAA8B,IAAXA,OAAoB,EAASA,EAAO2J,WAAaypB,GAChFW,EAAOr0B,KAAKqa,YAAYrL,MAAK,SAAU2L,GAAa,OAAOA,EAAUna,oBAAsByJ,CAAU,IACzG,QAAa5H,IAATgyB,EAEA,OADA,GAAO9zB,MAAM,oCAAqC0J,GAC3CjE,QAAQC,OAAO,+CAE1B,IAAImZ,EAAoBpf,KAAKk0B,4BACzB3V,EAAW8V,EAAKxC,IAAI/R,EAAKgS,EAAQ,GAAS,GAAS,CAAC,EAAGxxB,GAAS,CAAE8e,kBAAmBA,KAIzF,OAHKpf,KAAKo0B,aAAa7V,IACnBve,KAAKm0B,6BAA6B5V,EAAUa,GAEzCb,CACX,EACA8P,EAAQzuB,UAAUmJ,OAAS,SAAU+W,EAAKxf,GACtC,IAAI2J,GAAuB,OAAX3J,QAA8B,IAAXA,OAAoB,EAASA,EAAO2J,WAAaypB,GAChFW,EAAOr0B,KAAKqa,YAAYrL,MAAK,SAAU2L,GAAa,OAAOA,EAAUna,oBAAsByJ,CAAU,IACzG,YAAa5H,IAATgyB,GACA,GAAO9zB,MAAM,oCAAqC0J,GAC3CjE,QAAQC,OAAO,gDAEnBouB,EAAKtrB,OAAO+W,EAAKxf,EAC5B,EACA+tB,EAAQzuB,UAAUszB,KAAO,SAAUzT,EAAMnf,GACrC,IAAI2J,GAAuB,OAAX3J,QAA8B,IAAXA,OAAoB,EAASA,EAAO2J,WAAaypB,GAChFW,EAAOr0B,KAAKqa,YAAYrL,MAAK,SAAU2L,GAAa,OAAOA,EAAUna,oBAAsByJ,CAAU,IACzG,YAAa5H,IAATgyB,GACA,GAAO9zB,MAAM,oCAAqC0J,GAC3CjE,QAAQC,OAAO,gDAEnBouB,EAAKnB,KAAKzT,EAAMnf,EAC3B,EACO+tB,CACX,CAjM4B,G,WCpCxB,GAAsC,WAStC,OARA,GAAWlvB,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACAD,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KACzDN,EAAEM,GAAKL,EAAEK,IAEjB,OAAON,CACX,EACO,GAASU,MAAMC,KAAMP,UAChC,EAGI,GAAS,IAAI,IAAO,WACpB+0B,GAAY,KACZC,GAAc,WACd,GAAID,GACA,OAAOA,GAEX,GAAOj0B,MAAM,kCACbi0B,GAAY,IAAInG,GAChBmG,GAAUE,MAAQ,IAAIrG,GACtB,IAAIsG,EAAgBH,GAAUn0B,UAa9B,OAZAm0B,GAAUn0B,UAAY,SAAUF,GAC5B,GAAOI,MAAM,4BACb,IAAIq0B,EAAc,GAAS,CAAC,EAAGD,EAAc70B,KAAK00B,GAAWr0B,IAE7DhB,OAAO2J,KAAK8rB,GAAa/pB,SAAQ,SAAUiQ,GACE,kBAA9B8Z,EAAY9Z,KACnB8Z,EAAY9Z,GAAgB,GAAS,GAAS,CAAC,EAAG8Z,EAAY9Z,IAAgB,CAAEiH,MAAO,YAE/F,IACA,GAAOxhB,MAAM,kCACbi0B,GAAUE,MAAMr0B,UAAUu0B,EAC9B,EACOJ,EACX,EACW,GAAUC,KACrB9Y,GAAA,GAAQC,SAAS,G,oBClDhB,SAASvc,EAAEyH,GAAqDiV,EAAOC,QAAQlV,GAAgJ,CAA/N,CAAiO9G,GAAK,WAAY,OAAO,SAASX,GAAG,IAAIyH,EAAE,CAAC,EAAE,SAAStH,EAAE+N,GAAG,GAAGzG,EAAEyG,GAAG,OAAOzG,EAAEyG,GAAGyO,QAAQ,IAAI5V,EAAEU,EAAEyG,GAAG,CAAChO,EAAEgO,EAAEsnB,GAAE,EAAG7Y,QAAQ,CAAC,GAAG,OAAO3c,EAAEkO,GAAGzN,KAAKsG,EAAE4V,QAAQ5V,EAAEA,EAAE4V,QAAQxc,GAAG4G,EAAEyuB,GAAE,EAAGzuB,EAAE4V,OAAO,CAAC,OAAOxc,EAAEgO,EAAEnO,EAAEG,EAAE2O,EAAErH,EAAEtH,EAAEyF,EAAE,SAAS5F,EAAEyH,EAAEyG,GAAG/N,EAAE+N,EAAElO,EAAEyH,IAAI3H,OAAOuB,eAAerB,EAAEyH,EAAE,CAAClG,YAAW,EAAGD,IAAI4M,GAAG,EAAE/N,EAAEiO,EAAE,SAASpO,GAAG,oBAAoBkF,QAAQA,OAAOuwB,aAAa31B,OAAOuB,eAAerB,EAAEkF,OAAOuwB,YAAY,CAAC1xB,MAAM,WAAWjE,OAAOuB,eAAerB,EAAE,aAAa,CAAC+D,OAAM,GAAI,EAAE5D,EAAEH,EAAE,SAASA,EAAEyH,GAAG,GAAG,EAAEA,IAAIzH,EAAEG,EAAEH,IAAI,EAAEyH,EAAE,OAAOzH,EAAE,GAAG,EAAEyH,GAAG,iBAAiBzH,GAAGA,GAAGA,EAAE01B,WAAW,OAAO11B,EAAE,IAAIkO,EAAEpO,OAAOqG,OAAO,MAAM,GAAGhG,EAAEiO,EAAEF,GAAGpO,OAAOuB,eAAe6M,EAAE,UAAU,CAAC3M,YAAW,EAAGwC,MAAM/D,IAAI,EAAEyH,GAAG,iBAAiBzH,EAAE,IAAI,IAAI+G,KAAK/G,EAAEG,EAAEyF,EAAEsI,EAAEnH,EAAE,SAASU,GAAG,OAAOzH,EAAEyH,EAAE,EAAEuN,KAAK,KAAKjO,IAAI,OAAOmH,CAAC,EAAE/N,EAAEA,EAAE,SAASH,GAAG,IAAIyH,EAAEzH,GAAGA,EAAE01B,WAAW,WAAW,OAAO11B,EAAE21B,OAAO,EAAE,WAAW,OAAO31B,CAAC,EAAE,OAAOG,EAAEyF,EAAE6B,EAAE,IAAIA,GAAGA,CAAC,EAAEtH,EAAE+N,EAAE,SAASlO,EAAEyH,GAAG,OAAO3H,OAAOS,UAAUC,eAAeC,KAAKT,EAAEyH,EAAE,EAAEtH,EAAEG,EAAE,GAAGH,EAAEA,EAAEF,EAAE,EAAE,CAAn5B,CAAq5B,CAAC,SAASD,EAAEyH,EAAEtH,GAAG,aAAa,SAAS+N,EAAElO,GAAG,IAAI,IAAIG,KAAKH,EAAEyH,EAAEjH,eAAeL,KAAKsH,EAAEtH,GAAGH,EAAEG,GAAG,CAACL,OAAOuB,eAAeoG,EAAE,aAAa,CAAC1D,OAAM,IAAKmK,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,IAAI+N,EAAE/N,EAAE,KAAK+N,EAAE/N,EAAE,KAAK+N,EAAE/N,EAAE,KAAK+N,EAAE/N,EAAE,IAAI,EAAE,SAASH,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAAC2M,EAAE,oBAAoB,EAAE,SAAStpB,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACiZ,OAAO,yBAAyBC,aAAa,+BAA+BC,mBAAmB,qCAAqCC,iBAAiB,mCAAmCC,kBAAkB,oCAAoCC,qBAAqB,uCAAuCC,mBAAmB,qCAAqCC,kBAAkB,oCAAoCC,oBAAoB,sCAAsC,EAAE,SAASp2B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAAC0Z,cAAc,8BAA8BC,YAAY,4BAA4BC,UAAU,0BAA0BC,QAAQ,wBAAwB,EAAE,SAASx2B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAAC8Z,KAAK,qBAAqB,EAAE,SAASz2B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAAC8G,MAAM,uBAAuBiT,WAAW,4BAA4BhvB,MAAM,uBAAuBivB,MAAM,uBAAuB,EAAE,SAAS32B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACia,OAAO,sBAAsBC,SAAS,wBAAwBC,IAAI,mBAAmBC,QAAQ,uBAAuB,EAAE,SAAS/2B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACqa,kBAAkB,yCAAyCC,iBAAiB,wCAAwCC,qBAAqB,4CAA4C,EAAE,SAASl3B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACwa,UAAU,6BAA6BC,UAAU,6BAA6BC,cAAc,iCAAiCC,kBAAkB,qCAAqCC,YAAY,+BAA+BC,qBAAqB,wCAAwCC,cAAc,iCAAiCC,4BAA4B,+CAA+CC,8BAA8B,iDAAiD,EAAE,SAAS33B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACib,YAAY,mCAAmC,EAAE,SAAS53B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACkb,OAAO,yBAAyBC,cAAc,gCAAgC,EAAE,SAAS93B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACob,MAAM,uBAAuBC,WAAW,4BAA4B,EAAE,SAASh4B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACsb,WAAW,2BAA2B,EAAE,SAASj4B,EAAEyH,EAAEtH,GAAGH,EAAE2c,QAAQ,CAACub,uBAAuB,qCAAqCC,cAAc,4BAA4BC,eAAe,6BAA6BC,iBAAiB,+BAA+BC,YAAY,0BAA0BC,iBAAiB,+BAA+BC,WAAW,yBAAyBC,eAAe,6BAA6BC,eAAe,6BAA6BC,SAAS,uBAAuBC,UAAU,wBAAwBC,aAAa,2BAA2BC,aAAa,2BAA2BC,QAAQ,sBAAsBC,WAAW,yBAAyBC,gBAAgB,8BAA8B,GAAI,G","sources":["webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/types/PubSub.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/PubSubProvider.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/constants.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/utils/ReachabilityMonitor/index.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/utils/ConnectionStateMonitor.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/MqttOverWSProvider.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncProvider.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/lib-esm/PubSub.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/node_modules/uuid/index.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/bytesToUuid.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/rng-browser.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/node_modules/uuid/v1.js","webpack://smapac/./node_modules/@aws-amplify/pubsub/node_modules/uuid/v4.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/common/StorageErrorStrings.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/providers/axios-http-handler.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/common/StorageConstants.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/providers/AWSS3UploadTask.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/common/StorageUtils.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/common/S3ClientUtils.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/providers/AWSS3ProviderManagedUpload.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/providers/AWSS3Provider.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/Storage.js","webpack://smapac/./node_modules/@aws-amplify/storage/lib-esm/index.js","webpack://smapac/./node_modules/@aws-amplify/ui/dist/aws-amplify-ui.js"],"sourcesContent":["/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var CONTROL_MSG;\n(function (CONTROL_MSG) {\n CONTROL_MSG[\"CONNECTION_CLOSED\"] = \"Connection closed\";\n CONTROL_MSG[\"CONNECTION_FAILED\"] = \"Connection failed\";\n CONTROL_MSG[\"REALTIME_SUBSCRIPTION_INIT_ERROR\"] = \"AppSync Realtime subscription init error\";\n CONTROL_MSG[\"SUBSCRIPTION_ACK\"] = \"Subscription ack\";\n CONTROL_MSG[\"TIMEOUT_DISCONNECT\"] = \"Timeout disconnect\";\n})(CONTROL_MSG || (CONTROL_MSG = {}));\n/** @enum {string} */\nexport var ConnectionState;\n(function (ConnectionState) {\n /*\n * The connection is alive and healthy\n */\n ConnectionState[\"Connected\"] = \"Connected\";\n /*\n * The connection is alive, but the connection is offline\n */\n ConnectionState[\"ConnectedPendingNetwork\"] = \"ConnectedPendingNetwork\";\n /*\n * The connection has been disconnected while in use\n */\n ConnectionState[\"ConnectionDisrupted\"] = \"ConnectionDisrupted\";\n /*\n * The connection has been disconnected and the network is offline\n */\n ConnectionState[\"ConnectionDisruptedPendingNetwork\"] = \"ConnectionDisruptedPendingNetwork\";\n /*\n * The connection is in the process of connecting\n */\n ConnectionState[\"Connecting\"] = \"Connecting\";\n /*\n * The connection is not in use and is being disconnected\n */\n ConnectionState[\"ConnectedPendingDisconnect\"] = \"ConnectedPendingDisconnect\";\n /*\n * The connection is not in use and has been disconnected\n */\n ConnectionState[\"Disconnected\"] = \"Disconnected\";\n /*\n * The connection is alive, but a keep alive message has been missed\n */\n ConnectionState[\"ConnectedPendingKeepAlive\"] = \"ConnectedPendingKeepAlive\";\n})(ConnectionState || (ConnectionState = {}));\n//# sourceMappingURL=PubSub.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractPubSubProvider');\nvar AbstractPubSubProvider = /** @class */ (function () {\n function AbstractPubSubProvider(options) {\n if (options === void 0) { options = {}; }\n this._config = options;\n }\n AbstractPubSubProvider.prototype.configure = function (config) {\n if (config === void 0) { config = {}; }\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n AbstractPubSubProvider.prototype.getCategory = function () {\n return 'PubSub';\n };\n Object.defineProperty(AbstractPubSubProvider.prototype, \"options\", {\n get: function () {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractPubSubProvider;\n}());\nexport { AbstractPubSubProvider };\n//# sourceMappingURL=PubSubProvider.js.map","export var MAX_DELAY_MS = 5000;\nexport var NON_RETRYABLE_CODES = [400, 401, 403];\nexport var CONNECTION_STATE_CHANGE = 'ConnectionStateChange';\nexport var MESSAGE_TYPES;\n(function (MESSAGE_TYPES) {\n /**\n * Client -> Server message.\n * This message type is the first message after handshake and this will initialize AWS AppSync RealTime communication\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_INIT\"] = \"connection_init\";\n /**\n * Server -> Client message\n * This message type is in case there is an issue with AWS AppSync RealTime when establishing connection\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_ERROR\"] = \"connection_error\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_CONNECTION_INIT message\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_ACK\"] = \"connection_ack\";\n /**\n * Client -> Server message.\n * This message type is for register subscriptions with AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_START\"] = \"start\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_START message\n */\n MESSAGE_TYPES[\"GQL_START_ACK\"] = \"start_ack\";\n /**\n * Server -> Client message.\n * This message type is for subscription message from AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_DATA\"] = \"data\";\n /**\n * Server -> Client message.\n * This message type helps the client to know is still receiving messages from AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_KEEP_ALIVE\"] = \"ka\";\n /**\n * Client -> Server message.\n * This message type is for unregister subscriptions with AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_STOP\"] = \"stop\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_STOP message\n */\n MESSAGE_TYPES[\"GQL_COMPLETE\"] = \"complete\";\n /**\n * Server -> Client message.\n * This message type is for sending error messages from AWS AppSync RealTime to the client\n */\n MESSAGE_TYPES[\"GQL_ERROR\"] = \"error\";\n})(MESSAGE_TYPES || (MESSAGE_TYPES = {}));\nexport var SUBSCRIPTION_STATUS;\n(function (SUBSCRIPTION_STATUS) {\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"PENDING\"] = 0] = \"PENDING\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"CONNECTED\"] = 1] = \"CONNECTED\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"FAILED\"] = 2] = \"FAILED\";\n})(SUBSCRIPTION_STATUS || (SUBSCRIPTION_STATUS = {}));\nexport var SOCKET_STATUS;\n(function (SOCKET_STATUS) {\n SOCKET_STATUS[SOCKET_STATUS[\"CLOSED\"] = 0] = \"CLOSED\";\n SOCKET_STATUS[SOCKET_STATUS[\"READY\"] = 1] = \"READY\";\n SOCKET_STATUS[SOCKET_STATUS[\"CONNECTING\"] = 2] = \"CONNECTING\";\n})(SOCKET_STATUS || (SOCKET_STATUS = {}));\nexport var AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nexport var AWS_APPSYNC_REALTIME_HEADERS = {\n accept: 'application/json, text/javascript',\n 'content-encoding': 'amz-1.0',\n 'content-type': 'application/json; charset=UTF-8',\n};\n/**\n * Time in milleseconds to wait for GQL_CONNECTION_INIT message\n */\nexport var CONNECTION_INIT_TIMEOUT = 15000;\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\nexport var START_ACK_TIMEOUT = 15000;\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\nexport var DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\n/**\n * Default Time in milleseconds to alert for missed GQL_CONNECTION_KEEP_ALIVE message\n */\nexport var DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT = 65 * 1000;\n//# sourceMappingURL=constants.js.map","import { Reachability } from '@aws-amplify/core';\nexport var ReachabilityMonitor = function () { return new Reachability().networkMonitor(); };\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2017-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport Observable from 'zen-observable-ts';\nimport { ConnectionState } from '../types/PubSub';\nimport { ReachabilityMonitor } from './ReachabilityMonitor';\nexport var CONNECTION_CHANGE = {\n KEEP_ALIVE_MISSED: { keepAliveState: 'unhealthy' },\n KEEP_ALIVE: { keepAliveState: 'healthy' },\n CONNECTION_ESTABLISHED: { connectionState: 'connected' },\n CONNECTION_FAILED: {\n intendedConnectionState: 'disconnected',\n connectionState: 'disconnected',\n },\n CLOSING_CONNECTION: { intendedConnectionState: 'disconnected' },\n OPENING_CONNECTION: {\n intendedConnectionState: 'connected',\n connectionState: 'connecting',\n },\n CLOSED: { connectionState: 'disconnected' },\n ONLINE: { networkState: 'connected' },\n OFFLINE: { networkState: 'disconnected' },\n};\nvar ConnectionStateMonitor = /** @class */ (function () {\n function ConnectionStateMonitor() {\n var _this = this;\n this._networkMonitoringSubscription = undefined;\n this._linkedConnectionState = {\n networkState: 'connected',\n connectionState: 'disconnected',\n intendedConnectionState: 'disconnected',\n keepAliveState: 'healthy',\n };\n this._linkedConnectionStateObservable =\n new Observable(function (connectionStateObserver) {\n connectionStateObserver.next(_this._linkedConnectionState);\n _this._linkedConnectionStateObserver = connectionStateObserver;\n });\n }\n /**\n * Turn network state monitoring on if it isn't on already\n */\n ConnectionStateMonitor.prototype.enableNetworkMonitoring = function () {\n var _this = this;\n // Maintain the network state based on the reachability monitor\n if (this._networkMonitoringSubscription === undefined) {\n this._networkMonitoringSubscription = ReachabilityMonitor().subscribe(function (_a) {\n var online = _a.online;\n _this.record(online ? CONNECTION_CHANGE.ONLINE : CONNECTION_CHANGE.OFFLINE);\n });\n }\n };\n /**\n * Turn network state monitoring off if it isn't off already\n */\n ConnectionStateMonitor.prototype.disableNetworkMonitoring = function () {\n var _a;\n (_a = this._networkMonitoringSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._networkMonitoringSubscription = undefined;\n };\n Object.defineProperty(ConnectionStateMonitor.prototype, \"connectionStateObservable\", {\n /**\n * Get the observable that allows us to monitor the connection state\n *\n * @returns {Observable} - The observable that emits ConnectionState updates\n */\n get: function () {\n var _this = this;\n var previous;\n // The linked state aggregates state changes to any of the network, connection,\n // intendedConnection and keepAliveHealth. Some states will change these independent\n // states without changing the overall connection state.\n // After translating from linked states to ConnectionState, then remove any duplicates\n return this._linkedConnectionStateObservable\n .map(function (value) {\n return _this.connectionStatesTranslator(value);\n })\n .filter(function (current) {\n var toInclude = current !== previous;\n previous = current;\n return toInclude;\n });\n },\n enumerable: true,\n configurable: true\n });\n /*\n * Updates local connection state and emits the full state to the observer.\n */\n ConnectionStateMonitor.prototype.record = function (statusUpdates) {\n // Maintain the network monitor\n if (statusUpdates.intendedConnectionState === 'connected') {\n this.enableNetworkMonitoring();\n }\n else if (statusUpdates.intendedConnectionState === 'disconnected') {\n this.disableNetworkMonitoring();\n }\n // Maintain the socket state\n var newSocketStatus = __assign(__assign({}, this._linkedConnectionState), statusUpdates);\n this._linkedConnectionState = __assign({}, newSocketStatus);\n this._linkedConnectionStateObserver.next(this._linkedConnectionState);\n };\n /*\n * Translate the ConnectionState structure into a specific ConnectionState string literal union\n */\n ConnectionStateMonitor.prototype.connectionStatesTranslator = function (_a) {\n var connectionState = _a.connectionState, networkState = _a.networkState, intendedConnectionState = _a.intendedConnectionState, keepAliveState = _a.keepAliveState;\n if (connectionState === 'connected' && networkState === 'disconnected')\n return ConnectionState.ConnectedPendingNetwork;\n if (connectionState === 'connected' &&\n intendedConnectionState === 'disconnected')\n return ConnectionState.ConnectedPendingDisconnect;\n if (connectionState === 'disconnected' &&\n intendedConnectionState === 'connected' &&\n networkState === 'disconnected')\n return ConnectionState.ConnectionDisruptedPendingNetwork;\n if (connectionState === 'disconnected' &&\n intendedConnectionState === 'connected')\n return ConnectionState.ConnectionDisrupted;\n if (connectionState === 'connected' && keepAliveState === 'unhealthy')\n return ConnectionState.ConnectedPendingKeepAlive;\n // All remaining states directly correspond to the connection state\n if (connectionState === 'connecting')\n return ConnectionState.Connecting;\n if (connectionState === 'disconnected')\n return ConnectionState.Disconnected;\n return ConnectionState.Connected;\n };\n return ConnectionStateMonitor;\n}());\nexport { ConnectionStateMonitor };\n//# sourceMappingURL=ConnectionStateMonitor.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport * as Paho from 'paho-mqtt';\nimport { v4 as uuid } from 'uuid';\nimport Observable from 'zen-observable-ts';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { ConsoleLogger as Logger, Hub } from '@aws-amplify/core';\nimport { ConnectionStateMonitor, CONNECTION_CHANGE, } from '../utils/ConnectionStateMonitor';\nimport { AMPLIFY_SYMBOL, CONNECTION_STATE_CHANGE } from './constants';\nvar logger = new Logger('MqttOverWSProvider');\nexport function mqttTopicMatch(filter, topic) {\n var filterArray = filter.split('/');\n var length = filterArray.length;\n var topicArray = topic.split('/');\n for (var i = 0; i < length; ++i) {\n var left = filterArray[i];\n var right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nvar ClientsQueue = /** @class */ (function () {\n function ClientsQueue() {\n this.promises = new Map();\n }\n ClientsQueue.prototype.get = function (clientId, clientFactory) {\n return __awaiter(this, void 0, void 0, function () {\n var cachedPromise, newPromise;\n return __generator(this, function (_a) {\n cachedPromise = this.promises.get(clientId);\n if (cachedPromise) {\n return [2 /*return*/, cachedPromise];\n }\n if (clientFactory) {\n newPromise = clientFactory(clientId);\n this.promises.set(clientId, newPromise);\n return [2 /*return*/, newPromise];\n }\n return [2 /*return*/, undefined];\n });\n });\n };\n Object.defineProperty(ClientsQueue.prototype, \"allClients\", {\n get: function () {\n return Array.from(this.promises.keys());\n },\n enumerable: true,\n configurable: true\n });\n ClientsQueue.prototype.remove = function (clientId) {\n this.promises.delete(clientId);\n };\n return ClientsQueue;\n}());\nvar dispatchPubSubEvent = function (event, data, message) {\n Hub.dispatch('pubsub', { event: event, data: data, message: message }, 'PubSub', AMPLIFY_SYMBOL);\n};\nvar topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nvar MqttOverWSProvider = /** @class */ (function (_super) {\n __extends(MqttOverWSProvider, _super);\n function MqttOverWSProvider(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, __assign(__assign({}, options), { clientId: options.clientId || uuid() })) || this;\n _this._clientsQueue = new ClientsQueue();\n _this.connectionStateMonitor = new ConnectionStateMonitor();\n _this._topicObservers = new Map();\n _this._clientIdObservers = new Map();\n // Monitor the connection health state and pass changes along to Hub\n _this.connectionStateMonitor.connectionStateObservable.subscribe(function (connectionStateChange) {\n dispatchPubSubEvent(CONNECTION_STATE_CHANGE, {\n provider: _this,\n connectionState: connectionStateChange,\n }, \"Connection state is \" + connectionStateChange);\n });\n return _this;\n }\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientId\", {\n get: function () {\n return this.options.clientId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"endpoint\", {\n get: function () {\n return this.options.aws_pubsub_endpoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientsQueue\", {\n get: function () {\n return this._clientsQueue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"isSSLEnabled\", {\n get: function () {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n MqttOverWSProvider.prototype.getTopicForValue = function (value) {\n return typeof value === 'object' && value[topicSymbol];\n };\n MqttOverWSProvider.prototype.getProviderName = function () {\n return 'MqttOverWSProvider';\n };\n MqttOverWSProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify(__assign({ errorCode: errorCode }, args), null, 2));\n var topicsToDelete_1 = [];\n if (!clientId) {\n return;\n }\n var clientIdObservers = this._clientIdObservers.get(clientId);\n if (!clientIdObservers) {\n return;\n }\n clientIdObservers.forEach(function (observer) {\n observer.error('Disconnected, error code: ' + errorCode);\n // removing observers for disconnected clientId\n _this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n observerForTopic.delete(observer);\n if (observerForTopic.size === 0) {\n topicsToDelete_1.push(observerTopic);\n }\n });\n });\n // forgiving any trace of clientId\n this._clientIdObservers.delete(clientId);\n // Removing topics that are not listen by an observer\n topicsToDelete_1.forEach(function (topic) {\n _this._topicObservers.delete(topic);\n });\n }\n };\n MqttOverWSProvider.prototype.newClient = function (_a) {\n var url = _a.url, clientId = _a.clientId;\n return __awaiter(this, void 0, void 0, function () {\n var client;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('Creating new MQTT client', clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n client = new Paho.Client(url, clientId);\n // client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n client.onMessageArrived = function (_a) {\n var topic = _a.destinationName, msg = _a.payloadString;\n _this._onMessage(topic, msg);\n };\n client.onConnectionLost = function (_a) {\n var errorCode = _a.errorCode, args = __rest(_a, [\"errorCode\"]);\n _this.onDisconnect(__assign({ clientId: clientId, errorCode: errorCode }, args));\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n };\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n client.connect({\n useSSL: _this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: function () { return resolve(client); },\n onFailure: function () {\n reject();\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n },\n });\n })];\n case 1:\n _b.sent();\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n return [2 /*return*/, client];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.connect = function (clientId, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function (clientId) {\n return _this.newClient(__assign(__assign({}, options), { clientId: clientId }));\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId)];\n case 1:\n client = _a.sent();\n if (client && client.isConnected()) {\n client.disconnect();\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n this.clientsQueue.remove(clientId);\n return [2 /*return*/];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.publish = function (topics, msg) {\n return __awaiter(this, void 0, void 0, function () {\n var targetTopics, message, url, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n targetTopics = [].concat(topics);\n message = JSON.stringify(msg);\n return [4 /*yield*/, this.endpoint];\n case 1:\n url = _a.sent();\n return [4 /*yield*/, this.connect(this.clientId, { url: url })];\n case 2:\n client = _a.sent();\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(function (topic) { return client.send(topic, message); });\n return [2 /*return*/];\n }\n });\n });\n };\n MqttOverWSProvider.prototype._onMessage = function (topic, msg) {\n try {\n var matchedTopicObservers_1 = [];\n this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers_1.push(observerForTopic);\n }\n });\n var parsedMessage_1 = JSON.parse(msg);\n if (typeof parsedMessage_1 === 'object') {\n parsedMessage_1[topicSymbol] = topic;\n }\n matchedTopicObservers_1.forEach(function (observersForTopic) {\n observersForTopic.forEach(function (observer) { return observer.next(parsedMessage_1); });\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n };\n MqttOverWSProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n return new Observable(function (observer) {\n targetTopics.forEach(function (topic) {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n var observersForTopic = _this._topicObservers.get(topic);\n if (!observersForTopic) {\n observersForTopic = new Set();\n _this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n // @ts-ignore\n var client;\n var _a = options.clientId, clientId = _a === void 0 ? _this.clientId : _a;\n // this._clientIdObservers is used to close observers when client gets disconnected\n var observersForClientId = _this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n observersForClientId.add(observer);\n _this._clientIdObservers.set(clientId, observersForClientId);\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, url, _b, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.url;\n if (!(_a === void 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.endpoint];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = _a;\n _c.label = 3;\n case 3:\n url = _b;\n _c.label = 4;\n case 4:\n _c.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.connect(clientId, { url: url })];\n case 5:\n client = _c.sent();\n targetTopics.forEach(function (topic) {\n client.subscribe(topic);\n });\n return [3 /*break*/, 7];\n case 6:\n e_1 = _c.sent();\n observer.error(e_1);\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n }); })();\n return function () {\n var _a, _b;\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n if (client) {\n (_a = _this._clientIdObservers.get(clientId)) === null || _a === void 0 ? void 0 : _a.delete(observer);\n // No more observers per client => client not needed anymore\n if (((_b = _this._clientIdObservers.get(clientId)) === null || _b === void 0 ? void 0 : _b.size) === 0) {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n _this.disconnect(clientId);\n _this._clientIdObservers.delete(clientId);\n }\n targetTopics.forEach(function (topic) {\n var observersForTopic = _this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.delete(observer);\n // if no observers exists for the topic, topic should be removed\n if (observersForTopic.size === 0) {\n _this._topicObservers.delete(topic);\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n return null;\n };\n });\n };\n return MqttOverWSProvider;\n}(AbstractPubSubProvider));\nexport { MqttOverWSProvider };\n//# sourceMappingURL=MqttOverWSProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport Observable from 'zen-observable-ts';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { MqttOverWSProvider } from './MqttOverWSProvider';\nvar logger = new Logger('AWSAppSyncProvider');\n/**\n * @deprecated Unused, all usecases have migrated to AWSAppSyncRealtimeProvider\n */\nvar AWSAppSyncProvider = /** @class */ (function (_super) {\n __extends(AWSAppSyncProvider, _super);\n function AWSAppSyncProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._topicClient = new Map();\n _this._topicAlias = new Map();\n return _this;\n }\n Object.defineProperty(AWSAppSyncProvider.prototype, \"endpoint\", {\n get: function () {\n throw new Error('Not supported');\n },\n enumerable: true,\n configurable: true\n });\n AWSAppSyncProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncProvider';\n };\n AWSAppSyncProvider.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n AWSAppSyncProvider.prototype._cleanUp = function (clientId) {\n var _this = this;\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var _b = __read(_a, 2), c = _b[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var _b = __read(_a, 1), t = _b[0];\n return t;\n });\n topicsForClient.forEach(function (t) { return _this._cleanUpForTopic(t); });\n };\n AWSAppSyncProvider.prototype._cleanUpForTopic = function (topic) {\n this._topicClient.delete(topic);\n this._topicAlias.delete(topic);\n };\n AWSAppSyncProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var _b = __read(_a, 2), c = _b[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var _b = __read(_a, 1), t = _b[0];\n return t;\n });\n topicsForClient.forEach(function (topic) {\n if (_this._topicObservers.has(topic)) {\n _this._topicObservers.get(topic).forEach(function (obs) {\n if (!obs.closed) {\n obs.error(args);\n }\n });\n _this._topicObservers.delete(topic);\n }\n });\n this._cleanUp(clientId);\n }\n };\n AWSAppSyncProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function () { return null; })];\n case 1:\n client = _a.sent();\n return [4 /*yield*/, _super.prototype.disconnect.call(this, clientId)];\n case 2:\n _a.sent();\n this._cleanUp(clientId);\n return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var result = new Observable(function (observer) {\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, mqttConnections, newSubscriptions, newAliases, map;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // Add these topics to map\n targetTopics.forEach(function (t) {\n if (!_this._topicObservers.has(t)) {\n _this._topicObservers.set(t, new Set());\n }\n _this._topicObservers.get(t).add(observer);\n });\n _a = options.mqttConnections, mqttConnections = _a === void 0 ? [] : _a, newSubscriptions = options.newSubscriptions;\n newAliases = Object.entries(newSubscriptions).map(function (_a) {\n var _b = __read(_a, 2), alias = _b[0], v = _b[1];\n return [v.topic, alias];\n });\n // Merge new aliases with old ones\n this._topicAlias = new Map(__spread(Array.from(this._topicAlias.entries()), newAliases));\n map = Object.entries(targetTopics.reduce(function (acc, elem) {\n var connectionInfoForTopic = mqttConnections.find(function (c) { return c.topics.indexOf(elem) > -1; });\n if (connectionInfoForTopic) {\n var clientId = connectionInfoForTopic.client, url = connectionInfoForTopic.url;\n if (!acc[clientId]) {\n acc[clientId] = {\n url: url,\n topics: new Set(),\n };\n }\n acc[clientId].topics.add(elem);\n }\n return acc;\n }, {}));\n // reconnect everything we have in the map\n return [4 /*yield*/, Promise.all(map.map(function (_a) {\n var _b = __read(_a, 2), clientId = _b[0], _c = _b[1], url = _c.url, topics = _c.topics;\n return __awaiter(_this, void 0, void 0, function () {\n var client, err_1;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n client = null;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.connect(clientId, {\n clientId: clientId,\n url: url,\n })];\n case 2:\n client = _d.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _d.sent();\n observer.error({ message: 'Failed to connect', error: err_1 });\n observer.complete();\n return [2 /*return*/, undefined];\n case 4:\n // subscribe to all topics for this client\n // store topic-client mapping\n topics.forEach(function (topic) {\n if (client.isConnected()) {\n client.subscribe(topic);\n _this._topicClient.set(topic, client);\n }\n });\n return [2 /*return*/, client];\n }\n });\n });\n }))];\n case 1:\n // reconnect everything we have in the map\n _b.sent();\n return [2 /*return*/];\n }\n });\n }); })();\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n targetTopics.forEach(function (t) {\n var client = _this._topicClient.get(t);\n if (client && client.isConnected()) {\n client.unsubscribe(t);\n _this._topicClient.delete(t);\n if (!Array.from(_this._topicClient.values()).some(function (c) { return c === client; })) {\n _this.disconnect(client.clientId);\n }\n }\n _this._topicObservers.delete(t);\n });\n };\n });\n return Observable.from(result).map(function (value) {\n var topic = _this.getTopicForValue(value);\n var alias = _this._topicAlias.get(topic);\n value.data = Object.entries(value.data).reduce(function (obj, _a) {\n var _b = __read(_a, 2), origKey = _b[0], val = _b[1];\n return ((obj[(alias || origKey)] = val), obj);\n }, {});\n return value;\n });\n };\n return AWSAppSyncProvider;\n}(MqttOverWSProvider));\nexport { AWSAppSyncProvider };\n//# sourceMappingURL=AWSAppSyncProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/*\n * Copyright 2017-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport Observable from 'zen-observable-ts';\nimport { GraphQLError } from 'graphql';\nimport * as url from 'url';\nimport { v4 as uuid } from 'uuid';\nimport { Buffer } from 'buffer';\nimport { Logger, Credentials, Signer, Hub, Constants, USER_AGENT_HEADER, jitteredExponentialRetry, NonRetryableError, } from '@aws-amplify/core';\nimport Cache from '@aws-amplify/cache';\nimport Auth from '@aws-amplify/auth';\nimport { AbstractPubSubProvider } from '../PubSubProvider';\nimport { CONTROL_MSG } from '../../types/PubSub';\nimport { AMPLIFY_SYMBOL, AWS_APPSYNC_REALTIME_HEADERS, CONNECTION_INIT_TIMEOUT, DEFAULT_KEEP_ALIVE_TIMEOUT, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT, MAX_DELAY_MS, MESSAGE_TYPES, NON_RETRYABLE_CODES, SOCKET_STATUS, START_ACK_TIMEOUT, SUBSCRIPTION_STATUS, CONNECTION_STATE_CHANGE, } from '../constants';\nimport { ConnectionStateMonitor, CONNECTION_CHANGE, } from '../../utils/ConnectionStateMonitor';\nvar logger = new Logger('AWSAppSyncRealTimeProvider');\nvar dispatchApiEvent = function (event, data, message) {\n Hub.dispatch('api', { event: event, data: data, message: message }, 'PubSub', AMPLIFY_SYMBOL);\n};\nvar standardDomainPattern = /^https:\\/\\/\\w{26}\\.appsync\\-api\\.\\w{2}(?:(?:\\-\\w{2,})+)\\-\\d\\.amazonaws.com\\/graphql$/i;\nvar customDomainPath = '/realtime';\nvar AWSAppSyncRealTimeProvider = /** @class */ (function (_super) {\n __extends(AWSAppSyncRealTimeProvider, _super);\n function AWSAppSyncRealTimeProvider(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, options) || this;\n _this.socketStatus = SOCKET_STATUS.CLOSED;\n _this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n _this.subscriptionObserverMap = new Map();\n _this.promiseArray = [];\n _this.connectionStateMonitor = new ConnectionStateMonitor();\n // Monitor the connection state and pass changes along to Hub\n _this.connectionStateMonitor.connectionStateObservable.subscribe(function (ConnectionState) {\n dispatchApiEvent(CONNECTION_STATE_CHANGE, {\n provider: _this,\n connectionState: ConnectionState,\n }, \"Connection state is \" + ConnectionState);\n });\n return _this;\n }\n AWSAppSyncRealTimeProvider.prototype.getNewWebSocket = function (url, protocol) {\n return new WebSocket(url, protocol);\n };\n AWSAppSyncRealTimeProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncRealTimeProvider';\n };\n AWSAppSyncRealTimeProvider.prototype.newClient = function () {\n throw new Error('Not used here');\n };\n AWSAppSyncRealTimeProvider.prototype.publish = function (_topics, _msg, _options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n // Check if url matches standard domain pattern\n AWSAppSyncRealTimeProvider.prototype.isCustomDomain = function (url) {\n return url.match(standardDomainPattern) === null;\n };\n AWSAppSyncRealTimeProvider.prototype.subscribe = function (_topics, options) {\n var _this = this;\n var appSyncGraphqlEndpoint = options === null || options === void 0 ? void 0 : options.appSyncGraphqlEndpoint;\n return new Observable(function (observer) {\n if (!options || !appSyncGraphqlEndpoint) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Subscribe only available for AWS AppSync endpoint\")),\n ],\n });\n observer.complete();\n }\n else {\n var subscriptionId_1 = uuid();\n _this._startSubscriptionWithAWSAppSyncRealTime({\n options: options,\n observer: observer,\n subscriptionId: subscriptionId_1,\n }).catch(function (err) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR + \": \" + err)),\n ],\n });\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n observer.complete();\n });\n return function () { return __awaiter(_this, void 0, void 0, function () {\n var subscriptionState, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, 3, 4]);\n // Waiting that subscription has been connected before trying to unsubscribe\n return [4 /*yield*/, this._waitForSubscriptionToBeConnected(subscriptionId_1)];\n case 1:\n // Waiting that subscription has been connected before trying to unsubscribe\n _a.sent();\n subscriptionState = (this.subscriptionObserverMap.get(subscriptionId_1) || {}).subscriptionState;\n if (!subscriptionState) {\n // subscription already unsubscribed\n return [2 /*return*/];\n }\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId_1);\n }\n else {\n throw new Error('Subscription never connected');\n }\n return [3 /*break*/, 4];\n case 2:\n err_1 = _a.sent();\n logger.debug(\"Error while unsubscribing \" + err_1);\n return [3 /*break*/, 4];\n case 3:\n this._removeSubscriptionObserver(subscriptionId_1);\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n }\n });\n };\n Object.defineProperty(AWSAppSyncRealTimeProvider.prototype, \"isSSLEnabled\", {\n get: function () {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n AWSAppSyncRealTimeProvider.prototype._startSubscriptionWithAWSAppSyncRealTime = function (_a) {\n var options = _a.options, observer = _a.observer, subscriptionId = _a.subscriptionId;\n var _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, _d, graphql_headers, _e, additionalHeaders, subscriptionState, data, dataString, headerObj, _f, _g, subscriptionMessage, stringToAWSRealTime, err_2, message, subscriptionFailedCallback_1, _h, subscriptionFailedCallback, subscriptionReadyCallback;\n var _j;\n var _this = this;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint, authenticationType = options.authenticationType, query = options.query, variables = options.variables, apiKey = options.apiKey, region = options.region, _d = options.graphql_headers, graphql_headers = _d === void 0 ? function () { return ({}); } : _d, _e = options.additionalHeaders, additionalHeaders = _e === void 0 ? {} : _e;\n subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n data = {\n query: query,\n variables: variables,\n };\n // Having a subscription id map will make it simple to forward messages received\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query !== null && query !== void 0 ? query : '',\n variables: variables !== null && variables !== void 0 ? variables : {},\n subscriptionState: subscriptionState,\n startAckTimeoutId: undefined,\n });\n dataString = JSON.stringify(data);\n _f = [{}];\n return [4 /*yield*/, this._awsRealTimeHeaderBasedAuth({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n payload: dataString,\n canonicalUri: '',\n region: region,\n additionalHeaders: additionalHeaders,\n })];\n case 1:\n _g = [__assign.apply(void 0, _f.concat([(_k.sent())]))];\n return [4 /*yield*/, graphql_headers()];\n case 2:\n headerObj = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_k.sent())])), additionalHeaders]), (_j = {}, _j[USER_AGENT_HEADER] = Constants.userAgent, _j)]);\n subscriptionMessage = {\n id: subscriptionId,\n payload: {\n data: dataString,\n extensions: {\n authorization: __assign({}, headerObj),\n },\n },\n type: MESSAGE_TYPES.GQL_START,\n };\n stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n _k.label = 3;\n case 3:\n _k.trys.push([3, 5, , 6]);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n return [4 /*yield*/, this._initializeWebSocketConnection({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n region: region,\n additionalHeaders: additionalHeaders,\n })];\n case 4:\n _k.sent();\n return [3 /*break*/, 6];\n case 5:\n err_2 = _k.sent();\n logger.debug({ err: err_2 });\n message = (_b = err_2['message']) !== null && _b !== void 0 ? _b : '';\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n observer.error({\n errors: [\n __assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + message)),\n ],\n });\n observer.complete();\n subscriptionFailedCallback_1 = (this.subscriptionObserverMap.get(subscriptionId) || {}).subscriptionFailedCallback;\n // Notify concurrent unsubscription\n if (typeof subscriptionFailedCallback_1 === 'function') {\n subscriptionFailedCallback_1();\n }\n return [2 /*return*/];\n case 6:\n _h = (_c = this.subscriptionObserverMap.get(subscriptionId)) !== null && _c !== void 0 ? _c : {}, subscriptionFailedCallback = _h.subscriptionFailedCallback, subscriptionReadyCallback = _h.subscriptionReadyCallback;\n // This must be done before sending the message in order to be listening immediately\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n query: query !== null && query !== void 0 ? query : '',\n variables: variables !== null && variables !== void 0 ? variables : {},\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(function () {\n _this._timeoutStartSubscriptionAck.call(_this, subscriptionId);\n }, START_ACK_TIMEOUT),\n });\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n // Waiting that subscription has been connected before trying to unsubscribe\n AWSAppSyncRealTimeProvider.prototype._waitForSubscriptionToBeConnected = function (subscriptionId) {\n return __awaiter(this, void 0, void 0, function () {\n var subscriptionObserver, subscriptionState;\n var _this = this;\n return __generator(this, function (_a) {\n subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n subscriptionState = subscriptionObserver.subscriptionState;\n // This in case unsubscribe is invoked before sending start subscription message\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return [2 /*return*/, new Promise(function (res, rej) {\n var observer = subscriptionObserver.observer, subscriptionState = subscriptionObserver.subscriptionState, variables = subscriptionObserver.variables, query = subscriptionObserver.query;\n _this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: res,\n subscriptionFailedCallback: rej,\n });\n })];\n }\n }\n return [2 /*return*/];\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._sendUnsubscriptionMessage = function (subscriptionId) {\n try {\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN &&\n this.socketStatus === SOCKET_STATUS.READY) {\n // Preparing unsubscribe message to stop receiving messages for that subscription\n var unsubscribeMessage = {\n id: subscriptionId,\n type: MESSAGE_TYPES.GQL_STOP,\n };\n var stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n }\n catch (err) {\n // If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n logger.debug({ err: err });\n }\n };\n AWSAppSyncRealTimeProvider.prototype._removeSubscriptionObserver = function (subscriptionId) {\n this.subscriptionObserverMap.delete(subscriptionId);\n // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n };\n AWSAppSyncRealTimeProvider.prototype._closeSocketIfRequired = function () {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n }\n else {\n logger.debug('closing WebSocket...');\n if (this.keepAliveTimeoutId) {\n clearTimeout(this.keepAliveTimeoutId);\n }\n if (this.keepAliveAlertTimeoutId) {\n clearTimeout(this.keepAliveAlertTimeoutId);\n }\n var tempSocket = this.awsRealTimeSocket;\n // Cleaning callbacks to avoid race condition, socket still exists\n tempSocket.onclose = null;\n tempSocket.onerror = null;\n tempSocket.close(1000);\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n };\n AWSAppSyncRealTimeProvider.prototype._handleIncomingSubscriptionMessage = function (message) {\n var _this = this;\n logger.debug(\"subscription message from AWS AppSync RealTime: \" + message.data);\n var _a = JSON.parse(message.data), _b = _a.id, id = _b === void 0 ? '' : _b, payload = _a.payload, type = _a.type;\n var _c = this.subscriptionObserverMap.get(id) || {}, _d = _c.observer, observer = _d === void 0 ? null : _d, _e = _c.query, query = _e === void 0 ? '' : _e, _f = _c.variables, variables = _f === void 0 ? {} : _f, startAckTimeoutId = _c.startAckTimeoutId, subscriptionReadyCallback = _c.subscriptionReadyCallback, subscriptionFailedCallback = _c.subscriptionFailedCallback;\n logger.debug({ id: id, observer: observer, query: query, variables: variables });\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n }\n else {\n logger.debug(\"observer not found for id: \" + id);\n }\n return;\n }\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(\"subscription ready for \" + JSON.stringify({ query: query, variables: variables }));\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent(CONTROL_MSG.SUBSCRIPTION_ACK, { query: query, variables: variables }, 'Connection established for subscription');\n var subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n if (observer) {\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: undefined,\n subscriptionState: subscriptionState,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n });\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n if (this.keepAliveTimeoutId)\n clearTimeout(this.keepAliveTimeoutId);\n if (this.keepAliveAlertTimeoutId)\n clearTimeout(this.keepAliveAlertTimeoutId);\n this.keepAliveTimeoutId = setTimeout(function () { return _this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT); }, this.keepAliveTimeout);\n this.keepAliveAlertTimeoutId = setTimeout(function () {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE_MISSED);\n }, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n var subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n if (observer) {\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: startAckTimeoutId,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n subscriptionState: subscriptionState,\n });\n observer.error({\n errors: [\n __assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + JSON.stringify(payload))),\n ],\n });\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n observer.complete();\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n }\n };\n AWSAppSyncRealTimeProvider.prototype._errorDisconnect = function (msg) {\n logger.debug(\"Disconnect error: \" + msg);\n this.subscriptionObserverMap.forEach(function (_a) {\n var observer = _a.observer;\n if (observer && !observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(msg))],\n });\n }\n });\n this.subscriptionObserverMap.clear();\n if (this.awsRealTimeSocket) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n this.awsRealTimeSocket.close();\n }\n this.socketStatus = SOCKET_STATUS.CLOSED;\n };\n AWSAppSyncRealTimeProvider.prototype._timeoutStartSubscriptionAck = function (subscriptionId) {\n var subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n var observer = subscriptionObserver.observer, query = subscriptionObserver.query, variables = subscriptionObserver.variables;\n if (!observer) {\n return;\n }\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED,\n });\n if (observer && !observer.closed) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Subscription timeout \" + JSON.stringify({\n query: query,\n variables: variables,\n }))),\n ],\n });\n // Cleanup will be automatically executed\n observer.complete();\n }\n logger.debug('timeoutStartSubscription', JSON.stringify({ query: query, variables: variables }));\n }\n };\n AWSAppSyncRealTimeProvider.prototype._initializeWebSocketConnection = function (_a) {\n var _this = this;\n var appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, authenticationType = _a.authenticationType, apiKey = _a.apiKey, region = _a.region, additionalHeaders = _a.additionalHeaders;\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var payloadString, headerString, _a, _b, headerQs, payloadQs, discoverableEndpoint, protocol, awsRealTimeUrl, err_3;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.promiseArray.push({ res: res, rej: rej });\n if (!(this.socketStatus === SOCKET_STATUS.CLOSED)) return [3 /*break*/, 5];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 4, , 5]);\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n payloadString = '{}';\n _b = (_a = JSON).stringify;\n return [4 /*yield*/, this._awsRealTimeHeaderBasedAuth({\n authenticationType: authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n region: region,\n additionalHeaders: additionalHeaders,\n })];\n case 2:\n headerString = _b.apply(_a, [_c.sent()]);\n headerQs = Buffer.from(headerString).toString('base64');\n payloadQs = Buffer.from(payloadString).toString('base64');\n discoverableEndpoint = appSyncGraphqlEndpoint !== null && appSyncGraphqlEndpoint !== void 0 ? appSyncGraphqlEndpoint : '';\n if (this.isCustomDomain(discoverableEndpoint)) {\n discoverableEndpoint =\n discoverableEndpoint.concat(customDomainPath);\n }\n else {\n discoverableEndpoint = discoverableEndpoint\n .replace('appsync-api', 'appsync-realtime-api')\n .replace('gogi-beta', 'grt-beta');\n }\n protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n discoverableEndpoint = discoverableEndpoint\n .replace('https://', protocol)\n .replace('http://', protocol);\n awsRealTimeUrl = discoverableEndpoint + \"?header=\" + headerQs + \"&payload=\" + payloadQs;\n return [4 /*yield*/, this._initializeRetryableHandshake(awsRealTimeUrl)];\n case 3:\n _c.sent();\n this.promiseArray.forEach(function (_a) {\n var res = _a.res;\n logger.debug('Notifying connection successful');\n res();\n });\n this.socketStatus = SOCKET_STATUS.READY;\n this.promiseArray = [];\n return [3 /*break*/, 5];\n case 4:\n err_3 = _c.sent();\n this.promiseArray.forEach(function (_a) {\n var rej = _a.rej;\n return rej(err_3);\n });\n this.promiseArray = [];\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n }); });\n };\n AWSAppSyncRealTimeProvider.prototype._initializeRetryableHandshake = function (awsRealTimeUrl) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(\"Initializaling retryable Handshake\");\n return [4 /*yield*/, jitteredExponentialRetry(this._initializeHandshake.bind(this), [awsRealTimeUrl], MAX_DELAY_MS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._initializeHandshake = function (awsRealTimeUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var err_4, _a, errorType, errorCode;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializing handshake \" + awsRealTimeUrl);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, , 5]);\n return [4 /*yield*/, (function () {\n return new Promise(function (res, rej) {\n var newSocket = _this.getNewWebSocket(awsRealTimeUrl, 'graphql-ws');\n newSocket.onerror = function () {\n logger.debug(\"WebSocket connection error\");\n };\n newSocket.onclose = function () {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n rej(new Error('Connection handshake error'));\n };\n newSocket.onopen = function () {\n _this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n })()];\n case 2:\n _b.sent();\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n return [4 /*yield*/, (function () {\n return new Promise(function (res, rej) {\n if (_this.awsRealTimeSocket) {\n var ackOk_1 = false;\n _this.awsRealTimeSocket.onerror = function (error) {\n logger.debug(\"WebSocket error \" + JSON.stringify(error));\n };\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n rej(new Error(JSON.stringify(event)));\n };\n _this.awsRealTimeSocket.onmessage = function (message) {\n logger.debug(\"subscription message from AWS AppSyncRealTime: \" + message.data + \" \");\n var data = JSON.parse(message.data);\n var type = data.type, _a = data.payload, _b = (_a === void 0 ? {} : _a).connectionTimeoutMs, connectionTimeoutMs = _b === void 0 ? DEFAULT_KEEP_ALIVE_TIMEOUT : _b;\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk_1 = true;\n if (_this.awsRealTimeSocket) {\n _this.keepAliveTimeout = connectionTimeoutMs;\n _this.awsRealTimeSocket.onmessage =\n _this._handleIncomingSubscriptionMessage.bind(_this);\n _this.awsRealTimeSocket.onerror = function (err) {\n logger.debug(err);\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n }\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n var _c = data.payload, _d = (_c === void 0 ? {} : _c).errors, _e = __read(_d === void 0 ? [] : _d, 1), _f = _e[0], _g = _f === void 0 ? {} : _f, _h = _g.errorType, errorType = _h === void 0 ? '' : _h, _j = _g.errorCode, errorCode = _j === void 0 ? 0 : _j;\n rej({ errorType: errorType, errorCode: errorCode });\n }\n };\n var gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT,\n };\n _this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n var checkAckOk_1 = function (ackOk) {\n if (!ackOk) {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n rej(new Error(\"Connection timeout: ack from AWSAppSyncRealTime was not received after \" + CONNECTION_INIT_TIMEOUT + \" ms\"));\n }\n };\n setTimeout(function () { return checkAckOk_1(ackOk_1); }, CONNECTION_INIT_TIMEOUT);\n }\n });\n })()];\n case 3:\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n err_4 = _b.sent();\n _a = err_4, errorType = _a.errorType, errorCode = _a.errorCode;\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n }\n else if (errorType) {\n throw new Error(errorType);\n }\n else {\n throw err_4;\n }\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeHeaderBasedAuth = function (_a) {\n var authenticationType = _a.authenticationType, payload = _a.payload, canonicalUri = _a.canonicalUri, appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, apiKey = _a.apiKey, region = _a.region, additionalHeaders = _a.additionalHeaders;\n return __awaiter(this, void 0, void 0, function () {\n var headerHandler, handler, host, result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n headerHandler = {\n API_KEY: this._awsRealTimeApiKeyHeader.bind(this),\n AWS_IAM: this._awsRealTimeIAMHeader.bind(this),\n OPENID_CONNECT: this._awsRealTimeOPENIDHeader.bind(this),\n AMAZON_COGNITO_USER_POOLS: this._awsRealTimeCUPHeader.bind(this),\n AWS_LAMBDA: this._customAuthHeader,\n };\n if (!(!authenticationType || !headerHandler[authenticationType])) return [3 /*break*/, 1];\n logger.debug(\"Authentication type \" + authenticationType + \" not supported\");\n return [2 /*return*/, ''];\n case 1:\n handler = headerHandler[authenticationType];\n host = url.parse(appSyncGraphqlEndpoint !== null && appSyncGraphqlEndpoint !== void 0 ? appSyncGraphqlEndpoint : '').host;\n logger.debug(\"Authenticating with \" + authenticationType);\n return [4 /*yield*/, handler({\n payload: payload,\n canonicalUri: canonicalUri,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n apiKey: apiKey,\n region: region,\n host: host,\n additionalHeaders: additionalHeaders,\n })];\n case 2:\n result = _b.sent();\n return [2 /*return*/, result];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeCUPHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var session;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, Auth.currentSession()];\n case 1:\n session = _b.sent();\n return [2 /*return*/, {\n Authorization: session.getAccessToken().getJwtToken(),\n host: host,\n }];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeOPENIDHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var token, federatedInfo, currentUser;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, Cache.getItem('federatedInfo')];\n case 1:\n federatedInfo = _b.sent();\n if (!federatedInfo) return [3 /*break*/, 2];\n token = federatedInfo.token;\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, Auth.currentAuthenticatedUser()];\n case 3:\n currentUser = _b.sent();\n if (currentUser) {\n token = currentUser.token;\n }\n _b.label = 4;\n case 4:\n if (!token) {\n throw new Error('No federated jwt');\n }\n return [2 /*return*/, {\n Authorization: token,\n host: host,\n }];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeApiKeyHeader = function (_a) {\n var apiKey = _a.apiKey, host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var dt, dtStr;\n return __generator(this, function (_b) {\n dt = new Date();\n dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n return [2 /*return*/, {\n host: host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey,\n }];\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeIAMHeader = function (_a) {\n var payload = _a.payload, canonicalUri = _a.canonicalUri, appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var endpointInfo, credentialsOK, creds, request, signed_params;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpointInfo = {\n region: region,\n service: 'appsync',\n };\n return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _b.sent();\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n return [4 /*yield*/, Credentials.get().then(function (credentials) {\n var _a = credentials, secretAccessKey = _a.secretAccessKey, accessKeyId = _a.accessKeyId, sessionToken = _a.sessionToken;\n return {\n secret_key: secretAccessKey,\n access_key: accessKeyId,\n session_token: sessionToken,\n };\n })];\n case 2:\n creds = _b.sent();\n request = {\n url: \"\" + appSyncGraphqlEndpoint + canonicalUri,\n data: payload,\n method: 'POST',\n headers: __assign({}, AWS_APPSYNC_REALTIME_HEADERS),\n };\n signed_params = Signer.sign(request, creds, endpointInfo);\n return [2 /*return*/, signed_params.headers];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._customAuthHeader = function (_a) {\n var host = _a.host, additionalHeaders = _a.additionalHeaders;\n if (!additionalHeaders || !additionalHeaders['Authorization']) {\n throw new Error('No auth token specified');\n }\n return {\n Authorization: additionalHeaders.Authorization,\n host: host,\n };\n };\n /**\n * @private\n */\n AWSAppSyncRealTimeProvider.prototype._ensureCredentials = function () {\n return Credentials.get()\n .then(function (credentials) {\n if (!credentials)\n return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for AWSAppSyncRealTimeProvider', cred);\n return true;\n })\n .catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n return AWSAppSyncRealTimeProvider;\n}(AbstractPubSubProvider));\nexport { AWSAppSyncRealTimeProvider };\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n// import '../Common/Polyfills';\nimport Observable from 'zen-observable-ts';\nimport { Amplify, browserOrNode, ConsoleLogger as Logger, INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER, } from '@aws-amplify/core';\nimport { AWSAppSyncProvider, AWSAppSyncRealTimeProvider } from './Providers';\nvar isNode = browserOrNode().isNode;\nvar logger = new Logger('PubSub');\nvar PubSubClass = /** @class */ (function () {\n /**\n * Initialize PubSub with AWS configurations\n *\n * @param {PubSubOptions} options - Configuration object for PubSub\n */\n function PubSubClass(options) {\n this._options = options !== null && options !== void 0 ? options : {};\n logger.debug('PubSub Options', this._options);\n this._pluggables = [];\n this.subscribe = this.subscribe.bind(this);\n }\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncProvider\", {\n /**\n * Lazy instantiate AWSAppSyncProvider when it is required by the API category\n */\n get: function () {\n if (!this._awsAppSyncProvider) {\n this._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\n }\n return this._awsAppSyncProvider;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncRealTimeProvider\", {\n /**\n * Lazy instantiate AWSAppSyncRealTimeProvider when it is required by the API category\n */\n get: function () {\n if (!this._awsAppSyncRealTimeProvider) {\n this._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(this._options);\n }\n return this._awsAppSyncRealTimeProvider;\n },\n enumerable: true,\n configurable: true\n });\n PubSubClass.prototype.getModuleName = function () {\n return 'PubSub';\n };\n /**\n * Configure PubSub part with configurations\n *\n * @param {PubSubOptions} config - Configuration for PubSub\n * @return {Object} - The current configuration\n */\n PubSubClass.prototype.configure = function (options) {\n var _this = this;\n var opt = options ? options.PubSub || options : {};\n logger.debug('configure PubSub', { opt: opt });\n this._options = Object.assign({}, this._options, opt);\n this._pluggables.map(function (pluggable) { return pluggable.configure(_this._options); });\n return this._options;\n };\n /**\n * add plugin into Analytics category\n * @param {Object} pluggable - an instance of the plugin\n */\n PubSubClass.prototype.addPluggable = function (pluggable) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n if (pluggable && pluggable.getCategory() === 'PubSub') {\n this._pluggables.push(pluggable);\n config = pluggable.configure(this._options);\n return [2 /*return*/, config];\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * remove plugin from PubSub category\n * @param providerName - the name of the plugin\n */\n PubSubClass.prototype.removePluggable = function (providerName) {\n this._pluggables = this._pluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n };\n PubSubClass.prototype.getProviderByName = function (providerName) {\n if (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n return this.awsAppSyncProvider;\n }\n if (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n return this.awsAppSyncRealTimeProvider;\n }\n return this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n };\n PubSubClass.prototype.getProviders = function (options) {\n if (options === void 0) { options = {}; }\n var providerName = options.provider;\n if (!providerName) {\n return this._pluggables;\n }\n var provider = this.getProviderByName(providerName);\n if (!provider) {\n throw new Error(\"Could not find provider named \" + providerName);\n }\n return [provider];\n };\n PubSubClass.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.all(this.getProviders(options).map(function (provider) {\n return provider.publish(topics, msg, options);\n }))];\n });\n });\n };\n PubSubClass.prototype.subscribe = function (topics, options) {\n if (isNode && this._options && this._options.ssr) {\n throw new Error('Subscriptions are not supported for Server-Side Rendering (SSR)');\n }\n logger.debug('subscribe options', options);\n var providers = this.getProviders(options);\n return new Observable(function (observer) {\n var observables = providers.map(function (provider) { return ({\n provider: provider,\n observable: provider.subscribe(topics, options),\n }); });\n var subscriptions = observables.map(function (_a) {\n var provider = _a.provider, observable = _a.observable;\n return observable.subscribe({\n start: console.error,\n next: function (value) { return observer.next({ provider: provider, value: value }); },\n error: function (error) { return observer.error({ provider: provider, error: error }); },\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); });\n };\n });\n };\n return PubSubClass;\n}());\nexport { PubSubClass };\nexport var PubSub = new PubSubClass();\nAmplify.register(PubSub);\n//# sourceMappingURL=PubSub.js.map","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","export var StorageErrorStrings;\n(function (StorageErrorStrings) {\n StorageErrorStrings[\"NO_CREDENTIALS\"] = \"No credentials\";\n StorageErrorStrings[\"NO_SRC_KEY\"] = \"source param should be an object with the property \\\"key\\\" with value of type string\";\n StorageErrorStrings[\"NO_DEST_KEY\"] = \"destination param should be an object with the property \\\"key\\\" with value of type string\";\n StorageErrorStrings[\"INVALID_BLOB\"] = \"Object must be an instance of Blob\";\n})(StorageErrorStrings || (StorageErrorStrings = {}));\nexport var AWSS3ProviderMultipartCopierErrors;\n(function (AWSS3ProviderMultipartCopierErrors) {\n AWSS3ProviderMultipartCopierErrors[\"CLEANUP_FAILED\"] = \"Multipart copy clean up failed\";\n AWSS3ProviderMultipartCopierErrors[\"NO_OBJECT_FOUND\"] = \"Object does not exist\";\n AWSS3ProviderMultipartCopierErrors[\"INVALID_QUEUESIZE\"] = \"Queue size must be a positive number\";\n AWSS3ProviderMultipartCopierErrors[\"NO_COPYSOURCE\"] = \"You must specify a copy source\";\n AWSS3ProviderMultipartCopierErrors[\"MAX_NUM_PARTS_EXCEEDED\"] = \"Only a maximum of 10000 parts are allowed\";\n})(AWSS3ProviderMultipartCopierErrors || (AWSS3ProviderMultipartCopierErrors = {}));\nexport var AWSS3ProviderUploadErrorStrings;\n(function (AWSS3ProviderUploadErrorStrings) {\n AWSS3ProviderUploadErrorStrings[\"UPLOAD_PAUSED_MESSAGE\"] = \"paused\";\n})(AWSS3ProviderUploadErrorStrings || (AWSS3ProviderUploadErrorStrings = {}));\n//# sourceMappingURL=StorageErrorStrings.js.map","/*\n * Copyright 2017-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { HttpResponse } from '@aws-sdk/protocol-http';\nimport { buildQueryString } from '@aws-sdk/querystring-builder';\nimport axios from 'axios';\nimport { ConsoleLogger as Logger, Platform } from '@aws-amplify/core';\nimport { AWSS3ProviderUploadErrorStrings } from '../common/StorageErrorStrings';\nvar logger = new Logger('axios-http-handler');\nexport var SEND_UPLOAD_PROGRESS_EVENT = 'sendUploadProgress';\nexport var SEND_DOWNLOAD_PROGRESS_EVENT = 'sendDownloadProgress';\nfunction isBlob(body) {\n return typeof Blob !== 'undefined' && body instanceof Blob;\n}\nfunction hasErrorResponse(error) {\n return (typeof error !== 'undefined' &&\n Object.prototype.hasOwnProperty.call(error, 'response') &&\n typeof error.response !== 'undefined' &&\n Object.prototype.hasOwnProperty.call(error.response, 'status') &&\n typeof error.response.status === 'number');\n}\nvar normalizeHeaders = function (headers, normalizedName) {\n var e_1, _a;\n try {\n for (var _b = __values(Object.entries(headers)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), k = _d[0], v = _d[1];\n if (k !== normalizedName &&\n k.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = v;\n delete headers[k];\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n};\nexport var reactNativeRequestTransformer = [\n function (data, headers) {\n if (isBlob(data)) {\n normalizeHeaders(headers, 'Content-Type');\n normalizeHeaders(headers, 'Accept');\n return data;\n }\n // Axios' default transformRequest is an array\n return axios.defaults.transformRequest[0].call(null, data, headers);\n },\n];\nvar AxiosHttpHandler = /** @class */ (function () {\n function AxiosHttpHandler(httpOptions, emitter, cancelTokenSource) {\n if (httpOptions === void 0) { httpOptions = {}; }\n this.httpOptions = httpOptions;\n this.emitter = emitter;\n this.cancelTokenSource = cancelTokenSource;\n }\n AxiosHttpHandler.prototype.destroy = function () {\n // Do nothing. TLS and HTTP/2 connection pooling is handled by the\n // browser.\n };\n AxiosHttpHandler.prototype.handle = function (request, options) {\n var requestTimeoutInMs = this.httpOptions.requestTimeout;\n // prioritize the call specific event emitter, this is useful for multipart upload as each individual parts has\n // their own event emitter, without having to create s3client for every individual calls.\n var emitter = options.emitter || this.emitter;\n var path = request.path;\n if (request.query) {\n var queryString = buildQueryString(request.query);\n if (queryString) {\n path += \"?\" + queryString;\n }\n }\n var port = request.port;\n var url = request.protocol + \"//\" + request.hostname + (port ? \":\" + port : '') + path;\n var axiosRequest = {};\n axiosRequest.url = url;\n axiosRequest.method = request.method;\n axiosRequest.headers = request.headers;\n // The host header is automatically added by the browser and adding it explicitly in the\n // axios request throws an error https://github.com/aws-amplify/amplify-js/issues/5376\n // This is because the host header is a forbidden header for the http client to set\n // see https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name and\n // https://fetch.spec.whatwg.org/#forbidden-header-name\n // The reason we are removing this header here instead of in the aws-sdk's client\n // middleware is that the host header is required to be in the request signature and if\n // we remove it from the middlewares, then the request fails because the header is added\n // by the browser but is absent from the signature.\n delete axiosRequest.headers['host'];\n if (request.body) {\n axiosRequest.data = request.body;\n }\n else {\n // Fix for https://github.com/aws-amplify/amplify-js/issues/5432\n // If the POST request body is empty but content-type header is set, axios is forcibly removing it\n // See https://github.com/axios/axios/issues/1535 and refusing to fix it https://github.com/axios/axios/issues/755\n // This change is a workaround to set the data as null (instead of undefined) to prevent axios from\n // removing the content-type header. Link for the source code\n // https://github.com/axios/axios/blob/dc4bc49673943e35280e5df831f5c3d0347a9393/lib/adapters/xhr.js#L121-L123\n if (axiosRequest.headers[Object.keys(axiosRequest.headers).find(function (key) { return key.toLowerCase() === 'content-type'; })]) {\n axiosRequest.data = null;\n }\n }\n if (emitter) {\n // TODO: Unify linting rules across JS repo\n axiosRequest.onUploadProgress = function (event) {\n emitter.emit(SEND_UPLOAD_PROGRESS_EVENT, event);\n logger.debug(event);\n };\n // TODO: Unify linting rules across JS repo\n axiosRequest.onDownloadProgress = function (event) {\n emitter.emit(SEND_DOWNLOAD_PROGRESS_EVENT, event);\n logger.debug(event);\n };\n }\n // If a cancel token source is passed down from the provider, allows cancellation of in-flight requests\n if (this.cancelTokenSource) {\n axiosRequest.cancelToken = this.cancelTokenSource.token;\n }\n if (options.cancelTokenSource) {\n axiosRequest.cancelToken = options.cancelTokenSource.token;\n }\n // From gamma release, aws-sdk now expects all response type to be of blob or streams\n axiosRequest.responseType = 'blob';\n // In Axios, Blobs are identified by calling Object.prototype.toString on the object. However, on React Native,\n // calling Object.prototype.toString on a Blob returns '[object Object]' instead of '[object Blob]', which causes\n // Axios to treat Blobs as generic Javascript objects. Therefore we need a to use a custom request transformer\n // to correctly handle Blob in React Native.\n if (Platform.isReactNative) {\n axiosRequest.transformRequest = reactNativeRequestTransformer;\n }\n var raceOfPromises = [\n axios\n .request(axiosRequest)\n .then(function (response) {\n return {\n response: new HttpResponse({\n headers: response.headers,\n statusCode: response.status,\n body: response.data,\n }),\n };\n })\n .catch(function (error) {\n var _a, _b;\n // Error\n if (error.message !==\n AWSS3ProviderUploadErrorStrings.UPLOAD_PAUSED_MESSAGE) {\n logger.error(error.message);\n }\n // for axios' cancel error, we should re-throw it back so it's not considered an s3client error\n // if we return empty, or an abitrary error HttpResponse, it will be hard to debug down the line.\n //\n // for errors that does not have a 'response' object, it's very likely that it is an unexpected error for\n // example a disconnect. Without it we cannot meaningfully reconstruct a HttpResponse, and the AWS SDK might\n // consider the request successful by mistake. In this case we should also re-throw the error.\n if (axios.isCancel(error) || !hasErrorResponse(error)) {\n throw error;\n }\n // otherwise, we should re-construct an HttpResponse from the error, so that it can be passed down to other\n // aws sdk middleware (e.g retry, clock skew correction, error message serializing)\n return {\n response: new HttpResponse({\n statusCode: error.response.status,\n body: (_a = error.response) === null || _a === void 0 ? void 0 : _a.data,\n headers: (_b = error.response) === null || _b === void 0 ? void 0 : _b.headers,\n }),\n };\n }),\n requestTimeout(requestTimeoutInMs),\n ];\n return Promise.race(raceOfPromises);\n };\n return AxiosHttpHandler;\n}());\nexport { AxiosHttpHandler };\nfunction requestTimeout(timeoutInMs) {\n if (timeoutInMs === void 0) { timeoutInMs = 0; }\n return new Promise(function (resolve, reject) {\n if (timeoutInMs) {\n setTimeout(function () {\n var timeoutError = new Error(\"Request did not complete within \" + timeoutInMs + \" ms\");\n timeoutError.name = 'TimeoutError';\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n//# sourceMappingURL=axios-http-handler.js.map","export var AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nexport var SET_CONTENT_LENGTH_HEADER = 'contentLengthMiddleware';\nexport var localTestingStorageEndpoint = 'http://localhost:20005';\nexport var UPLOADS_STORAGE_KEY = '__uploadInProgress';\n//# sourceMappingURL=StorageConstants.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { UploadPartCommand, CompleteMultipartUploadCommand, AbortMultipartUploadCommand, ListPartsCommand, CreateMultipartUploadCommand, ListObjectsV2Command, } from '@aws-sdk/client-s3';\nimport axios from 'axios';\nimport { Logger } from '@aws-amplify/core';\nimport { byteLength, isFile } from '../common/StorageUtils';\nimport { AWSS3ProviderUploadErrorStrings } from '../common/StorageErrorStrings';\nimport { SET_CONTENT_LENGTH_HEADER, UPLOADS_STORAGE_KEY, } from '../common/StorageConstants';\nvar logger = new Logger('AWSS3UploadTask');\nexport var AWSS3UploadTaskState;\n(function (AWSS3UploadTaskState) {\n AWSS3UploadTaskState[AWSS3UploadTaskState[\"INIT\"] = 0] = \"INIT\";\n AWSS3UploadTaskState[AWSS3UploadTaskState[\"IN_PROGRESS\"] = 1] = \"IN_PROGRESS\";\n AWSS3UploadTaskState[AWSS3UploadTaskState[\"PAUSED\"] = 2] = \"PAUSED\";\n AWSS3UploadTaskState[AWSS3UploadTaskState[\"CANCELLED\"] = 3] = \"CANCELLED\";\n AWSS3UploadTaskState[AWSS3UploadTaskState[\"COMPLETED\"] = 4] = \"COMPLETED\";\n})(AWSS3UploadTaskState || (AWSS3UploadTaskState = {}));\nexport var TaskEvents;\n(function (TaskEvents) {\n TaskEvents[\"CANCEL\"] = \"cancel\";\n TaskEvents[\"UPLOAD_COMPLETE\"] = \"uploadComplete\";\n TaskEvents[\"UPLOAD_PROGRESS\"] = \"uploadPartProgress\";\n TaskEvents[\"ERROR\"] = \"error\";\n})(TaskEvents || (TaskEvents = {}));\n// maximum number of parts per upload request according the S3 spec,\n// see: https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html\nvar MAX_PARTS = 10000;\n// 5MB in bytes\nvar PART_SIZE = 5 * 1024 * 1024;\nvar DEFAULT_QUEUE_SIZE = 4;\nfunction comparePartNumber(a, b) {\n return a.PartNumber - b.PartNumber;\n}\nvar AWSS3UploadTask = /** @class */ (function () {\n function AWSS3UploadTask(_a) {\n var s3Client = _a.s3Client, file = _a.file, emitter = _a.emitter, storage = _a.storage, params = _a.params, level = _a.level, prefixPromise = _a.prefixPromise;\n this.partSize = PART_SIZE;\n this.queueSize = DEFAULT_QUEUE_SIZE;\n this.inProgress = [];\n this.completedParts = [];\n this.queued = [];\n this.bytesUploaded = 0;\n this.totalBytes = 0;\n this.state = AWSS3UploadTaskState.INIT;\n this.prefixPromise = prefixPromise;\n this.s3client = s3Client;\n this.s3client.middlewareStack.remove(SET_CONTENT_LENGTH_HEADER);\n this.storage = storage;\n this.storageSync = Promise.resolve();\n if (typeof this.storage['sync'] === 'function') {\n this.storageSync = this.storage['sync']();\n }\n this.params = params;\n this.file = file;\n this.totalBytes = this.file.size;\n this.bytesUploaded = 0;\n this.emitter = emitter;\n this.queued = [];\n this.fileId = this._getFileId(level);\n this._validateParams();\n // event emitter will re-throw an error if an event emits an error unless there's a listener, attaching a no-op\n // function to it unless user adds their own onError callback\n this.emitter.on(TaskEvents.ERROR, function () { });\n }\n Object.defineProperty(AWSS3UploadTask.prototype, \"percent\", {\n get: function () {\n return (this.bytesUploaded / this.totalBytes) * 100;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AWSS3UploadTask.prototype, \"isInProgress\", {\n get: function () {\n return this.state === AWSS3UploadTaskState.IN_PROGRESS;\n },\n enumerable: true,\n configurable: true\n });\n AWSS3UploadTask.prototype._listSingleFile = function (_a) {\n var key = _a.key, bucket = _a.bucket;\n return __awaiter(this, void 0, void 0, function () {\n var listObjectRes, _b, Contents, prefix, obj;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.s3client.send(new ListObjectsV2Command({\n Bucket: bucket,\n Prefix: key,\n }))];\n case 1:\n listObjectRes = _c.sent();\n _b = listObjectRes.Contents, Contents = _b === void 0 ? [] : _b;\n return [4 /*yield*/, this.prefixPromise];\n case 2:\n prefix = _c.sent();\n obj = Contents.find(function (o) { return o.Key === \"\" + prefix + key; });\n return [2 /*return*/, obj];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._getFileId = function (level) {\n // We should check if it's a File first because File is also instance of a Blob\n if (isFile(this.file)) {\n return [\n this.file.name,\n this.file.lastModified,\n this.file.size,\n this.file.type,\n this.params.Bucket,\n level,\n this.params.Key,\n ].join('-');\n }\n else {\n return [\n this.file.size,\n this.file.type,\n this.params.Bucket,\n level,\n this.params.Key,\n ].join('-');\n }\n };\n AWSS3UploadTask.prototype._findCachedUploadParts = function () {\n return __awaiter(this, void 0, void 0, function () {\n var uploadRequests, cachedUploadFileData, listPartsOutput;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._listCachedUploadTasks()];\n case 1:\n uploadRequests = _a.sent();\n if (Object.keys(uploadRequests).length === 0 ||\n !Object.prototype.hasOwnProperty.call(uploadRequests, this.fileId)) {\n return [2 /*return*/, { parts: [], uploadId: null }];\n }\n cachedUploadFileData = uploadRequests[this.fileId];\n cachedUploadFileData.lastTouched = Date.now();\n this.storage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(uploadRequests));\n return [4 /*yield*/, this.s3client.send(new ListPartsCommand({\n Bucket: this.params.Bucket,\n Key: this.params.Key,\n UploadId: cachedUploadFileData.uploadId,\n }))];\n case 2:\n listPartsOutput = _a.sent();\n return [2 /*return*/, {\n parts: listPartsOutput.Parts || [],\n uploadId: cachedUploadFileData.uploadId,\n }];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._emitEvent = function (event, payload) {\n this.emitter.emit(event, payload);\n };\n AWSS3UploadTask.prototype._validateParams = function () {\n if (this.file.size / this.partSize > MAX_PARTS) {\n throw new Error(\"Too many parts. Number of parts is \" + this.file.size /\n this.partSize + \", maximum is \" + MAX_PARTS + \".\");\n }\n };\n AWSS3UploadTask.prototype._listCachedUploadTasks = function () {\n return __awaiter(this, void 0, void 0, function () {\n var tasks;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.storageSync];\n case 1:\n _a.sent();\n tasks = this.storage.getItem(UPLOADS_STORAGE_KEY) || '{}';\n return [2 /*return*/, JSON.parse(tasks)];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._cache = function (fileMetadata) {\n return __awaiter(this, void 0, void 0, function () {\n var uploadRequests;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._listCachedUploadTasks()];\n case 1:\n uploadRequests = _a.sent();\n uploadRequests[this.fileId] = fileMetadata;\n this.storage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(uploadRequests));\n return [2 /*return*/];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._isCached = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = (_a = Object.prototype.hasOwnProperty).call;\n return [4 /*yield*/, this._listCachedUploadTasks()];\n case 1: return [2 /*return*/, _b.apply(_a, [_c.sent(),\n this.fileId])];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._removeFromCache = function () {\n return __awaiter(this, void 0, void 0, function () {\n var uploadRequests;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._listCachedUploadTasks()];\n case 1:\n uploadRequests = _a.sent();\n delete uploadRequests[this.fileId];\n this.storage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(uploadRequests));\n return [2 /*return*/];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._onPartUploadCompletion = function (_a) {\n var eTag = _a.eTag, partNumber = _a.partNumber, chunk = _a.chunk;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n this.completedParts.push({\n ETag: eTag,\n PartNumber: partNumber,\n });\n this.bytesUploaded += byteLength(chunk);\n this._emitEvent(TaskEvents.UPLOAD_PROGRESS, {\n loaded: this.bytesUploaded,\n total: this.totalBytes,\n });\n // Remove the completed item from the inProgress array\n this.inProgress = this.inProgress.filter(function (job) { return job.uploadPartInput.PartNumber !== partNumber; });\n if (this.queued.length && this.state !== AWSS3UploadTaskState.PAUSED)\n this._startNextPart();\n if (this._isDone())\n this._completeUpload();\n return [2 /*return*/];\n });\n });\n };\n AWSS3UploadTask.prototype._completeUpload = function () {\n return __awaiter(this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.s3client.send(new CompleteMultipartUploadCommand({\n Bucket: this.params.Bucket,\n Key: this.params.Key,\n UploadId: this.uploadId,\n MultipartUpload: {\n // Parts are not always completed in order, we need to manually sort them\n Parts: this.completedParts.sort(comparePartNumber),\n },\n }))];\n case 1:\n _a.sent();\n this._verifyFileSize();\n this._emitEvent(TaskEvents.UPLOAD_COMPLETE, {\n key: this.params.Bucket + \"/\" + this.params.Key,\n });\n this._removeFromCache();\n this.state = AWSS3UploadTaskState.COMPLETED;\n return [3 /*break*/, 3];\n case 2:\n err_1 = _a.sent();\n logger.error('error completing upload', err_1);\n this._emitEvent(TaskEvents.ERROR, err_1);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._makeUploadPartRequest = function (input, cancelTokenSource) {\n return __awaiter(this, void 0, void 0, function () {\n var res, err_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n return [4 /*yield*/, this.s3client.send(new UploadPartCommand(input), {\n cancelTokenSource: cancelTokenSource,\n })];\n case 1:\n res = _a.sent();\n return [4 /*yield*/, this._onPartUploadCompletion({\n eTag: res.ETag,\n partNumber: input.PartNumber,\n chunk: input.Body,\n })];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n err_2 = _a.sent();\n if (this.state === AWSS3UploadTaskState.PAUSED) {\n logger.log('upload paused');\n }\n else if (this.state === AWSS3UploadTaskState.CANCELLED) {\n logger.log('upload aborted');\n }\n else {\n logger.error('error starting next part of upload: ', err_2);\n }\n // axios' cancel will also throw an error, however we don't need to emit an event in that case as it's an\n // expected behavior\n if (!axios.isCancel(err_2) &&\n err_2.message !== AWSS3ProviderUploadErrorStrings.UPLOAD_PAUSED_MESSAGE) {\n this._emitEvent(TaskEvents.ERROR, err_2);\n this.pause();\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._startNextPart = function () {\n if (this.queued.length > 0 && this.state !== AWSS3UploadTaskState.PAUSED) {\n var cancelTokenSource = axios.CancelToken.source();\n var nextPart = this.queued.shift();\n this.inProgress.push({\n uploadPartInput: nextPart,\n s3Request: this._makeUploadPartRequest(nextPart, cancelTokenSource),\n cancel: cancelTokenSource.cancel,\n });\n }\n };\n /**\n * Verify on S3 side that the file size matches the one on the client side.\n *\n * @async\n * @throws throws an error if the file size does not match between local copy of the file and the file on s3.\n */\n AWSS3UploadTask.prototype._verifyFileSize = function () {\n return __awaiter(this, void 0, void 0, function () {\n var obj, valid;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._listSingleFile({\n key: this.params.Key,\n bucket: this.params.Bucket,\n })];\n case 1:\n obj = _a.sent();\n valid = Boolean(obj && obj.Size === this.file.size);\n if (!valid) {\n throw new Error('File size does not match between local file and file on s3');\n }\n return [2 /*return*/, valid];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._isDone = function () {\n return (!this.queued.length &&\n !this.inProgress.length &&\n this.bytesUploaded === this.totalBytes);\n };\n AWSS3UploadTask.prototype._createParts = function () {\n var size = this.file.size;\n var parts = [];\n for (var bodyStart = 0; bodyStart < size;) {\n var bodyEnd = Math.min(bodyStart + this.partSize, size);\n parts.push({\n Body: this.file.slice(bodyStart, bodyEnd),\n Key: this.params.Key,\n Bucket: this.params.Bucket,\n PartNumber: parts.length + 1,\n UploadId: this.uploadId,\n });\n bodyStart += this.partSize;\n }\n return parts;\n };\n AWSS3UploadTask.prototype._initCachedUploadParts = function (cachedParts) {\n this.bytesUploaded += cachedParts.reduce(function (acc, part) { return acc + part.Size; }, 0);\n // Find the set of part numbers that have already been uploaded\n var uploadedPartNumSet = new Set(cachedParts.map(function (part) { return part.PartNumber; }));\n this.queued = this.queued.filter(function (part) { return !uploadedPartNumSet.has(part.PartNumber); });\n this.completedParts = cachedParts.map(function (part) { return ({\n PartNumber: part.PartNumber,\n ETag: part.ETag,\n }); });\n this._emitEvent(TaskEvents.UPLOAD_PROGRESS, {\n loaded: this.bytesUploaded,\n total: this.totalBytes,\n });\n };\n AWSS3UploadTask.prototype._initMultipartUpload = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.s3client.send(new CreateMultipartUploadCommand(this.params))];\n case 1:\n res = _a.sent();\n this._cache({\n uploadId: res.UploadId,\n lastTouched: Date.now(),\n bucket: this.params.Bucket,\n key: this.params.Key,\n fileName: this.file instanceof File ? this.file.name : '',\n });\n return [2 /*return*/, res.UploadId];\n }\n });\n });\n };\n AWSS3UploadTask.prototype._initializeUploadTask = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, parts, uploadId, uploadId, err_3;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.state = AWSS3UploadTaskState.IN_PROGRESS;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 7, , 8]);\n return [4 /*yield*/, this._isCached()];\n case 2:\n if (!_b.sent()) return [3 /*break*/, 4];\n return [4 /*yield*/, this._findCachedUploadParts()];\n case 3:\n _a = _b.sent(), parts = _a.parts, uploadId = _a.uploadId;\n this.uploadId = uploadId;\n this.queued = this._createParts();\n this._initCachedUploadParts(parts);\n this._startUpload();\n return [3 /*break*/, 6];\n case 4:\n if (!!this.uploadId) return [3 /*break*/, 6];\n return [4 /*yield*/, this._initMultipartUpload()];\n case 5:\n uploadId = _b.sent();\n this.uploadId = uploadId;\n this.queued = this._createParts();\n this._startUpload();\n _b.label = 6;\n case 6: return [3 /*break*/, 8];\n case 7:\n err_3 = _b.sent();\n if (!axios.isCancel(err_3)) {\n logger.error('Error initializing the upload task', err_3);\n }\n return [3 /*break*/, 8];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3UploadTask.prototype.resume = function () {\n if (this.state === AWSS3UploadTaskState.CANCELLED) {\n logger.warn('This task has already been cancelled');\n }\n else if (this.state === AWSS3UploadTaskState.COMPLETED) {\n logger.warn('This task has already been completed');\n }\n else if (this.state === AWSS3UploadTaskState.IN_PROGRESS) {\n logger.warn('Upload task already in progress');\n // first time running resume, find any cached parts on s3 or start a new multipart upload request before\n // starting the upload\n }\n else if (!this.uploadId) {\n this._initializeUploadTask();\n }\n else {\n this._startUpload();\n }\n };\n AWSS3UploadTask.prototype._startUpload = function () {\n this.state = AWSS3UploadTaskState.IN_PROGRESS;\n for (var i = 0; i < this.queueSize; i++) {\n this._startNextPart();\n }\n };\n AWSS3UploadTask.prototype._cancel = function () {\n return __awaiter(this, void 0, void 0, function () {\n var err_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.state === AWSS3UploadTaskState.CANCELLED)) return [3 /*break*/, 1];\n logger.warn('This task has already been cancelled');\n return [2 /*return*/, false];\n case 1:\n if (!(this.state === AWSS3UploadTaskState.COMPLETED)) return [3 /*break*/, 2];\n logger.warn('This task has already been completed');\n return [2 /*return*/, false];\n case 2:\n this.pause();\n this.queued = [];\n this.completedParts = [];\n this.bytesUploaded = 0;\n this.state = AWSS3UploadTaskState.CANCELLED;\n _a.label = 3;\n case 3:\n _a.trys.push([3, 6, , 7]);\n return [4 /*yield*/, this.s3client.send(new AbortMultipartUploadCommand({\n Bucket: this.params.Bucket,\n Key: this.params.Key,\n UploadId: this.uploadId,\n }))];\n case 4:\n _a.sent();\n return [4 /*yield*/, this._removeFromCache()];\n case 5:\n _a.sent();\n return [2 /*return*/, true];\n case 6:\n err_4 = _a.sent();\n logger.error('Error cancelling upload task', err_4);\n return [2 /*return*/, false];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * pause this particular upload task\n **/\n AWSS3UploadTask.prototype.pause = function () {\n var _a;\n if (this.state === AWSS3UploadTaskState.CANCELLED) {\n logger.warn('This task has already been cancelled');\n }\n else if (this.state === AWSS3UploadTaskState.COMPLETED) {\n logger.warn('This task has already been completed');\n }\n else if (this.state === AWSS3UploadTaskState.PAUSED) {\n logger.warn('This task is already paused');\n }\n this.state = AWSS3UploadTaskState.PAUSED;\n // Use axios cancel token to abort the part request immediately\n // Add the inProgress parts back to pending\n var removedInProgressReq = this.inProgress.splice(0, this.inProgress.length);\n removedInProgressReq.forEach(function (req) {\n req.cancel(AWSS3ProviderUploadErrorStrings.UPLOAD_PAUSED_MESSAGE);\n });\n // Put all removed in progress parts back into the queue\n (_a = this.queued).unshift.apply(_a, __spread(removedInProgressReq.map(function (req) { return req.uploadPartInput; })));\n };\n return AWSS3UploadTask;\n}());\nexport { AWSS3UploadTask };\n//# sourceMappingURL=AWSS3UploadTask.js.map","import { Hub } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL } from './StorageConstants';\nexport var byteLength = function (x) {\n if (typeof x === 'string') {\n return x.length;\n }\n else if (isArrayBuffer(x)) {\n return x.byteLength;\n }\n else if (isBlob(x)) {\n return x.size;\n }\n else {\n throw new Error('Cannot determine byte length of ' + x);\n }\n};\nexport var dispatchStorageEvent = function (track, event, attrs, metrics, message) {\n if (track) {\n var data = { attrs: attrs };\n if (metrics) {\n data['metrics'] = metrics;\n }\n Hub.dispatch('storage', {\n event: event,\n data: data,\n message: message,\n }, 'Storage', AMPLIFY_SYMBOL);\n }\n};\nexport var isFile = function (x) {\n return typeof x !== 'undefined' && x instanceof File;\n};\nexport var isBlob = function (x) {\n return typeof x !== 'undefined' && x instanceof Blob;\n};\nvar isArrayBuffer = function (x) {\n return typeof x !== 'undefined' && x instanceof ArrayBuffer;\n};\n//# sourceMappingURL=StorageUtils.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Credentials, Logger, getAmplifyUserAgent, } from '@aws-amplify/core';\nimport { S3Client } from '@aws-sdk/client-s3';\nimport { AxiosHttpHandler } from '../providers/axios-http-handler';\nimport { localTestingStorageEndpoint, SET_CONTENT_LENGTH_HEADER, } from './StorageConstants';\nvar logger = new Logger('S3ClientUtils');\n// placeholder credentials in order to satisfy type requirement, always results in 403 when used\nvar INVALID_CRED = { accessKeyId: '', secretAccessKey: '' };\nexport var getPrefix = function (config) {\n var credentials = config.credentials, level = config.level, customPrefix = config.customPrefix, identityId = config.identityId;\n var resolvedCustomPrefix = customPrefix || {};\n var resolvedIdentityId = identityId || credentials.identityId;\n var privatePath = (resolvedCustomPrefix.private !== undefined\n ? resolvedCustomPrefix.private\n : 'private/') +\n resolvedIdentityId +\n '/';\n var protectedPath = (resolvedCustomPrefix.protected !== undefined\n ? resolvedCustomPrefix.protected\n : 'protected/') +\n resolvedIdentityId +\n '/';\n var publicPath = resolvedCustomPrefix.public !== undefined\n ? resolvedCustomPrefix.public\n : 'public/';\n switch (level) {\n case 'private':\n return privatePath;\n case 'protected':\n return protectedPath;\n default:\n return publicPath;\n }\n};\nexport var createPrefixMiddleware = function (opt, key) { return function (next, _context) { return function (args) { return __awaiter(void 0, void 0, void 0, function () {\n var credentials, cred, prefix, clonedInput, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _a.sent();\n cred = Credentials.shear(credentials);\n prefix = getPrefix(__assign(__assign({}, opt), { credentials: cred }));\n clonedInput = Object.assign({}, args.input);\n if (Object.prototype.hasOwnProperty.call(args.input, 'Key')) {\n clonedInput.Key = prefix + key;\n args.input = clonedInput;\n }\n else if (Object.prototype.hasOwnProperty.call(args.input, 'Prefix')) {\n clonedInput.Prefix = prefix + key;\n args.input = clonedInput;\n }\n result = next(args);\n return [2 /*return*/, result];\n }\n });\n}); }; }; };\nvar isTimeSkewedError = function (err) {\n return err.ServerTime &&\n typeof err.Code === 'string' &&\n err.Code === 'RequestTimeTooSkewed';\n};\n// we want to take the S3Client config in parameter so we can modify it's systemClockOffset\nexport var autoAdjustClockskewMiddleware = function (config) { return function (next, _context) { return function (args) { return __awaiter(void 0, void 0, void 0, function () {\n var err_1, serverDate;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, next(args)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n err_1 = _a.sent();\n if (isTimeSkewedError(err_1)) {\n serverDate = new Date(err_1.ServerTime);\n config.systemClockOffset = serverDate.getTime() - Date.now();\n }\n throw err_1;\n case 3: return [2 /*return*/];\n }\n });\n}); }; }; };\nexport var autoAdjustClockskewMiddlewareOptions = {\n step: 'finalizeRequest',\n name: 'autoAdjustClockskewMiddleware',\n};\nexport var prefixMiddlewareOptions = {\n step: 'initialize',\n name: 'addPrefixMiddleware',\n};\nexport var credentialsProvider = function () { return __awaiter(void 0, void 0, void 0, function () {\n var credentials, cred, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _a.sent();\n if (!credentials)\n return [2 /*return*/, INVALID_CRED];\n cred = Credentials.shear(credentials);\n logger.debug('credentials provider get credentials', cred);\n return [2 /*return*/, cred];\n case 2:\n error_1 = _a.sent();\n logger.warn('credentials provider error', error_1);\n return [2 /*return*/, INVALID_CRED];\n case 3: return [2 /*return*/];\n }\n });\n}); };\nexport var createS3Client = function (config, emitter) {\n var region = config.region, cancelTokenSource = config.cancelTokenSource, dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting, useAccelerateEndpoint = config.useAccelerateEndpoint;\n var localTestingConfig = {};\n if (dangerouslyConnectToHttpEndpointForTesting) {\n localTestingConfig = {\n endpoint: localTestingStorageEndpoint,\n tls: false,\n bucketEndpoint: false,\n forcePathStyle: true,\n };\n }\n var s3client = new S3Client(__assign(__assign({ region: region, \n // Using provider instead of a static credentials, so that if an upload task was in progress, but credentials gets\n // changed or invalidated (e.g user signed out), the subsequent requests will fail.\n credentials: credentialsProvider, customUserAgent: getAmplifyUserAgent() }, localTestingConfig), { requestHandler: new AxiosHttpHandler({}, emitter, cancelTokenSource), useAccelerateEndpoint: useAccelerateEndpoint }));\n s3client.middlewareStack.remove(SET_CONTENT_LENGTH_HEADER);\n return s3client;\n};\n//# sourceMappingURL=S3ClientUtils.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { PutObjectCommand, CreateMultipartUploadCommand, UploadPartCommand, CompleteMultipartUploadCommand, ListPartsCommand, AbortMultipartUploadCommand, } from '@aws-sdk/client-s3';\nimport { SEND_UPLOAD_PROGRESS_EVENT, SEND_DOWNLOAD_PROGRESS_EVENT, } from './axios-http-handler';\nimport * as events from 'events';\nimport { createPrefixMiddleware, prefixMiddlewareOptions, autoAdjustClockskewMiddleware, autoAdjustClockskewMiddlewareOptions, createS3Client, } from '../common/S3ClientUtils';\nvar logger = new Logger('AWSS3ProviderManagedUpload');\nvar AWSS3ProviderManagedUpload = /** @class */ (function () {\n function AWSS3ProviderManagedUpload(params, opts, emitter) {\n // Defaults\n this.minPartSize = 5 * 1024 * 1024; // in MB\n this.queueSize = 4;\n // Data for current upload\n this.body = null;\n this.params = null;\n this.opts = null;\n this.completedParts = [];\n this.uploadId = null;\n // Progress reporting\n this.bytesUploaded = 0;\n this.totalBytesToUpload = 0;\n this.emitter = null;\n this.params = params;\n this.opts = opts;\n this.emitter = emitter;\n this.s3client = this._createNewS3Client(opts, emitter);\n }\n AWSS3ProviderManagedUpload.prototype.upload = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, putObjectCommand, _b, numberOfPartsToUpload, parts, start, error_1;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 10, , 12]);\n _a = this;\n return [4 /*yield*/, this.validateAndSanitizeBody(this.params.Body)];\n case 1:\n _a.body = _c.sent();\n this.totalBytesToUpload = this.byteLength(this.body);\n if (!(this.totalBytesToUpload <= this.minPartSize)) return [3 /*break*/, 2];\n // Multipart upload is not required. Upload the sanitized body as is\n this.params.Body = this.body;\n putObjectCommand = new PutObjectCommand(this.params);\n return [2 /*return*/, this.s3client.send(putObjectCommand)];\n case 2:\n // Step 1: Initiate the multi part upload\n _b = this;\n return [4 /*yield*/, this.createMultiPartUpload()];\n case 3:\n // Step 1: Initiate the multi part upload\n _b.uploadId = _c.sent();\n numberOfPartsToUpload = Math.ceil(this.totalBytesToUpload / this.minPartSize);\n parts = this.createParts();\n start = 0;\n _c.label = 4;\n case 4:\n if (!(start < numberOfPartsToUpload)) return [3 /*break*/, 7];\n // Upload as many as `queueSize` parts simultaneously\n return [4 /*yield*/, this.uploadParts(this.uploadId, parts.slice(start, start + this.queueSize))];\n case 5:\n // Upload as many as `queueSize` parts simultaneously\n _c.sent();\n _c.label = 6;\n case 6:\n start += this.queueSize;\n return [3 /*break*/, 4];\n case 7:\n parts.map(function (part) {\n _this.removeEventListener(part);\n });\n return [4 /*yield*/, this.finishMultiPartUpload(this.uploadId)];\n case 8: \n // Step 3: Finalize the upload such that S3 can recreate the file\n return [2 /*return*/, _c.sent()];\n case 9: return [3 /*break*/, 12];\n case 10:\n error_1 = _c.sent();\n // if any error is thrown, call cleanup\n return [4 /*yield*/, this.cleanup(this.uploadId)];\n case 11:\n // if any error is thrown, call cleanup\n _c.sent();\n logger.error('Error. Cancelling the multipart upload.');\n throw error_1;\n case 12: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.createParts = function () {\n try {\n var parts = [];\n for (var bodyStart = 0; bodyStart < this.totalBytesToUpload;) {\n var bodyEnd = Math.min(bodyStart + this.minPartSize, this.totalBytesToUpload);\n parts.push({\n bodyPart: this.body.slice(bodyStart, bodyEnd),\n partNumber: parts.length + 1,\n emitter: new events.EventEmitter(),\n _lastUploadedBytes: 0,\n });\n bodyStart += this.minPartSize;\n }\n return parts;\n }\n catch (error) {\n logger.error(error);\n throw error;\n }\n };\n AWSS3ProviderManagedUpload.prototype.createMultiPartUpload = function () {\n return __awaiter(this, void 0, void 0, function () {\n var createMultiPartUploadCommand, response, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n createMultiPartUploadCommand = new CreateMultipartUploadCommand(this.params);\n return [4 /*yield*/, this.s3client.send(createMultiPartUploadCommand)];\n case 1:\n response = _a.sent();\n logger.debug(response.UploadId);\n return [2 /*return*/, response.UploadId];\n case 2:\n error_2 = _a.sent();\n logger.error(error_2);\n throw error_2;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @private Not to be extended outside of tests\n * @VisibleFotTesting\n */\n AWSS3ProviderManagedUpload.prototype.uploadParts = function (uploadId, parts) {\n return __awaiter(this, void 0, void 0, function () {\n var allResults, i, error_3;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, Promise.all(parts.map(function (part) { return __awaiter(_this, void 0, void 0, function () {\n var options, _a, Key, Bucket, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, res;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.setupEventListener(part);\n options = { emitter: part.emitter };\n _a = this.params, Key = _a.Key, Bucket = _a.Bucket, SSECustomerAlgorithm = _a.SSECustomerAlgorithm, SSECustomerKey = _a.SSECustomerKey, SSECustomerKeyMD5 = _a.SSECustomerKeyMD5;\n return [4 /*yield*/, this.s3client.send(new UploadPartCommand(__assign(__assign(__assign({ PartNumber: part.partNumber, Body: part.bodyPart, UploadId: uploadId, Key: Key,\n Bucket: Bucket }, (SSECustomerAlgorithm && { SSECustomerAlgorithm: SSECustomerAlgorithm })), (SSECustomerKey && { SSECustomerKey: SSECustomerKey })), (SSECustomerKeyMD5 && { SSECustomerKeyMD5: SSECustomerKeyMD5 }))), options)];\n case 1:\n res = _b.sent();\n return [2 /*return*/, res];\n }\n });\n }); }))];\n case 1:\n allResults = _a.sent();\n // The order of resolved promises is the same as input promise order.\n for (i = 0; i < allResults.length; i++) {\n this.completedParts.push({\n PartNumber: parts[i].partNumber,\n ETag: allResults[i].ETag,\n });\n }\n return [3 /*break*/, 3];\n case 2:\n error_3 = _a.sent();\n logger.error('Error happened while uploading a part. Cancelling the multipart upload');\n throw error_3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.finishMultiPartUpload = function (uploadId) {\n return __awaiter(this, void 0, void 0, function () {\n var input, completeUploadCommand, data, error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n input = {\n Bucket: this.params.Bucket,\n Key: this.params.Key,\n UploadId: uploadId,\n MultipartUpload: { Parts: this.completedParts },\n };\n completeUploadCommand = new CompleteMultipartUploadCommand(input);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.s3client.send(completeUploadCommand)];\n case 2:\n data = _a.sent();\n return [2 /*return*/, data.Key];\n case 3:\n error_4 = _a.sent();\n logger.error('Error happened while finishing the upload.');\n throw error_4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.cleanup = function (uploadId) {\n return __awaiter(this, void 0, void 0, function () {\n var input, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Reset this's state\n this.body = null;\n this.completedParts = [];\n this.bytesUploaded = 0;\n this.totalBytesToUpload = 0;\n input = {\n Bucket: this.params.Bucket,\n Key: this.params.Key,\n UploadId: uploadId,\n };\n return [4 /*yield*/, this.s3client.send(new AbortMultipartUploadCommand(input))];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.s3client.send(new ListPartsCommand(input))];\n case 2:\n data = _a.sent();\n if (data && data.Parts && data.Parts.length > 0) {\n throw new Error('Multipart upload clean up failed.');\n }\n return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.removeEventListener = function (part) {\n part.emitter.removeAllListeners(SEND_UPLOAD_PROGRESS_EVENT);\n part.emitter.removeAllListeners(SEND_DOWNLOAD_PROGRESS_EVENT);\n };\n AWSS3ProviderManagedUpload.prototype.setupEventListener = function (part) {\n var _this = this;\n part.emitter.on(SEND_UPLOAD_PROGRESS_EVENT, function (progress) {\n _this.progressChanged(part.partNumber, progress.loaded - part._lastUploadedBytes);\n part._lastUploadedBytes = progress.loaded;\n });\n };\n AWSS3ProviderManagedUpload.prototype.progressChanged = function (partNumber, incrementalUpdate) {\n this.bytesUploaded += incrementalUpdate;\n this.emitter.emit(SEND_UPLOAD_PROGRESS_EVENT, {\n loaded: this.bytesUploaded,\n total: this.totalBytesToUpload,\n part: partNumber,\n key: this.params.Key,\n });\n };\n AWSS3ProviderManagedUpload.prototype.byteLength = function (input) {\n if (input === null || input === undefined)\n return 0;\n if (typeof input.byteLength === 'number') {\n return input.byteLength;\n }\n else if (typeof input.length === 'number') {\n return input.length;\n }\n else if (typeof input.size === 'number') {\n return input.size;\n }\n else if (typeof input.path === 'string') {\n /* NodeJs Support\n return require('fs').lstatSync(input.path).size;\n */\n }\n else {\n throw new Error('Cannot determine length of ' + input);\n }\n };\n AWSS3ProviderManagedUpload.prototype.validateAndSanitizeBody = function (body) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (this.isGenericObject(body)) {\n // Any javascript object\n return [2 /*return*/, JSON.stringify(body)];\n }\n else {\n // Files, arrayBuffer etc\n return [2 /*return*/, body];\n }\n return [2 /*return*/];\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.isGenericObject = function (body) {\n if (body !== null && typeof body === 'object') {\n try {\n return !(this.byteLength(body) >= 0);\n }\n catch (error) {\n // If we cannot determine the length of the body, consider it\n // as a generic object and upload a stringified version of it\n return true;\n }\n }\n return false;\n };\n AWSS3ProviderManagedUpload.prototype._createNewS3Client = function (config, emitter) {\n var s3client = createS3Client(config, emitter);\n s3client.middlewareStack.add(createPrefixMiddleware(this.opts, this.params.Key), prefixMiddlewareOptions);\n s3client.middlewareStack.add(autoAdjustClockskewMiddleware(s3client.config), autoAdjustClockskewMiddlewareOptions);\n return s3client;\n };\n return AWSS3ProviderManagedUpload;\n}());\nexport { AWSS3ProviderManagedUpload };\n//# sourceMappingURL=AWSS3ProviderManagedUpload.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger, Credentials, Parser, StorageHelper, Hub, } from '@aws-amplify/core';\nimport { GetObjectCommand, DeleteObjectCommand, ListObjectsV2Command, CopyObjectCommand, } from '@aws-sdk/client-s3';\nimport { formatUrl } from '@aws-sdk/util-format-url';\nimport { createRequest } from '@aws-sdk/util-create-request';\nimport { S3RequestPresigner } from '@aws-sdk/s3-request-presigner';\nimport { SEND_DOWNLOAD_PROGRESS_EVENT, SEND_UPLOAD_PROGRESS_EVENT, } from './axios-http-handler';\nimport { StorageErrorStrings } from '../common/StorageErrorStrings';\nimport { dispatchStorageEvent } from '../common/StorageUtils';\nimport { createPrefixMiddleware, prefixMiddlewareOptions, getPrefix, autoAdjustClockskewMiddleware, autoAdjustClockskewMiddlewareOptions, createS3Client, } from '../common/S3ClientUtils';\nimport { AWSS3ProviderManagedUpload } from './AWSS3ProviderManagedUpload';\nimport { AWSS3UploadTask, TaskEvents } from './AWSS3UploadTask';\nimport { UPLOADS_STORAGE_KEY } from '../common/StorageConstants';\nimport * as events from 'events';\nvar logger = new Logger('AWSS3Provider');\nvar DEFAULT_STORAGE_LEVEL = 'public';\nvar DEFAULT_PRESIGN_EXPIRATION = 900;\n/**\n * Provide storage methods to use AWS S3\n */\nvar AWSS3Provider = /** @class */ (function () {\n /**\n * Initialize Storage with AWS configurations\n * @param {Object} config - Configuration object for storage\n */\n function AWSS3Provider(config) {\n var _this = this;\n this._config = config ? config : {};\n this._storage = new StorageHelper().getStorage();\n Hub.listen('auth', function (data) {\n var payload = data.payload;\n if (payload.event === 'signOut' || payload.event === 'signIn') {\n _this._storage.removeItem(UPLOADS_STORAGE_KEY);\n }\n });\n logger.debug('Storage Options', this._config);\n }\n /**\n * get the category of the plugin\n */\n AWSS3Provider.prototype.getCategory = function () {\n return AWSS3Provider.CATEGORY;\n };\n /**\n * get provider name of the plugin\n */\n AWSS3Provider.prototype.getProviderName = function () {\n return AWSS3Provider.PROVIDER_NAME;\n };\n /**\n * Configure Storage part with aws configuration\n * @param {Object} config - Configuration of the Storage\n * @return {Object} - Current configuration\n */\n AWSS3Provider.prototype.configure = function (config) {\n logger.debug('configure Storage', config);\n if (!config)\n return this._config;\n var amplifyConfig = Parser.parseMobilehubConfig(config);\n this._config = Object.assign({}, this._config, amplifyConfig.Storage);\n if (!this._config.bucket) {\n logger.debug('Do not have bucket yet');\n }\n return this._config;\n };\n AWSS3Provider.prototype.startResumableUpload = function (addTaskInput, config) {\n var s3Client = addTaskInput.s3Client, emitter = addTaskInput.emitter, key = addTaskInput.key, file = addTaskInput.file, params = addTaskInput.params;\n var progressCallback = config.progressCallback, completeCallback = config.completeCallback, errorCallback = config.errorCallback, _a = config.track, track = _a === void 0 ? false : _a;\n if (!(file instanceof Blob)) {\n throw new Error(StorageErrorStrings.INVALID_BLOB);\n }\n emitter.on(TaskEvents.UPLOAD_PROGRESS, function (event) {\n if (progressCallback) {\n if (typeof progressCallback === 'function') {\n progressCallback(event);\n }\n else {\n logger.warn('progressCallback should be a function, not a ' +\n typeof progressCallback);\n }\n }\n });\n emitter.on(TaskEvents.UPLOAD_COMPLETE, function (event) {\n if (completeCallback) {\n if (typeof completeCallback === 'function') {\n completeCallback(event);\n }\n else {\n logger.warn('completeCallback should be a function, not a ' +\n typeof completeCallback);\n }\n }\n });\n emitter.on(TaskEvents.ERROR, function (err) {\n if (errorCallback) {\n if (typeof errorCallback === 'function') {\n errorCallback(err);\n }\n else {\n logger.warn('errorCallback should be a function, not a ' + typeof errorCallback);\n }\n }\n });\n // we want to keep this function sync so we defer this promise to AWSS3UploadTask to resolve when it's needed\n // when its doing a final check with _listSingleFile function\n var prefixPromise = Credentials.get().then(function (credentials) {\n var cred = Credentials.shear(credentials);\n return getPrefix(__assign(__assign({}, config), { credentials: cred }));\n });\n var task = new AWSS3UploadTask({\n s3Client: s3Client,\n file: file,\n emitter: emitter,\n level: config.level,\n storage: this._storage,\n params: params,\n prefixPromise: prefixPromise,\n });\n dispatchStorageEvent(track, 'upload', { method: 'put', result: 'success' }, null, \"Upload Task created successfully for \" + key);\n // automatically start the upload task\n task.resume();\n return task;\n };\n /**\n * Copy an object from a source object to a new object within the same bucket. Can optionally copy files across\n * different level or identityId (if source object's level is 'protected').\n *\n * @async\n * @param {S3CopySource} src - Key and optionally access level and identityId of the source object.\n * @param {S3CopyDestination} dest - Key and optionally access level of the destination object.\n * @param {S3ProviderCopyConfig} [config] - Optional configuration for s3 commands.\n * @return {Promise} The key of the copied object.\n */\n AWSS3Provider.prototype.copy = function (src, dest, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, acl, bucket, cacheControl, expires, track, serverSideEncryption, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, SSEKMSKeyId, _a, srcLevel, srcIdentityId, srcKey, _b, destLevel, destKey, srcPrefix, destPrefix, finalSrcKey, finalDestKey, params, s3, error_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _c.sent();\n if (!credentialsOK || !this._isWithCredentials(this._config)) {\n throw new Error(StorageErrorStrings.NO_CREDENTIALS);\n }\n opt = Object.assign({}, this._config, config);\n acl = opt.acl, bucket = opt.bucket, cacheControl = opt.cacheControl, expires = opt.expires, track = opt.track, serverSideEncryption = opt.serverSideEncryption, SSECustomerAlgorithm = opt.SSECustomerAlgorithm, SSECustomerKey = opt.SSECustomerKey, SSECustomerKeyMD5 = opt.SSECustomerKeyMD5, SSEKMSKeyId = opt.SSEKMSKeyId;\n _a = src.level, srcLevel = _a === void 0 ? DEFAULT_STORAGE_LEVEL : _a, srcIdentityId = src.identityId, srcKey = src.key;\n _b = dest.level, destLevel = _b === void 0 ? DEFAULT_STORAGE_LEVEL : _b, destKey = dest.key;\n if (!srcKey || typeof srcKey !== 'string') {\n throw new Error(StorageErrorStrings.NO_SRC_KEY);\n }\n if (!destKey || typeof destKey !== 'string') {\n throw new Error(StorageErrorStrings.NO_DEST_KEY);\n }\n if (srcLevel !== 'protected' && srcIdentityId) {\n logger.warn(\"You may copy files from another user if the source level is \\\"protected\\\", currently it's \" + srcLevel);\n }\n srcPrefix = this._prefix(__assign(__assign(__assign({}, opt), { level: srcLevel }), (srcIdentityId && { identityId: srcIdentityId })));\n destPrefix = this._prefix(__assign(__assign({}, opt), { level: destLevel }));\n finalSrcKey = bucket + \"/\" + srcPrefix + srcKey;\n finalDestKey = \"\" + destPrefix + destKey;\n logger.debug(\"copying \" + finalSrcKey + \" to \" + finalDestKey);\n params = {\n Bucket: bucket,\n CopySource: finalSrcKey,\n Key: finalDestKey,\n // Copies over metadata like contentType as well\n MetadataDirective: 'COPY',\n };\n if (cacheControl)\n params.CacheControl = cacheControl;\n if (expires)\n params.Expires = expires;\n if (serverSideEncryption) {\n params.ServerSideEncryption = serverSideEncryption;\n }\n if (SSECustomerAlgorithm) {\n params.SSECustomerAlgorithm = SSECustomerAlgorithm;\n }\n if (SSECustomerKey) {\n params.SSECustomerKey = SSECustomerKey;\n }\n if (SSECustomerKeyMD5) {\n params.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n }\n if (SSEKMSKeyId) {\n params.SSEKMSKeyId = SSEKMSKeyId;\n }\n if (acl)\n params.ACL = acl;\n s3 = this._createNewS3Client(opt);\n _c.label = 2;\n case 2:\n _c.trys.push([2, 4, , 5]);\n return [4 /*yield*/, s3.send(new CopyObjectCommand(params))];\n case 3:\n _c.sent();\n dispatchStorageEvent(track, 'copy', {\n method: 'copy',\n result: 'success',\n }, null, \"Copy success from \" + srcKey + \" to \" + destKey);\n return [2 /*return*/, {\n key: destKey,\n }];\n case 4:\n error_1 = _c.sent();\n dispatchStorageEvent(track, 'copy', {\n method: 'copy',\n result: 'failed',\n }, null, \"Copy failed from \" + srcKey + \" to \" + destKey);\n throw error_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3Provider.prototype.get = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, download, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, expires, track, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, progressCallback, prefix, final_key, emitter, s3, params, getObjectCommand, response, error_2, signer, request, url, _a, error_3;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _b.sent();\n if (!credentialsOK || !this._isWithCredentials(this._config)) {\n throw new Error(StorageErrorStrings.NO_CREDENTIALS);\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, download = opt.download, cacheControl = opt.cacheControl, contentDisposition = opt.contentDisposition, contentEncoding = opt.contentEncoding, contentLanguage = opt.contentLanguage, contentType = opt.contentType, expires = opt.expires, track = opt.track, SSECustomerAlgorithm = opt.SSECustomerAlgorithm, SSECustomerKey = opt.SSECustomerKey, SSECustomerKeyMD5 = opt.SSECustomerKeyMD5, progressCallback = opt.progressCallback;\n prefix = this._prefix(opt);\n final_key = prefix + key;\n emitter = new events.EventEmitter();\n s3 = this._createNewS3Client(opt, emitter);\n logger.debug('get ' + key + ' from ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n };\n // See: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property\n if (cacheControl)\n params.ResponseCacheControl = cacheControl;\n if (contentDisposition)\n params.ResponseContentDisposition = contentDisposition;\n if (contentEncoding)\n params.ResponseContentEncoding = contentEncoding;\n if (contentLanguage)\n params.ResponseContentLanguage = contentLanguage;\n if (contentType)\n params.ResponseContentType = contentType;\n if (SSECustomerAlgorithm) {\n params.SSECustomerAlgorithm = SSECustomerAlgorithm;\n }\n if (SSECustomerKey) {\n params.SSECustomerKey = SSECustomerKey;\n }\n if (SSECustomerKeyMD5) {\n params.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n }\n if (!(download === true)) return [3 /*break*/, 5];\n getObjectCommand = new GetObjectCommand(params);\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n if (progressCallback) {\n if (typeof progressCallback === 'function') {\n emitter.on(SEND_DOWNLOAD_PROGRESS_EVENT, function (progress) {\n progressCallback(progress);\n });\n }\n else {\n logger.warn('progressCallback should be a function, not a ' +\n typeof progressCallback);\n }\n }\n return [4 /*yield*/, s3.send(getObjectCommand)];\n case 3:\n response = _b.sent();\n emitter.removeAllListeners(SEND_DOWNLOAD_PROGRESS_EVENT);\n dispatchStorageEvent(track, 'download', { method: 'get', result: 'success' }, {\n fileSize: Number(response.Body['size'] || response.Body['length']),\n }, \"Download success for \" + key);\n return [2 /*return*/, response];\n case 4:\n error_2 = _b.sent();\n dispatchStorageEvent(track, 'download', {\n method: 'get',\n result: 'failed',\n }, null, \"Download failed with \" + error_2.message);\n throw error_2;\n case 5:\n _b.trys.push([5, 8, , 9]);\n signer = new S3RequestPresigner(__assign({}, s3.config));\n return [4 /*yield*/, createRequest(s3, new GetObjectCommand(params))];\n case 6:\n request = _b.sent();\n _a = formatUrl;\n return [4 /*yield*/, signer.presign(request, {\n expiresIn: expires || DEFAULT_PRESIGN_EXPIRATION,\n })];\n case 7:\n url = _a.apply(void 0, [_b.sent()]);\n dispatchStorageEvent(track, 'getSignedUrl', { method: 'get', result: 'success' }, null, \"Signed URL: \" + url);\n return [2 /*return*/, url];\n case 8:\n error_3 = _b.sent();\n logger.warn('get signed url error', error_3);\n dispatchStorageEvent(track, 'getSignedUrl', { method: 'get', result: 'failed' }, null, \"Could not get a signed URL for \" + key);\n throw error_3;\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Put a file in S3 bucket specified to configure method\n * @param key - key of the object\n * @param object - File to be put in Amazon S3 bucket\n * @param [config] - Optional configuration for the underlying S3 command\n * @return an instance of AWSS3UploadTask or a promise that resolves to an object with the new object's key on\n * success.\n */\n AWSS3Provider.prototype.put = function (key, object, config) {\n var opt = Object.assign({}, this._config, config);\n var bucket = opt.bucket, track = opt.track, progressCallback = opt.progressCallback, level = opt.level, resumable = opt.resumable;\n var contentType = opt.contentType, contentDisposition = opt.contentDisposition, contentEncoding = opt.contentEncoding, cacheControl = opt.cacheControl, expires = opt.expires, metadata = opt.metadata, tagging = opt.tagging, acl = opt.acl;\n var serverSideEncryption = opt.serverSideEncryption, SSECustomerAlgorithm = opt.SSECustomerAlgorithm, SSECustomerKey = opt.SSECustomerKey, SSECustomerKeyMD5 = opt.SSECustomerKeyMD5, SSEKMSKeyId = opt.SSEKMSKeyId;\n var type = contentType ? contentType : 'binary/octet-stream';\n var params = {\n Bucket: bucket,\n Key: key,\n Body: object,\n ContentType: type,\n };\n if (cacheControl) {\n params.CacheControl = cacheControl;\n }\n if (contentDisposition) {\n params.ContentDisposition = contentDisposition;\n }\n if (contentEncoding) {\n params.ContentEncoding = contentEncoding;\n }\n if (expires) {\n params.Expires = expires;\n }\n if (metadata) {\n params.Metadata = metadata;\n }\n if (tagging) {\n params.Tagging = tagging;\n }\n if (serverSideEncryption) {\n params.ServerSideEncryption = serverSideEncryption;\n }\n if (SSECustomerAlgorithm) {\n params.SSECustomerAlgorithm = SSECustomerAlgorithm;\n }\n if (SSECustomerKey) {\n params.SSECustomerKey = SSECustomerKey;\n }\n if (SSECustomerKeyMD5) {\n params.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n }\n if (SSEKMSKeyId) {\n params.SSEKMSKeyId = SSEKMSKeyId;\n }\n var emitter = new events.EventEmitter();\n var uploader = new AWSS3ProviderManagedUpload(params, opt, emitter);\n if (acl) {\n params.ACL = acl;\n }\n if (resumable === true) {\n var s3Client = this._createNewS3Client(opt);\n // we are using aws sdk middleware to inject the prefix to key, this way we don't have to call\n // this._ensureCredentials() which allows us to make this function sync so we can return non-Promise like UploadTask\n s3Client.middlewareStack.add(createPrefixMiddleware(opt, key), prefixMiddlewareOptions);\n var addTaskInput = {\n bucket: bucket,\n key: key,\n s3Client: s3Client,\n file: object,\n emitter: emitter,\n accessLevel: level,\n params: params,\n };\n // explicitly asserting the type here as Typescript could not infer that resumable is of type true\n return this.startResumableUpload(addTaskInput, config);\n }\n try {\n if (progressCallback) {\n if (typeof progressCallback === 'function') {\n emitter.on(SEND_UPLOAD_PROGRESS_EVENT, function (progress) {\n progressCallback(progress);\n });\n }\n else {\n logger.warn('progressCallback should be a function, not a ' +\n typeof progressCallback);\n }\n }\n return uploader.upload().then(function (response) {\n logger.debug('upload result', response);\n dispatchStorageEvent(track, 'upload', { method: 'put', result: 'success' }, null, \"Upload success for \" + key);\n return { key: key };\n });\n }\n catch (error) {\n logger.warn('error uploading', error);\n dispatchStorageEvent(track, 'upload', { method: 'put', result: 'failed' }, null, \"Error uploading \" + key);\n throw error;\n }\n };\n /**\n * Remove the object for specified key\n * @param {string} key - key of the object\n * @param {S3ProviderRemoveConfig} [config] - Optional configuration for the underlying S3 command\n * @return {Promise} - Promise resolves upon successful removal of the object\n */\n AWSS3Provider.prototype.remove = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, prefix, final_key, s3, params, deleteObjectCommand, response, error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK || !this._isWithCredentials(this._config)) {\n throw new Error(StorageErrorStrings.NO_CREDENTIALS);\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track;\n prefix = this._prefix(opt);\n final_key = prefix + key;\n s3 = this._createNewS3Client(opt);\n logger.debug('remove ' + key + ' from ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n };\n deleteObjectCommand = new DeleteObjectCommand(params);\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, s3.send(deleteObjectCommand)];\n case 3:\n response = _a.sent();\n dispatchStorageEvent(track, 'delete', { method: 'remove', result: 'success' }, null, \"Deleted \" + key + \" successfully\");\n return [2 /*return*/, response];\n case 4:\n error_4 = _a.sent();\n dispatchStorageEvent(track, 'delete', { method: 'remove', result: 'failed' }, null, \"Deletion of \" + key + \" failed with \" + error_4);\n throw error_4;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3Provider.prototype._list = function (params, opt, prefix) {\n return __awaiter(this, void 0, void 0, function () {\n var result, s3, listObjectsV2Command, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n result = {\n contents: [],\n nextToken: '',\n };\n s3 = this._createNewS3Client(opt);\n listObjectsV2Command = new ListObjectsV2Command(__assign({}, params));\n return [4 /*yield*/, s3.send(listObjectsV2Command)];\n case 1:\n response = _a.sent();\n if (response && response.Contents) {\n result.contents = response.Contents.map(function (item) {\n return {\n key: item.Key.substr(prefix.length),\n eTag: item.ETag,\n lastModified: item.LastModified,\n size: item.Size,\n };\n });\n result.nextToken = response.NextContinuationToken;\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n /**\n * List bucket objects relative to the level and prefix specified\n * @param {string} path - the path that contains objects\n * @param {S3ProviderListConfig} [config] - Optional configuration for the underlying S3 command\n * @return {Promise} - Promise resolves to list of keys, eTags, lastModified and file size for\n * all objects in path\n */\n AWSS3Provider.prototype.list = function (path, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, maxKeys, prefix, final_path, list, token, listResult, params, error_5;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK || !this._isWithCredentials(this._config)) {\n throw new Error(StorageErrorStrings.NO_CREDENTIALS);\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track, maxKeys = opt.maxKeys;\n prefix = this._prefix(opt);\n final_path = prefix + path;\n logger.debug('list ' + path + ' from ' + final_path);\n _a.label = 2;\n case 2:\n _a.trys.push([2, 10, , 11]);\n list = [];\n token = void 0;\n listResult = void 0;\n params = {\n Bucket: bucket,\n Prefix: final_path,\n MaxKeys: 1000,\n };\n if (!(maxKeys === 'ALL')) return [3 /*break*/, 7];\n _a.label = 3;\n case 3:\n params.ContinuationToken = token;\n params.MaxKeys = 1000;\n return [4 /*yield*/, this._list(params, opt, prefix)];\n case 4:\n listResult = _a.sent();\n list.push.apply(list, __spread(listResult.contents));\n if (listResult.nextToken)\n token = listResult.nextToken;\n _a.label = 5;\n case 5:\n if (listResult.nextToken) return [3 /*break*/, 3];\n _a.label = 6;\n case 6: return [3 /*break*/, 9];\n case 7:\n maxKeys < 1000 || typeof maxKeys === 'string'\n ? (params.MaxKeys = maxKeys)\n : (params.MaxKeys = 1000);\n return [4 /*yield*/, this._list(params, opt, prefix)];\n case 8:\n listResult = _a.sent();\n list.push.apply(list, __spread(listResult.contents));\n if (maxKeys > 1000)\n logger.warn(\"maxkeys can be from 0 - 1000 or 'ALL'. To list all files you can set maxKeys to 'ALL'.\");\n _a.label = 9;\n case 9:\n dispatchStorageEvent(track, 'list', { method: 'list', result: 'success' }, null, list.length + \" items returned from list operation\");\n logger.debug('list', list);\n return [2 /*return*/, list];\n case 10:\n error_5 = _a.sent();\n logger.warn('list error', error_5);\n dispatchStorageEvent(track, 'list', { method: 'list', result: 'failed' }, null, \"Listing items failed: \" + error_5.message);\n throw error_5;\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3Provider.prototype._ensureCredentials = function () {\n return __awaiter(this, void 0, void 0, function () {\n var credentials, cred, error_6;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, Credentials.get()];\n case 1:\n credentials = _a.sent();\n if (!credentials)\n return [2 /*return*/, false];\n cred = Credentials.shear(credentials);\n logger.debug('set credentials for storage', cred);\n this._config.credentials = cred;\n return [2 /*return*/, true];\n case 2:\n error_6 = _a.sent();\n logger.warn('ensure credentials error', error_6);\n return [2 /*return*/, false];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3Provider.prototype._isWithCredentials = function (config) {\n return typeof config === 'object' && config.hasOwnProperty('credentials');\n };\n AWSS3Provider.prototype._prefix = function (config) {\n var credentials = config.credentials, level = config.level;\n var customPrefix = config.customPrefix || {};\n var identityId = config.identityId || credentials.identityId;\n var privatePath = (customPrefix.private !== undefined ? customPrefix.private : 'private/') +\n identityId +\n '/';\n var protectedPath = (customPrefix.protected !== undefined\n ? customPrefix.protected\n : 'protected/') +\n identityId +\n '/';\n var publicPath = customPrefix.public !== undefined ? customPrefix.public : 'public/';\n switch (level) {\n case 'private':\n return privatePath;\n case 'protected':\n return protectedPath;\n default:\n return publicPath;\n }\n };\n /**\n * Creates an S3 client with new V3 aws sdk\n */\n AWSS3Provider.prototype._createNewS3Client = function (config, emitter) {\n var s3client = createS3Client(config, emitter);\n s3client.middlewareStack.add(autoAdjustClockskewMiddleware(s3client.config), autoAdjustClockskewMiddlewareOptions);\n return s3client;\n };\n AWSS3Provider.CATEGORY = 'Storage';\n AWSS3Provider.PROVIDER_NAME = 'AWSS3';\n return AWSS3Provider;\n}());\nexport { AWSS3Provider };\n/**\n * @deprecated use named import\n */\nexport default AWSS3Provider;\n//# sourceMappingURL=AWSS3Provider.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { ConsoleLogger as Logger, Parser } from '@aws-amplify/core';\nimport { AWSS3Provider } from './providers';\nimport axios from 'axios';\nimport { AWSS3UploadTask } from './providers/AWSS3UploadTask';\nvar logger = new Logger('StorageClass');\nvar DEFAULT_PROVIDER = 'AWSS3';\n/**\n * Provide storage methods to use AWS S3\n */\nvar Storage = /** @class */ (function () {\n /**\n * Initialize Storage\n * @param {Object} config - Configuration object for storage\n */\n function Storage() {\n this._config = {};\n this._pluggables = [];\n this._cancelTokenSourceMap = new WeakMap();\n logger.debug('Storage Options', this._config);\n this.get = this.get.bind(this);\n this.put = this.put.bind(this);\n this.remove = this.remove.bind(this);\n this.list = this.list.bind(this);\n }\n Storage.prototype.getModuleName = function () {\n return 'Storage';\n };\n /**\n * add plugin into Storage category\n * @param {Object} pluggable - an instance of the plugin\n */\n Storage.prototype.addPluggable = function (pluggable) {\n if (pluggable && pluggable.getCategory() === 'Storage') {\n this._pluggables.push(pluggable);\n var config = {};\n config = pluggable.configure(this._config[pluggable.getProviderName()]);\n return config;\n }\n };\n /**\n * Get the plugin object\n * @param providerName - the name of the plugin\n */\n Storage.prototype.getPluggable = function (providerName) {\n var pluggable = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n if (pluggable === undefined) {\n logger.debug('No plugin found with providerName', providerName);\n return null;\n }\n else\n return pluggable;\n };\n /**\n * Remove the plugin object\n * @param providerName - the name of the plugin\n */\n Storage.prototype.removePluggable = function (providerName) {\n this._pluggables = this._pluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n return;\n };\n /**\n * Configure Storage\n * @param {Object} config - Configuration object for storage\n * @return {Object} - Current configuration\n */\n Storage.prototype.configure = function (config) {\n var _this = this;\n logger.debug('configure Storage');\n if (!config)\n return this._config;\n var amplifyConfig = Parser.parseMobilehubConfig(config);\n var storageKeysFromConfig = Object.keys(amplifyConfig.Storage);\n var storageArrayKeys = [\n 'bucket',\n 'region',\n 'level',\n 'track',\n 'customPrefix',\n 'serverSideEncryption',\n 'SSECustomerAlgorithm',\n 'SSECustomerKey',\n 'SSECustomerKeyMD5',\n 'SSEKMSKeyId',\n ];\n var isInStorageArrayKeys = function (k) {\n return storageArrayKeys.some(function (x) { return x === k; });\n };\n var checkConfigKeysFromArray = function (k) {\n return k.find(function (k) { return isInStorageArrayKeys(k); });\n };\n if (storageKeysFromConfig &&\n checkConfigKeysFromArray(storageKeysFromConfig) &&\n !amplifyConfig.Storage[DEFAULT_PROVIDER]) {\n amplifyConfig.Storage[DEFAULT_PROVIDER] = {};\n }\n Object.entries(amplifyConfig.Storage).map(function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n if (key && isInStorageArrayKeys(key) && value !== undefined) {\n amplifyConfig.Storage[DEFAULT_PROVIDER][key] = value;\n delete amplifyConfig.Storage[key];\n }\n });\n // only update new values for each provider\n Object.keys(amplifyConfig.Storage).forEach(function (providerName) {\n if (typeof amplifyConfig.Storage[providerName] !== 'string') {\n _this._config[providerName] = __assign(__assign({}, _this._config[providerName]), amplifyConfig.Storage[providerName]);\n }\n });\n this._pluggables.forEach(function (pluggable) {\n pluggable.configure(_this._config[pluggable.getProviderName()]);\n });\n if (this._pluggables.length === 0) {\n this.addPluggable(new AWSS3Provider());\n }\n return this._config;\n };\n Storage.prototype.getCancellableTokenSource = function () {\n return axios.CancelToken.source();\n };\n Storage.prototype.updateRequestToBeCancellable = function (request, cancelTokenSource) {\n this._cancelTokenSourceMap.set(request, cancelTokenSource);\n };\n Storage.prototype.isUploadTask = function (x) {\n return (typeof x !== 'undefined' &&\n typeof x['pause'] === 'function' &&\n typeof x['resume'] === 'function');\n };\n Storage.prototype.cancel = function (request, message) {\n if (request instanceof AWSS3UploadTask) {\n return request._cancel();\n }\n var cancelTokenSource = this._cancelTokenSourceMap.get(request);\n if (cancelTokenSource) {\n cancelTokenSource.cancel(message);\n }\n else {\n logger.debug('The request does not map to any cancel token');\n }\n };\n Storage.prototype.copy = function (src, dest, config) {\n var provider = (config === null || config === void 0 ? void 0 : config.provider) || DEFAULT_PROVIDER;\n var prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n return Promise.reject('No plugin found in Storage for the provider');\n }\n var cancelTokenSource = this.getCancellableTokenSource();\n if (typeof prov.copy !== 'function') {\n return Promise.reject(\".copy is not implemented on provider \" + prov.getProviderName());\n }\n var responsePromise = prov.copy(src, dest, __assign(__assign({}, config), { cancelTokenSource: cancelTokenSource }));\n this.updateRequestToBeCancellable(responsePromise, cancelTokenSource);\n return responsePromise;\n };\n Storage.prototype.get = function (key, config) {\n var provider = (config === null || config === void 0 ? void 0 : config.provider) || DEFAULT_PROVIDER;\n var prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n return Promise.reject('No plugin found in Storage for the provider');\n }\n var cancelTokenSource = this.getCancellableTokenSource();\n var responsePromise = prov.get(key, __assign(__assign({}, config), { cancelTokenSource: cancelTokenSource }));\n this.updateRequestToBeCancellable(responsePromise, cancelTokenSource);\n return responsePromise;\n };\n Storage.prototype.isCancelError = function (error) {\n return axios.isCancel(error);\n };\n Storage.prototype.put = function (key, object, config) {\n var provider = (config === null || config === void 0 ? void 0 : config.provider) || DEFAULT_PROVIDER;\n var prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n return Promise.reject('No plugin found in Storage for the provider');\n }\n var cancelTokenSource = this.getCancellableTokenSource();\n var response = prov.put(key, object, __assign(__assign({}, config), { cancelTokenSource: cancelTokenSource }));\n if (!this.isUploadTask(response)) {\n this.updateRequestToBeCancellable(response, cancelTokenSource);\n }\n return response;\n };\n Storage.prototype.remove = function (key, config) {\n var provider = (config === null || config === void 0 ? void 0 : config.provider) || DEFAULT_PROVIDER;\n var prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n return Promise.reject('No plugin found in Storage for the provider');\n }\n return prov.remove(key, config);\n };\n Storage.prototype.list = function (path, config) {\n var provider = (config === null || config === void 0 ? void 0 : config.provider) || DEFAULT_PROVIDER;\n var prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n return Promise.reject('No plugin found in Storage for the provider');\n }\n return prov.list(path, config);\n };\n return Storage;\n}());\nexport { Storage };\n/**\n * @deprecated use named import\n */\nexport default Storage;\n//# sourceMappingURL=Storage.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Storage as StorageClass } from './Storage';\nimport { Amplify, ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Storage');\nvar _instance = null;\nvar getInstance = function () {\n if (_instance) {\n return _instance;\n }\n logger.debug('Create Storage Instance, debug');\n _instance = new StorageClass();\n _instance.vault = new StorageClass();\n var old_configure = _instance.configure;\n _instance.configure = function (options) {\n logger.debug('storage configure called');\n var vaultConfig = __assign({}, old_configure.call(_instance, options));\n // set level private for each provider for the vault\n Object.keys(vaultConfig).forEach(function (providerName) {\n if (typeof vaultConfig[providerName] !== 'string') {\n vaultConfig[providerName] = __assign(__assign({}, vaultConfig[providerName]), { level: 'private' });\n }\n });\n logger.debug('storage vault configure called');\n _instance.vault.configure(vaultConfig);\n };\n return _instance;\n};\nexport var Storage = getInstance();\nAmplify.register(Storage);\n/**\n * @deprecated use named import\n */\nexport default Storage;\nexport { StorageClass };\nexport * from './providers';\n//# sourceMappingURL=index.js.map","!function(t,_){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=_():\"function\"==typeof define&&define.amd?define(\"aws_amplify_ui\",[],_):\"object\"==typeof exports?exports.aws_amplify_ui=_():t.aws_amplify_ui=_()}(this,(function(){return function(t){var _={};function n(o){if(_[o])return _[o].exports;var e=_[o]={i:o,l:!1,exports:{}};return t[o].call(e.exports,e,e.exports,n),e.l=!0,e.exports}return n.m=t,n.c=_,n.d=function(t,_,o){n.o(t,_)||Object.defineProperty(t,_,{enumerable:!0,get:o})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,_){if(1&_&&(t=n(t)),8&_)return t;if(4&_&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&_&&\"string\"!=typeof t)for(var e in t)n.d(o,e,function(_){return t[_]}.bind(null,e));return o},n.n=function(t){var _=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(_,\"a\",_),_},n.o=function(t,_){return Object.prototype.hasOwnProperty.call(t,_)},n.p=\"\",n(n.s=0)}([function(t,_,n){\"use strict\";function o(t){for(var n in t)_.hasOwnProperty(n)||(_[n]=t[n])}Object.defineProperty(_,\"__esModule\",{value:!0}),o(n(1)),o(n(2)),o(n(3)),o(n(4)),o(n(5)),o(n(6)),o(n(7)),o(n(8)),o(n(9)),o(n(10)),o(n(11)),o(n(12)),o(n(13))},function(t,_,n){t.exports={a:\"Anchor__a___1_Iz8\"}},function(t,_,n){t.exports={button:\"Button__button___vS7Mv\",signInButton:\"Button__signInButton___3bUH-\",googleSignInButton:\"Button__googleSignInButton___1YiCu\",signInButtonIcon:\"Button__signInButtonIcon___ihN75\",auth0SignInButton:\"Button__auth0SignInButton___znnCj\",facebookSignInButton:\"Button__facebookSignInButton___34Txh\",amazonSignInButton:\"Button__amazonSignInButton___2EMtl\",oAuthSignInButton:\"Button__oAuthSignInButton___3UGOl\",signInButtonContent:\"Button__signInButtonContent___xqTXJ\"}},function(t,_,n){t.exports={formContainer:\"Form__formContainer___1GA3x\",formSection:\"Form__formSection___1PPvW\",formField:\"Form__formField___38Ikl\",formRow:\"Form__formRow___2mwRs\"}},function(t,_,n){t.exports={hint:\"Hint__hint___2XngB\"}},function(t,_,n){t.exports={input:\"Input__input___3e_bf\",inputLabel:\"Input__inputLabel___3VF0S\",label:\"Input__label___23sO8\",radio:\"Input__radio___2hllK\"}},function(t,_,n){t.exports={navBar:\"Nav__navBar___xtCFA\",navRight:\"Nav__navRight___1QG2J\",nav:\"Nav__nav___2Dx2Y\",navItem:\"Nav__navItem___1LtFQ\"}},function(t,_,n){t.exports={photoPickerButton:\"PhotoPicker__photoPickerButton___2XdVn\",photoPlaceholder:\"PhotoPicker__photoPlaceholder___2JXO4\",photoPlaceholderIcon:\"PhotoPicker__photoPlaceholderIcon___3Et71\"}},function(t,_,n){t.exports={container:\"Section__container___3YYTG\",actionRow:\"Section__actionRow___2LWSU\",sectionHeader:\"Section__sectionHeader___2djyg\",sectionHeaderHint:\"Section__sectionHeaderHint___3Wxdc\",sectionBody:\"Section__sectionBody___ihqqd\",sectionHeaderContent:\"Section__sectionHeaderContent___1UCqa\",sectionFooter:\"Section__sectionFooter___1T54C\",sectionFooterPrimaryContent:\"Section__sectionFooterPrimaryContent___2r9ZX\",sectionFooterSecondaryContent:\"Section__sectionFooterSecondaryContent___Nj41Q\"}},function(t,_,n){t.exports={selectInput:\"SelectInput__selectInput___3efO4\"}},function(t,_,n){t.exports={strike:\"Strike__strike___1XV1b\",strikeContent:\"Strike__strikeContent___10gLb\"}},function(t,_,n){t.exports={toast:\"Toast__toast___XXr3v\",toastClose:\"Toast__toastClose___18lU4\"}},function(t,_,n){t.exports={totpQrcode:\"Totp__totpQrcode___1crLx\"}},function(t,_,n){t.exports={sumerianSceneContainer:\"XR__sumerianSceneContainer___3nVMt\",sumerianScene:\"XR__sumerianScene___2Tt7-\",loadingOverlay:\"XR__loadingOverlay___IbqcI\",loadingContainer:\"XR__loadingContainer___2Itxb\",loadingLogo:\"XR__loadingLogo___Ub7xQ\",loadingSceneName:\"XR__loadingSceneName___3__ne\",loadingBar:\"XR__loadingBar___2vcke\",loadingBarFill:\"XR__loadingBarFill___3M-D9\",sceneErrorText:\"XR__sceneErrorText___2y0tp\",sceneBar:\"XR__sceneBar___2ShrP\",sceneName:\"XR__sceneName___1ApHr\",sceneActions:\"XR__sceneActions___7plGs\",actionButton:\"XR__actionButton___2poIM\",tooltip:\"XR__tooltip___UYyhn\",actionIcon:\"XR__actionIcon___2qnd2\",autoShowTooltip:\"XR__autoShowTooltip___V1QH7\"}}])}));\n//# sourceMappingURL=aws-amplify-ui.js.map"],"names":["CONTROL_MSG","ConnectionState","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","logger","AbstractPubSubProvider","options","_config","configure","config","debug","getProviderName","getCategory","defineProperty","get","enumerable","configurable","MESSAGE_TYPES","SUBSCRIPTION_STATUS","SOCKET_STATUS","ReachabilityMonitor","Reachability","networkMonitor","CONNECTION_CHANGE","KEEP_ALIVE_MISSED","keepAliveState","KEEP_ALIVE","CONNECTION_ESTABLISHED","connectionState","CONNECTION_FAILED","intendedConnectionState","CLOSING_CONNECTION","OPENING_CONNECTION","CLOSED","ONLINE","networkState","OFFLINE","ConnectionStateMonitor","_this","_networkMonitoringSubscription","undefined","_linkedConnectionState","_linkedConnectionStateObservable","connectionStateObserver","next","_linkedConnectionStateObserver","enableNetworkMonitoring","subscribe","_a","online","record","disableNetworkMonitoring","unsubscribe","previous","map","value","connectionStatesTranslator","filter","current","toInclude","statusUpdates","newSocketStatus","ConnectedPendingNetwork","ConnectedPendingDisconnect","ConnectionDisruptedPendingNetwork","ConnectionDisrupted","ConnectedPendingKeepAlive","Connecting","Disconnected","Connected","MAX_DELAY_MS","NON_RETRYABLE_CODES","CONNECTION_STATE_CHANGE","AMPLIFY_SYMBOL","Symbol","for","AWS_APPSYNC_REALTIME_HEADERS","accept","CONNECTION_INIT_TIMEOUT","START_ACK_TIMEOUT","DEFAULT_KEEP_ALIVE_TIMEOUT","DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","push","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","mqttTopicMatch","topic","filterArray","split","topicArray","left","right","ClientsQueue","promises","Map","clientId","clientFactory","cachedPromise","newPromise","set","from","keys","remove","delete","dispatchPubSubEvent","event","data","message","Hub","dispatch","topicSymbol","MqttOverWSProvider","_super","uuid","_clientsQueue","connectionStateMonitor","_topicObservers","_clientIdObservers","connectionStateObservable","connectionStateChange","provider","aws_pubsub_endpoint","aws_appsync_dangerously_connect_to_http_endpoint_for_testing","getTopicForValue","onDisconnect","errorCode","args","warn","JSON","stringify","topicsToDelete_1","clientIdObservers","forEach","observer","error","observerForTopic","observerTopic","size","newClient","url","client","_b","onMessageArrived","destinationName","msg","payloadString","_onMessage","onConnectionLost","connect","useSSL","isSSLEnabled","mqttVersion","onSuccess","onFailure","clientsQueue","disconnect","isConnected","publish","topics","targetTopics","concat","endpoint","join","send","matchedTopicObservers_1","parsedMessage_1","parse","observersForTopic","Set","add","observersForClientId","e_1","_c","__read","o","m","r","ar","__spread","AWSAppSyncProvider","_topicClient","_topicAlias","Error","_cleanUp","topicsForClient","entries","c","_cleanUpForTopic","has","obs","closed","mqttConnections","newSubscriptions","newAliases","alias","reduce","acc","elem","connectionInfoForTopic","find","all","err_1","_d","complete","values","some","obj","origKey","val","dispatchApiEvent","standardDomainPattern","customDomainPath","AWSAppSyncRealTimeProvider","socketStatus","keepAliveTimeout","subscriptionObserverMap","promiseArray","getNewWebSocket","protocol","WebSocket","_topics","_msg","_options","isCustomDomain","match","appSyncGraphqlEndpoint","subscriptionId_1","_startSubscriptionWithAWSAppSyncRealTime","subscriptionId","catch","err","errors","GraphQLError","REALTIME_SUBSCRIPTION_INIT_ERROR","subscriptionState","_waitForSubscriptionToBeConnected","CONNECTED","_sendUnsubscriptionMessage","_removeSubscriptionObserver","authenticationType","query","variables","apiKey","region","graphql_headers","_e","additionalHeaders","dataString","headerObj","_f","_g","subscriptionMessage","stringToAWSRealTime","err_2","subscriptionFailedCallback_1","_h","subscriptionFailedCallback","subscriptionReadyCallback","_j","_k","PENDING","startAckTimeoutId","_awsRealTimeHeaderBasedAuth","payload","canonicalUri","userAgent","id","extensions","authorization","type","GQL_START","_initializeWebSocketConnection","setTimeout","_timeoutStartSubscriptionAck","awsRealTimeSocket","subscriptionObserver","res","rej","readyState","OPEN","READY","unsubscribeMessage","GQL_STOP","_closeSocketIfRequired","bind","bufferedAmount","keepAliveTimeoutId","clearTimeout","keepAliveAlertTimeoutId","tempSocket","onclose","onerror","close","_handleIncomingSubscriptionMessage","GQL_DATA","GQL_START_ACK","SUBSCRIPTION_ACK","GQL_CONNECTION_KEEP_ALIVE","_errorDisconnect","TIMEOUT_DISCONNECT","GQL_ERROR","FAILED","clear","headerString","headerQs","payloadQs","discoverableEndpoint","awsRealTimeUrl","err_3","CONNECTING","toString","replace","_initializeRetryableHandshake","_initializeHandshake","err_4","errorType","newSocket","onopen","ackOk_1","reason","onmessage","connectionTimeoutMs","GQL_CONNECTION_ACK","CONNECTION_CLOSED","GQL_CONNECTION_ERROR","gqlInit","GQL_CONNECTION_INIT","checkAckOk_1","ackOk","includes","headerHandler","handler","host","API_KEY","_awsRealTimeApiKeyHeader","AWS_IAM","_awsRealTimeIAMHeader","OPENID_CONNECT","_awsRealTimeOPENIDHeader","AMAZON_COGNITO_USER_POOLS","_awsRealTimeCUPHeader","AWS_LAMBDA","_customAuthHeader","session","currentSession","Authorization","getAccessToken","getJwtToken","token","federatedInfo","currentUser","getItem","currentAuthenticatedUser","dt","dtStr","Date","toISOString","endpointInfo","credentialsOK","creds","request","signed_params","service","_ensureCredentials","Credentials","credentials","secretAccessKey","accessKeyId","sessionToken","secret_key","access_key","session_token","method","headers","Signer","sign","cred","shear","isNode","PubSubClass","_pluggables","_awsAppSyncProvider","_awsAppSyncRealTimeProvider","getModuleName","opt","PubSub","pluggable","addPluggable","removePluggable","providerName","getProviderByName","awsAppSyncProvider","awsAppSyncRealTimeProvider","getProviders","ssr","providers","observables","observable","subscriptions","start","console","subscription","Amplify","register","v1","v4","module","exports","byteToHex","substr","bytesToUuid","buf","offset","bth","getRandomValues","crypto","window","msCrypto","rnds8","Uint8Array","rnds","Math","random","_nodeId","_clockseq","rng","_lastMSecs","_lastNSecs","node","clockseq","seedBytes","msecs","getTime","nsecs","tl","tmh","ii","StorageErrorStrings","AWSS3ProviderMultipartCopierErrors","AWSS3ProviderUploadErrorStrings","__values","SEND_UPLOAD_PROGRESS_EVENT","SEND_DOWNLOAD_PROGRESS_EVENT","isBlob","Blob","hasErrorResponse","response","status","normalizeHeaders","normalizedName","k","toUpperCase","e_1_1","return","reactNativeRequestTransformer","transformRequest","AxiosHttpHandler","httpOptions","emitter","cancelTokenSource","destroy","handle","requestTimeoutInMs","requestTimeout","path","queryString","port","hostname","axiosRequest","key","toLowerCase","onUploadProgress","emit","onDownloadProgress","cancelToken","responseType","Platform","isReactNative","raceOfPromises","statusCode","UPLOAD_PAUSED_MESSAGE","race","timeoutInMs","timeoutError","name","AWSS3UploadTaskState","TaskEvents","SET_CONTENT_LENGTH_HEADER","localTestingStorageEndpoint","UPLOADS_STORAGE_KEY","byteLength","x","isArrayBuffer","dispatchStorageEvent","track","attrs","metrics","isFile","File","ArrayBuffer","INVALID_CRED","getPrefix","level","customPrefix","identityId","resolvedCustomPrefix","resolvedIdentityId","privatePath","private","protectedPath","protected","publicPath","public","createPrefixMiddleware","_context","prefix","clonedInput","input","Key","Prefix","isTimeSkewedError","ServerTime","Code","autoAdjustClockskewMiddleware","serverDate","systemClockOffset","now","autoAdjustClockskewMiddlewareOptions","prefixMiddlewareOptions","credentialsProvider","error_1","createS3Client","dangerouslyConnectToHttpEndpointForTesting","useAccelerateEndpoint","localTestingConfig","tls","bucketEndpoint","forcePathStyle","s3client","S3Client","customUserAgent","requestHandler","middlewareStack","AWSS3ProviderManagedUpload","params","opts","minPartSize","queueSize","completedParts","uploadId","bytesUploaded","totalBytesToUpload","_createNewS3Client","upload","putObjectCommand","numberOfPartsToUpload","parts","validateAndSanitizeBody","Body","PutObjectCommand","createMultiPartUpload","ceil","createParts","uploadParts","slice","part","removeEventListener","finishMultiPartUpload","cleanup","bodyStart","bodyEnd","min","bodyPart","partNumber","events","EventEmitter","_lastUploadedBytes","createMultiPartUploadCommand","error_2","CreateMultipartUploadCommand","UploadId","allResults","error_3","Bucket","SSECustomerAlgorithm","SSECustomerKey","SSECustomerKeyMD5","setupEventListener","UploadPartCommand","PartNumber","ETag","completeUploadCommand","error_4","MultipartUpload","Parts","CompleteMultipartUploadCommand","AbortMultipartUploadCommand","ListPartsCommand","removeAllListeners","on","progress","progressChanged","loaded","incrementalUpdate","total","isGenericObject","MAX_PARTS","PART_SIZE","DEFAULT_QUEUE_SIZE","comparePartNumber","a","AWSS3UploadTask","s3Client","file","storage","prefixPromise","partSize","inProgress","queued","totalBytes","state","INIT","storageSync","fileId","_getFileId","_validateParams","ERROR","IN_PROGRESS","_listSingleFile","bucket","listObjectRes","Contents","ListObjectsV2Command","lastModified","_findCachedUploadParts","uploadRequests","cachedUploadFileData","listPartsOutput","_listCachedUploadTasks","lastTouched","setItem","_emitEvent","tasks","_cache","fileMetadata","_isCached","_removeFromCache","_onPartUploadCompletion","eTag","chunk","UPLOAD_PROGRESS","job","uploadPartInput","PAUSED","_startNextPart","_isDone","_completeUpload","sort","_verifyFileSize","UPLOAD_COMPLETE","COMPLETED","_makeUploadPartRequest","log","CANCELLED","pause","source","nextPart","shift","s3Request","cancel","valid","Boolean","Size","_createParts","_initCachedUploadParts","cachedParts","uploadedPartNumSet","_initMultipartUpload","fileName","_initializeUploadTask","_startUpload","resume","_cancel","removedInProgressReq","splice","req","unshift","DEFAULT_STORAGE_LEVEL","DEFAULT_PRESIGN_EXPIRATION","AWSS3Provider","_storage","StorageHelper","getStorage","listen","removeItem","CATEGORY","PROVIDER_NAME","amplifyConfig","Parser","parseMobilehubConfig","Storage","startResumableUpload","addTaskInput","progressCallback","completeCallback","errorCallback","INVALID_BLOB","task","copy","src","dest","acl","cacheControl","expires","serverSideEncryption","SSEKMSKeyId","srcLevel","srcIdentityId","srcKey","destLevel","destKey","srcPrefix","destPrefix","finalSrcKey","finalDestKey","s3","_isWithCredentials","NO_CREDENTIALS","NO_SRC_KEY","NO_DEST_KEY","_prefix","CopySource","MetadataDirective","CacheControl","Expires","ServerSideEncryption","ACL","CopyObjectCommand","download","contentDisposition","contentEncoding","contentLanguage","contentType","final_key","getObjectCommand","signer","ResponseCacheControl","ResponseContentDisposition","ResponseContentEncoding","ResponseContentLanguage","ResponseContentType","GetObjectCommand","fileSize","Number","presign","expiresIn","put","object","resumable","metadata","tagging","ContentType","ContentDisposition","ContentEncoding","Metadata","Tagging","uploader","accessLevel","deleteObjectCommand","DeleteObjectCommand","_list","listObjectsV2Command","contents","nextToken","item","LastModified","NextContinuationToken","list","maxKeys","final_path","listResult","error_5","MaxKeys","ContinuationToken","error_6","DEFAULT_PROVIDER","_cancelTokenSourceMap","WeakMap","getPluggable","storageKeysFromConfig","storageArrayKeys","isInStorageArrayKeys","checkConfigKeysFromArray","getCancellableTokenSource","updateRequestToBeCancellable","isUploadTask","prov","responsePromise","isCancelError","_instance","getInstance","vault","old_configure","vaultConfig","l","toStringTag","__esModule","default","button","signInButton","googleSignInButton","signInButtonIcon","auth0SignInButton","facebookSignInButton","amazonSignInButton","oAuthSignInButton","signInButtonContent","formContainer","formSection","formField","formRow","hint","inputLabel","radio","navBar","navRight","nav","navItem","photoPickerButton","photoPlaceholder","photoPlaceholderIcon","container","actionRow","sectionHeader","sectionHeaderHint","sectionBody","sectionHeaderContent","sectionFooter","sectionFooterPrimaryContent","sectionFooterSecondaryContent","selectInput","strike","strikeContent","toast","toastClose","totpQrcode","sumerianSceneContainer","sumerianScene","loadingOverlay","loadingContainer","loadingLogo","loadingSceneName","loadingBar","loadingBarFill","sceneErrorText","sceneBar","sceneName","sceneActions","actionButton","tooltip","actionIcon","autoShowTooltip"],"sourceRoot":""}