{"version":3,"file":"popper.js","mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACC,WAAUA,MAAM,EAAEC,OAAO,EAAE;EAC3B,KAA4D,GAAGE,MAAM,CAACD,OAAO,GAAGD,OAAO,CAAC,CAAC,GACzF,CAC2B;AAC5B,CAAC,EAAC,IAAI,EAAG,YAAY;EAAE,YAAY;;EAEnC,IAAIM,SAAS,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAI,OAAOC,QAAQ,KAAK,WAAW,IAAI,OAAOC,SAAS,KAAK,WAAW;EAEpH,IAAIC,eAAe,GAAG,YAAY;IAChC,IAAIC,qBAAqB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;IAC1D,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,qBAAqB,CAACE,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACxD,IAAIN,SAAS,IAAIG,SAAS,CAACK,SAAS,CAACC,OAAO,CAACJ,qBAAqB,CAACC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QAC3E,OAAO,CAAC;MACV;IACF;IACA,OAAO,CAAC;EACV,CAAC,CAAC,CAAC;EAEH,SAASI,iBAAiBA,CAACC,EAAE,EAAE;IAC7B,IAAIC,MAAM,GAAG,KAAK;IAClB,OAAO,YAAY;MACjB,IAAIA,MAAM,EAAE;QACV;MACF;MACAA,MAAM,GAAG,IAAI;MACbX,MAAM,CAACY,OAAO,CAACC,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,YAAY;QACxCH,MAAM,GAAG,KAAK;QACdD,EAAE,CAAC,CAAC;MACN,CAAC,CAAC;IACJ,CAAC;EACH;EAEA,SAASK,YAAYA,CAACL,EAAE,EAAE;IACxB,IAAIM,SAAS,GAAG,KAAK;IACrB,OAAO,YAAY;MACjB,IAAI,CAACA,SAAS,EAAE;QACdA,SAAS,GAAG,IAAI;QAChBC,UAAU,CAAC,YAAY;UACrBD,SAAS,GAAG,KAAK;UACjBN,EAAE,CAAC,CAAC;QACN,CAAC,EAAEP,eAAe,CAAC;MACrB;IACF,CAAC;EACH;EAEA,IAAIe,kBAAkB,GAAGnB,SAAS,IAAIC,MAAM,CAACY,OAAO;;EAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAIO,QAAQ,GAAGD,kBAAkB,GAAGT,iBAAiB,GAAGM,YAAY;;EAEpE;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASK,UAAUA,CAACC,eAAe,EAAE;IACnC,IAAIC,OAAO,GAAG,CAAC,CAAC;IAChB,OAAOD,eAAe,IAAIC,OAAO,CAACC,QAAQ,CAACC,IAAI,CAACH,eAAe,CAAC,KAAK,mBAAmB;EAC1F;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASI,wBAAwBA,CAACC,OAAO,EAAEC,QAAQ,EAAE;IACnD,IAAID,OAAO,CAACE,QAAQ,KAAK,CAAC,EAAE;MAC1B,OAAO,EAAE;IACX;IACA;IACA,IAAI5B,MAAM,GAAG0B,OAAO,CAACG,aAAa,CAACC,WAAW;IAC9C,IAAIC,GAAG,GAAG/B,MAAM,CAACgC,gBAAgB,CAACN,OAAO,EAAE,IAAI,CAAC;IAChD,OAAOC,QAAQ,GAAGI,GAAG,CAACJ,QAAQ,CAAC,GAAGI,GAAG;EACvC;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASE,aAAaA,CAACP,OAAO,EAAE;IAC9B,IAAIA,OAAO,CAACQ,QAAQ,KAAK,MAAM,EAAE;MAC/B,OAAOR,OAAO;IAChB;IACA,OAAOA,OAAO,CAACS,UAAU,IAAIT,OAAO,CAACU,IAAI;EAC3C;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASC,eAAeA,CAACX,OAAO,EAAE;IAChC;IACA,IAAI,CAACA,OAAO,EAAE;MACZ,OAAOzB,QAAQ,CAACqC,IAAI;IACtB;IAEA,QAAQZ,OAAO,CAACQ,QAAQ;MACtB,KAAK,MAAM;MACX,KAAK,MAAM;QACT,OAAOR,OAAO,CAACG,aAAa,CAACS,IAAI;MACnC,KAAK,WAAW;QACd,OAAOZ,OAAO,CAACY,IAAI;IACvB;;IAEA;;IAEA,IAAIC,qBAAqB,GAAGd,wBAAwB,CAACC,OAAO,CAAC;MACzDc,QAAQ,GAAGD,qBAAqB,CAACC,QAAQ;MACzCC,SAAS,GAAGF,qBAAqB,CAACE,SAAS;MAC3CC,SAAS,GAAGH,qBAAqB,CAACG,SAAS;IAE/C,IAAI,uBAAuB,CAACC,IAAI,CAACH,QAAQ,GAAGE,SAAS,GAAGD,SAAS,CAAC,EAAE;MAClE,OAAOf,OAAO;IAChB;IAEA,OAAOW,eAAe,CAACJ,aAAa,CAACP,OAAO,CAAC,CAAC;EAChD;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASkB,gBAAgBA,CAACC,SAAS,EAAE;IACnC,OAAOA,SAAS,IAAIA,SAAS,CAACC,aAAa,GAAGD,SAAS,CAACC,aAAa,GAAGD,SAAS;EACnF;EAEA,IAAIE,MAAM,GAAGhD,SAAS,IAAI,CAAC,EAAEC,MAAM,CAACgD,oBAAoB,IAAI/C,QAAQ,CAACgD,YAAY,CAAC;EAClF,IAAIC,MAAM,GAAGnD,SAAS,IAAI,SAAS,CAAC4C,IAAI,CAACzC,SAAS,CAACK,SAAS,CAAC;;EAE7D;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS4C,IAAIA,CAACC,OAAO,EAAE;IACrB,IAAIA,OAAO,KAAK,EAAE,EAAE;MAClB,OAAOL,MAAM;IACf;IACA,IAAIK,OAAO,KAAK,EAAE,EAAE;MAClB,OAAOF,MAAM;IACf;IACA,OAAOH,MAAM,IAAIG,MAAM;EACzB;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASG,eAAeA,CAAC3B,OAAO,EAAE;IAChC,IAAI,CAACA,OAAO,EAAE;MACZ,OAAOzB,QAAQ,CAACqD,eAAe;IACjC;IAEA,IAAIC,cAAc,GAAGJ,IAAI,CAAC,EAAE,CAAC,GAAGlD,QAAQ,CAACqC,IAAI,GAAG,IAAI;;IAEpD;IACA,IAAIkB,YAAY,GAAG9B,OAAO,CAAC8B,YAAY,IAAI,IAAI;IAC/C;IACA,OAAOA,YAAY,KAAKD,cAAc,IAAI7B,OAAO,CAAC+B,kBAAkB,EAAE;MACpED,YAAY,GAAG,CAAC9B,OAAO,GAAGA,OAAO,CAAC+B,kBAAkB,EAAED,YAAY;IACpE;IAEA,IAAItB,QAAQ,GAAGsB,YAAY,IAAIA,YAAY,CAACtB,QAAQ;IAEpD,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAK,MAAM,IAAIA,QAAQ,KAAK,MAAM,EAAE;MAC3D,OAAOR,OAAO,GAAGA,OAAO,CAACG,aAAa,CAACyB,eAAe,GAAGrD,QAAQ,CAACqD,eAAe;IACnF;;IAEA;IACA;IACA,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC9C,OAAO,CAACgD,YAAY,CAACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAIT,wBAAwB,CAAC+B,YAAY,EAAE,UAAU,CAAC,KAAK,QAAQ,EAAE;MAClI,OAAOH,eAAe,CAACG,YAAY,CAAC;IACtC;IAEA,OAAOA,YAAY;EACrB;EAEA,SAASE,iBAAiBA,CAAChC,OAAO,EAAE;IAClC,IAAIQ,QAAQ,GAAGR,OAAO,CAACQ,QAAQ;IAE/B,IAAIA,QAAQ,KAAK,MAAM,EAAE;MACvB,OAAO,KAAK;IACd;IACA,OAAOA,QAAQ,KAAK,MAAM,IAAImB,eAAe,CAAC3B,OAAO,CAACiC,iBAAiB,CAAC,KAAKjC,OAAO;EACtF;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASkC,OAAOA,CAACC,IAAI,EAAE;IACrB,IAAIA,IAAI,CAAC1B,UAAU,KAAK,IAAI,EAAE;MAC5B,OAAOyB,OAAO,CAACC,IAAI,CAAC1B,UAAU,CAAC;IACjC;IAEA,OAAO0B,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASC,sBAAsBA,CAACC,QAAQ,EAAEC,QAAQ,EAAE;IAClD;IACA,IAAI,CAACD,QAAQ,IAAI,CAACA,QAAQ,CAACnC,QAAQ,IAAI,CAACoC,QAAQ,IAAI,CAACA,QAAQ,CAACpC,QAAQ,EAAE;MACtE,OAAO3B,QAAQ,CAACqD,eAAe;IACjC;;IAEA;IACA,IAAIW,KAAK,GAAGF,QAAQ,CAACG,uBAAuB,CAACF,QAAQ,CAAC,GAAGG,IAAI,CAACC,2BAA2B;IACzF,IAAIC,KAAK,GAAGJ,KAAK,GAAGF,QAAQ,GAAGC,QAAQ;IACvC,IAAIM,GAAG,GAAGL,KAAK,GAAGD,QAAQ,GAAGD,QAAQ;;IAErC;IACA,IAAIQ,KAAK,GAAGtE,QAAQ,CAACuE,WAAW,CAAC,CAAC;IAClCD,KAAK,CAACE,QAAQ,CAACJ,KAAK,EAAE,CAAC,CAAC;IACxBE,KAAK,CAACG,MAAM,CAACJ,GAAG,EAAE,CAAC,CAAC;IACpB,IAAIK,uBAAuB,GAAGJ,KAAK,CAACI,uBAAuB;;IAE3D;;IAEA,IAAIZ,QAAQ,KAAKY,uBAAuB,IAAIX,QAAQ,KAAKW,uBAAuB,IAAIN,KAAK,CAACO,QAAQ,CAACN,GAAG,CAAC,EAAE;MACvG,IAAIZ,iBAAiB,CAACiB,uBAAuB,CAAC,EAAE;QAC9C,OAAOA,uBAAuB;MAChC;MAEA,OAAOtB,eAAe,CAACsB,uBAAuB,CAAC;IACjD;;IAEA;IACA,IAAIE,YAAY,GAAGjB,OAAO,CAACG,QAAQ,CAAC;IACpC,IAAIc,YAAY,CAACzC,IAAI,EAAE;MACrB,OAAO0B,sBAAsB,CAACe,YAAY,CAACzC,IAAI,EAAE4B,QAAQ,CAAC;IAC5D,CAAC,MAAM;MACL,OAAOF,sBAAsB,CAACC,QAAQ,EAAEH,OAAO,CAACI,QAAQ,CAAC,CAAC5B,IAAI,CAAC;IACjE;EACF;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS0C,SAASA,CAACpD,OAAO,EAAE;IAC1B,IAAIqD,IAAI,GAAGC,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;IAEpF,IAAIE,SAAS,GAAGH,IAAI,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY;IAC3D,IAAI7C,QAAQ,GAAGR,OAAO,CAACQ,QAAQ;IAE/B,IAAIA,QAAQ,KAAK,MAAM,IAAIA,QAAQ,KAAK,MAAM,EAAE;MAC9C,IAAIiD,IAAI,GAAGzD,OAAO,CAACG,aAAa,CAACyB,eAAe;MAChD,IAAI8B,gBAAgB,GAAG1D,OAAO,CAACG,aAAa,CAACuD,gBAAgB,IAAID,IAAI;MACrE,OAAOC,gBAAgB,CAACF,SAAS,CAAC;IACpC;IAEA,OAAOxD,OAAO,CAACwD,SAAS,CAAC;EAC3B;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASG,aAAaA,CAACC,IAAI,EAAE5D,OAAO,EAAE;IACpC,IAAI6D,QAAQ,GAAGP,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;IAExF,IAAIQ,SAAS,GAAGV,SAAS,CAACpD,OAAO,EAAE,KAAK,CAAC;IACzC,IAAI+D,UAAU,GAAGX,SAAS,CAACpD,OAAO,EAAE,MAAM,CAAC;IAC3C,IAAIgE,QAAQ,GAAGH,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;IAChCD,IAAI,CAACK,GAAG,IAAIH,SAAS,GAAGE,QAAQ;IAChCJ,IAAI,CAACM,MAAM,IAAIJ,SAAS,GAAGE,QAAQ;IACnCJ,IAAI,CAACO,IAAI,IAAIJ,UAAU,GAAGC,QAAQ;IAClCJ,IAAI,CAACQ,KAAK,IAAIL,UAAU,GAAGC,QAAQ;IACnC,OAAOJ,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEA,SAASS,cAAcA,CAACC,MAAM,EAAEC,IAAI,EAAE;IACpC,IAAIC,KAAK,GAAGD,IAAI,KAAK,GAAG,GAAG,MAAM,GAAG,KAAK;IACzC,IAAIE,KAAK,GAAGD,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,QAAQ;IAEjD,OAAOE,UAAU,CAACJ,MAAM,CAAC,QAAQ,GAAGE,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,GAAGE,UAAU,CAACJ,MAAM,CAAC,QAAQ,GAAGG,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;EAChH;EAEA,SAASE,OAAOA,CAACJ,IAAI,EAAE3D,IAAI,EAAE6C,IAAI,EAAEmB,aAAa,EAAE;IAChD,OAAOC,IAAI,CAACC,GAAG,CAAClE,IAAI,CAAC,QAAQ,GAAG2D,IAAI,CAAC,EAAE3D,IAAI,CAAC,QAAQ,GAAG2D,IAAI,CAAC,EAAEd,IAAI,CAAC,QAAQ,GAAGc,IAAI,CAAC,EAAEd,IAAI,CAAC,QAAQ,GAAGc,IAAI,CAAC,EAAEd,IAAI,CAAC,QAAQ,GAAGc,IAAI,CAAC,EAAE9C,IAAI,CAAC,EAAE,CAAC,GAAGsD,QAAQ,CAACtB,IAAI,CAAC,QAAQ,GAAGc,IAAI,CAAC,CAAC,GAAGQ,QAAQ,CAACH,aAAa,CAAC,QAAQ,IAAIL,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAGQ,QAAQ,CAACH,aAAa,CAAC,QAAQ,IAAIL,IAAI,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9U;EAEA,SAASS,cAAcA,CAACzG,QAAQ,EAAE;IAChC,IAAIqC,IAAI,GAAGrC,QAAQ,CAACqC,IAAI;IACxB,IAAI6C,IAAI,GAAGlF,QAAQ,CAACqD,eAAe;IACnC,IAAIgD,aAAa,GAAGnD,IAAI,CAAC,EAAE,CAAC,IAAInB,gBAAgB,CAACmD,IAAI,CAAC;IAEtD,OAAO;MACLwB,MAAM,EAAEN,OAAO,CAAC,QAAQ,EAAE/D,IAAI,EAAE6C,IAAI,EAAEmB,aAAa,CAAC;MACpDM,KAAK,EAAEP,OAAO,CAAC,OAAO,EAAE/D,IAAI,EAAE6C,IAAI,EAAEmB,aAAa;IACnD,CAAC;EACH;EAEA,IAAIO,cAAc,GAAG,SAAAA,CAAUC,QAAQ,EAAEC,WAAW,EAAE;IACpD,IAAI,EAAED,QAAQ,YAAYC,WAAW,CAAC,EAAE;MACtC,MAAM,IAAIC,SAAS,CAAC,mCAAmC,CAAC;IAC1D;EACF,CAAC;EAED,IAAIC,WAAW,GAAG,YAAY;IAC5B,SAASC,gBAAgBA,CAACC,MAAM,EAAEC,KAAK,EAAE;MACvC,KAAK,IAAI/G,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+G,KAAK,CAAC9G,MAAM,EAAED,CAAC,EAAE,EAAE;QACrC,IAAIgH,UAAU,GAAGD,KAAK,CAAC/G,CAAC,CAAC;QACzBgH,UAAU,CAACC,UAAU,GAAGD,UAAU,CAACC,UAAU,IAAI,KAAK;QACtDD,UAAU,CAACE,YAAY,GAAG,IAAI;QAC9B,IAAI,OAAO,IAAIF,UAAU,EAAEA,UAAU,CAACG,QAAQ,GAAG,IAAI;QACrDC,MAAM,CAACC,cAAc,CAACP,MAAM,EAAEE,UAAU,CAACM,GAAG,EAAEN,UAAU,CAAC;MAC3D;IACF;IAEA,OAAO,UAAUN,WAAW,EAAEa,UAAU,EAAEC,WAAW,EAAE;MACrD,IAAID,UAAU,EAAEV,gBAAgB,CAACH,WAAW,CAACe,SAAS,EAAEF,UAAU,CAAC;MACnE,IAAIC,WAAW,EAAEX,gBAAgB,CAACH,WAAW,EAAEc,WAAW,CAAC;MAC3D,OAAOd,WAAW;IACpB,CAAC;EACH,CAAC,CAAC,CAAC;EAMH,IAAIW,cAAc,GAAG,SAAAA,CAAUK,GAAG,EAAEJ,GAAG,EAAEK,KAAK,EAAE;IAC9C,IAAIL,GAAG,IAAII,GAAG,EAAE;MACdN,MAAM,CAACC,cAAc,CAACK,GAAG,EAAEJ,GAAG,EAAE;QAC9BK,KAAK,EAAEA,KAAK;QACZV,UAAU,EAAE,IAAI;QAChBC,YAAY,EAAE,IAAI;QAClBC,QAAQ,EAAE;MACZ,CAAC,CAAC;IACJ,CAAC,MAAM;MACLO,GAAG,CAACJ,GAAG,CAAC,GAAGK,KAAK;IAClB;IAEA,OAAOD,GAAG;EACZ,CAAC;EAED,IAAIE,QAAQ,GAAGR,MAAM,CAACS,MAAM,IAAI,UAAUf,MAAM,EAAE;IAChD,KAAK,IAAI9G,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2E,SAAS,CAAC1E,MAAM,EAAED,CAAC,EAAE,EAAE;MACzC,IAAI8H,MAAM,GAAGnD,SAAS,CAAC3E,CAAC,CAAC;MAEzB,KAAK,IAAIsH,GAAG,IAAIQ,MAAM,EAAE;QACtB,IAAIV,MAAM,CAACK,SAAS,CAACM,cAAc,CAAC5G,IAAI,CAAC2G,MAAM,EAAER,GAAG,CAAC,EAAE;UACrDR,MAAM,CAACQ,GAAG,CAAC,GAAGQ,MAAM,CAACR,GAAG,CAAC;QAC3B;MACF;IACF;IAEA,OAAOR,MAAM;EACf,CAAC;;EAED;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASkB,aAAaA,CAACC,OAAO,EAAE;IAC9B,OAAOL,QAAQ,CAAC,CAAC,CAAC,EAAEK,OAAO,EAAE;MAC3BxC,KAAK,EAAEwC,OAAO,CAACzC,IAAI,GAAGyC,OAAO,CAAC1B,KAAK;MACnChB,MAAM,EAAE0C,OAAO,CAAC3C,GAAG,GAAG2C,OAAO,CAAC3B;IAChC,CAAC,CAAC;EACJ;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS4B,qBAAqBA,CAAC7G,OAAO,EAAE;IACtC,IAAI4D,IAAI,GAAG,CAAC,CAAC;;IAEb;IACA;IACA;IACA,IAAI;MACF,IAAInC,IAAI,CAAC,EAAE,CAAC,EAAE;QACZmC,IAAI,GAAG5D,OAAO,CAAC6G,qBAAqB,CAAC,CAAC;QACtC,IAAI/C,SAAS,GAAGV,SAAS,CAACpD,OAAO,EAAE,KAAK,CAAC;QACzC,IAAI+D,UAAU,GAAGX,SAAS,CAACpD,OAAO,EAAE,MAAM,CAAC;QAC3C4D,IAAI,CAACK,GAAG,IAAIH,SAAS;QACrBF,IAAI,CAACO,IAAI,IAAIJ,UAAU;QACvBH,IAAI,CAACM,MAAM,IAAIJ,SAAS;QACxBF,IAAI,CAACQ,KAAK,IAAIL,UAAU;MAC1B,CAAC,MAAM;QACLH,IAAI,GAAG5D,OAAO,CAAC6G,qBAAqB,CAAC,CAAC;MACxC;IACF,CAAC,CAAC,OAAOC,CAAC,EAAE,CAAC;IAEb,IAAIC,MAAM,GAAG;MACX5C,IAAI,EAAEP,IAAI,CAACO,IAAI;MACfF,GAAG,EAAEL,IAAI,CAACK,GAAG;MACbiB,KAAK,EAAEtB,IAAI,CAACQ,KAAK,GAAGR,IAAI,CAACO,IAAI;MAC7Bc,MAAM,EAAErB,IAAI,CAACM,MAAM,GAAGN,IAAI,CAACK;IAC7B,CAAC;;IAED;IACA,IAAI+C,KAAK,GAAGhH,OAAO,CAACQ,QAAQ,KAAK,MAAM,GAAGwE,cAAc,CAAChF,OAAO,CAACG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpF,IAAI+E,KAAK,GAAG8B,KAAK,CAAC9B,KAAK,IAAIlF,OAAO,CAACiH,WAAW,IAAIF,MAAM,CAAC7B,KAAK;IAC9D,IAAID,MAAM,GAAG+B,KAAK,CAAC/B,MAAM,IAAIjF,OAAO,CAACkH,YAAY,IAAIH,MAAM,CAAC9B,MAAM;IAElE,IAAIkC,cAAc,GAAGnH,OAAO,CAACoH,WAAW,GAAGlC,KAAK;IAChD,IAAImC,aAAa,GAAGrH,OAAO,CAACsH,YAAY,GAAGrC,MAAM;;IAEjD;IACA;IACA,IAAIkC,cAAc,IAAIE,aAAa,EAAE;MACnC,IAAI/C,MAAM,GAAGvE,wBAAwB,CAACC,OAAO,CAAC;MAC9CmH,cAAc,IAAI9C,cAAc,CAACC,MAAM,EAAE,GAAG,CAAC;MAC7C+C,aAAa,IAAIhD,cAAc,CAACC,MAAM,EAAE,GAAG,CAAC;MAE5CyC,MAAM,CAAC7B,KAAK,IAAIiC,cAAc;MAC9BJ,MAAM,CAAC9B,MAAM,IAAIoC,aAAa;IAChC;IAEA,OAAOV,aAAa,CAACI,MAAM,CAAC;EAC9B;EAEA,SAASQ,oCAAoCA,CAACC,QAAQ,EAAEC,MAAM,EAAE;IAC9D,IAAIC,aAAa,GAAGpE,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;IAE7F,IAAI9B,MAAM,GAAGC,IAAI,CAAC,EAAE,CAAC;IACrB,IAAIkG,MAAM,GAAGF,MAAM,CAACjH,QAAQ,KAAK,MAAM;IACvC,IAAIoH,YAAY,GAAGf,qBAAqB,CAACW,QAAQ,CAAC;IAClD,IAAIK,UAAU,GAAGhB,qBAAqB,CAACY,MAAM,CAAC;IAC9C,IAAIK,YAAY,GAAGnH,eAAe,CAAC6G,QAAQ,CAAC;IAE5C,IAAIlD,MAAM,GAAGvE,wBAAwB,CAAC0H,MAAM,CAAC;IAC7C,IAAIM,cAAc,GAAGrD,UAAU,CAACJ,MAAM,CAACyD,cAAc,EAAE,EAAE,CAAC;IAC1D,IAAIC,eAAe,GAAGtD,UAAU,CAACJ,MAAM,CAAC0D,eAAe,EAAE,EAAE,CAAC;;IAE5D;IACA,IAAIN,aAAa,IAAIC,MAAM,EAAE;MAC3BE,UAAU,CAAC5D,GAAG,GAAGY,IAAI,CAACC,GAAG,CAAC+C,UAAU,CAAC5D,GAAG,EAAE,CAAC,CAAC;MAC5C4D,UAAU,CAAC1D,IAAI,GAAGU,IAAI,CAACC,GAAG,CAAC+C,UAAU,CAAC1D,IAAI,EAAE,CAAC,CAAC;IAChD;IACA,IAAIyC,OAAO,GAAGD,aAAa,CAAC;MAC1B1C,GAAG,EAAE2D,YAAY,CAAC3D,GAAG,GAAG4D,UAAU,CAAC5D,GAAG,GAAG8D,cAAc;MACvD5D,IAAI,EAAEyD,YAAY,CAACzD,IAAI,GAAG0D,UAAU,CAAC1D,IAAI,GAAG6D,eAAe;MAC3D9C,KAAK,EAAE0C,YAAY,CAAC1C,KAAK;MACzBD,MAAM,EAAE2C,YAAY,CAAC3C;IACvB,CAAC,CAAC;IACF2B,OAAO,CAACqB,SAAS,GAAG,CAAC;IACrBrB,OAAO,CAACsB,UAAU,GAAG,CAAC;;IAEtB;IACA;IACA;IACA;IACA,IAAI,CAAC1G,MAAM,IAAImG,MAAM,EAAE;MACrB,IAAIM,SAAS,GAAGvD,UAAU,CAACJ,MAAM,CAAC2D,SAAS,EAAE,EAAE,CAAC;MAChD,IAAIC,UAAU,GAAGxD,UAAU,CAACJ,MAAM,CAAC4D,UAAU,EAAE,EAAE,CAAC;MAElDtB,OAAO,CAAC3C,GAAG,IAAI8D,cAAc,GAAGE,SAAS;MACzCrB,OAAO,CAAC1C,MAAM,IAAI6D,cAAc,GAAGE,SAAS;MAC5CrB,OAAO,CAACzC,IAAI,IAAI6D,eAAe,GAAGE,UAAU;MAC5CtB,OAAO,CAACxC,KAAK,IAAI4D,eAAe,GAAGE,UAAU;;MAE7C;MACAtB,OAAO,CAACqB,SAAS,GAAGA,SAAS;MAC7BrB,OAAO,CAACsB,UAAU,GAAGA,UAAU;IACjC;IAEA,IAAI1G,MAAM,IAAI,CAACkG,aAAa,GAAGD,MAAM,CAACvE,QAAQ,CAAC4E,YAAY,CAAC,GAAGL,MAAM,KAAKK,YAAY,IAAIA,YAAY,CAACtH,QAAQ,KAAK,MAAM,EAAE;MAC1HoG,OAAO,GAAGjD,aAAa,CAACiD,OAAO,EAAEa,MAAM,CAAC;IAC1C;IAEA,OAAOb,OAAO;EAChB;EAEA,SAASuB,6CAA6CA,CAACnI,OAAO,EAAE;IAC9D,IAAIoI,aAAa,GAAG9E,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;IAE7F,IAAIG,IAAI,GAAGzD,OAAO,CAACG,aAAa,CAACyB,eAAe;IAChD,IAAIyG,cAAc,GAAGd,oCAAoC,CAACvH,OAAO,EAAEyD,IAAI,CAAC;IACxE,IAAIyB,KAAK,GAAGL,IAAI,CAACC,GAAG,CAACrB,IAAI,CAACwD,WAAW,EAAE3I,MAAM,CAACgK,UAAU,IAAI,CAAC,CAAC;IAC9D,IAAIrD,MAAM,GAAGJ,IAAI,CAACC,GAAG,CAACrB,IAAI,CAACyD,YAAY,EAAE5I,MAAM,CAACiK,WAAW,IAAI,CAAC,CAAC;IAEjE,IAAIzE,SAAS,GAAG,CAACsE,aAAa,GAAGhF,SAAS,CAACK,IAAI,CAAC,GAAG,CAAC;IACpD,IAAIM,UAAU,GAAG,CAACqE,aAAa,GAAGhF,SAAS,CAACK,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;IAE7D,IAAI+E,MAAM,GAAG;MACXvE,GAAG,EAAEH,SAAS,GAAGuE,cAAc,CAACpE,GAAG,GAAGoE,cAAc,CAACJ,SAAS;MAC9D9D,IAAI,EAAEJ,UAAU,GAAGsE,cAAc,CAAClE,IAAI,GAAGkE,cAAc,CAACH,UAAU;MAClEhD,KAAK,EAAEA,KAAK;MACZD,MAAM,EAAEA;IACV,CAAC;IAED,OAAO0B,aAAa,CAAC6B,MAAM,CAAC;EAC9B;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASC,OAAOA,CAACzI,OAAO,EAAE;IACxB,IAAIQ,QAAQ,GAAGR,OAAO,CAACQ,QAAQ;IAC/B,IAAIA,QAAQ,KAAK,MAAM,IAAIA,QAAQ,KAAK,MAAM,EAAE;MAC9C,OAAO,KAAK;IACd;IACA,IAAIT,wBAAwB,CAACC,OAAO,EAAE,UAAU,CAAC,KAAK,OAAO,EAAE;MAC7D,OAAO,IAAI;IACb;IACA,IAAIS,UAAU,GAAGF,aAAa,CAACP,OAAO,CAAC;IACvC,IAAI,CAACS,UAAU,EAAE;MACf,OAAO,KAAK;IACd;IACA,OAAOgI,OAAO,CAAChI,UAAU,CAAC;EAC5B;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEA,SAASiI,4BAA4BA,CAAC1I,OAAO,EAAE;IAC7C;IACA,IAAI,CAACA,OAAO,IAAI,CAACA,OAAO,CAAC2I,aAAa,IAAIlH,IAAI,CAAC,CAAC,EAAE;MAChD,OAAOlD,QAAQ,CAACqD,eAAe;IACjC;IACA,IAAIgH,EAAE,GAAG5I,OAAO,CAAC2I,aAAa;IAC9B,OAAOC,EAAE,IAAI7I,wBAAwB,CAAC6I,EAAE,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE;MACjEA,EAAE,GAAGA,EAAE,CAACD,aAAa;IACvB;IACA,OAAOC,EAAE,IAAIrK,QAAQ,CAACqD,eAAe;EACvC;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASiH,aAAaA,CAACC,MAAM,EAAE3H,SAAS,EAAE4H,OAAO,EAAEC,iBAAiB,EAAE;IACpE,IAAItB,aAAa,GAAGpE,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;;IAE7F;;IAEA,IAAI2F,UAAU,GAAG;MAAEhF,GAAG,EAAE,CAAC;MAAEE,IAAI,EAAE;IAAE,CAAC;IACpC,IAAIrC,YAAY,GAAG4F,aAAa,GAAGgB,4BAA4B,CAACI,MAAM,CAAC,GAAG1G,sBAAsB,CAAC0G,MAAM,EAAE5H,gBAAgB,CAACC,SAAS,CAAC,CAAC;;IAErI;IACA,IAAI6H,iBAAiB,KAAK,UAAU,EAAE;MACpCC,UAAU,GAAGd,6CAA6C,CAACrG,YAAY,EAAE4F,aAAa,CAAC;IACzF,CAAC,MAAM;MACL;MACA,IAAIwB,cAAc,GAAG,KAAK,CAAC;MAC3B,IAAIF,iBAAiB,KAAK,cAAc,EAAE;QACxCE,cAAc,GAAGvI,eAAe,CAACJ,aAAa,CAACY,SAAS,CAAC,CAAC;QAC1D,IAAI+H,cAAc,CAAC1I,QAAQ,KAAK,MAAM,EAAE;UACtC0I,cAAc,GAAGJ,MAAM,CAAC3I,aAAa,CAACyB,eAAe;QACvD;MACF,CAAC,MAAM,IAAIoH,iBAAiB,KAAK,QAAQ,EAAE;QACzCE,cAAc,GAAGJ,MAAM,CAAC3I,aAAa,CAACyB,eAAe;MACvD,CAAC,MAAM;QACLsH,cAAc,GAAGF,iBAAiB;MACpC;MAEA,IAAIpC,OAAO,GAAGW,oCAAoC,CAAC2B,cAAc,EAAEpH,YAAY,EAAE4F,aAAa,CAAC;;MAE/F;MACA,IAAIwB,cAAc,CAAC1I,QAAQ,KAAK,MAAM,IAAI,CAACiI,OAAO,CAAC3G,YAAY,CAAC,EAAE;QAChE,IAAIqH,eAAe,GAAGnE,cAAc,CAAC8D,MAAM,CAAC3I,aAAa,CAAC;UACtD8E,MAAM,GAAGkE,eAAe,CAAClE,MAAM;UAC/BC,KAAK,GAAGiE,eAAe,CAACjE,KAAK;QAEjC+D,UAAU,CAAChF,GAAG,IAAI2C,OAAO,CAAC3C,GAAG,GAAG2C,OAAO,CAACqB,SAAS;QACjDgB,UAAU,CAAC/E,MAAM,GAAGe,MAAM,GAAG2B,OAAO,CAAC3C,GAAG;QACxCgF,UAAU,CAAC9E,IAAI,IAAIyC,OAAO,CAACzC,IAAI,GAAGyC,OAAO,CAACsB,UAAU;QACpDe,UAAU,CAAC7E,KAAK,GAAGc,KAAK,GAAG0B,OAAO,CAACzC,IAAI;MACzC,CAAC,MAAM;QACL;QACA8E,UAAU,GAAGrC,OAAO;MACtB;IACF;;IAEA;IACAmC,OAAO,GAAGA,OAAO,IAAI,CAAC;IACtB,IAAIK,eAAe,GAAG,OAAOL,OAAO,KAAK,QAAQ;IACjDE,UAAU,CAAC9E,IAAI,IAAIiF,eAAe,GAAGL,OAAO,GAAGA,OAAO,CAAC5E,IAAI,IAAI,CAAC;IAChE8E,UAAU,CAAChF,GAAG,IAAImF,eAAe,GAAGL,OAAO,GAAGA,OAAO,CAAC9E,GAAG,IAAI,CAAC;IAC9DgF,UAAU,CAAC7E,KAAK,IAAIgF,eAAe,GAAGL,OAAO,GAAGA,OAAO,CAAC3E,KAAK,IAAI,CAAC;IAClE6E,UAAU,CAAC/E,MAAM,IAAIkF,eAAe,GAAGL,OAAO,GAAGA,OAAO,CAAC7E,MAAM,IAAI,CAAC;IAEpE,OAAO+E,UAAU;EACnB;EAEA,SAASI,OAAOA,CAACC,IAAI,EAAE;IACrB,IAAIpE,KAAK,GAAGoE,IAAI,CAACpE,KAAK;MAClBD,MAAM,GAAGqE,IAAI,CAACrE,MAAM;IAExB,OAAOC,KAAK,GAAGD,MAAM;EACvB;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASsE,oBAAoBA,CAACC,SAAS,EAAEC,OAAO,EAAEX,MAAM,EAAE3H,SAAS,EAAE6H,iBAAiB,EAAE;IACtF,IAAID,OAAO,GAAGzF,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAEnF,IAAIkG,SAAS,CAAC1K,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MACpC,OAAO0K,SAAS;IAClB;IAEA,IAAIP,UAAU,GAAGJ,aAAa,CAACC,MAAM,EAAE3H,SAAS,EAAE4H,OAAO,EAAEC,iBAAiB,CAAC;IAE7E,IAAIU,KAAK,GAAG;MACVzF,GAAG,EAAE;QACHiB,KAAK,EAAE+D,UAAU,CAAC/D,KAAK;QACvBD,MAAM,EAAEwE,OAAO,CAACxF,GAAG,GAAGgF,UAAU,CAAChF;MACnC,CAAC;MACDG,KAAK,EAAE;QACLc,KAAK,EAAE+D,UAAU,CAAC7E,KAAK,GAAGqF,OAAO,CAACrF,KAAK;QACvCa,MAAM,EAAEgE,UAAU,CAAChE;MACrB,CAAC;MACDf,MAAM,EAAE;QACNgB,KAAK,EAAE+D,UAAU,CAAC/D,KAAK;QACvBD,MAAM,EAAEgE,UAAU,CAAC/E,MAAM,GAAGuF,OAAO,CAACvF;MACtC,CAAC;MACDC,IAAI,EAAE;QACJe,KAAK,EAAEuE,OAAO,CAACtF,IAAI,GAAG8E,UAAU,CAAC9E,IAAI;QACrCc,MAAM,EAAEgE,UAAU,CAAChE;MACrB;IACF,CAAC;IAED,IAAI0E,WAAW,GAAG5D,MAAM,CAAC6D,IAAI,CAACF,KAAK,CAAC,CAACG,GAAG,CAAC,UAAU5D,GAAG,EAAE;MACtD,OAAOM,QAAQ,CAAC;QACdN,GAAG,EAAEA;MACP,CAAC,EAAEyD,KAAK,CAACzD,GAAG,CAAC,EAAE;QACb6D,IAAI,EAAET,OAAO,CAACK,KAAK,CAACzD,GAAG,CAAC;MAC1B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC8D,IAAI,CAAC,UAAUC,CAAC,EAAEC,CAAC,EAAE;MACtB,OAAOA,CAAC,CAACH,IAAI,GAAGE,CAAC,CAACF,IAAI;IACxB,CAAC,CAAC;IAEF,IAAII,aAAa,GAAGP,WAAW,CAACQ,MAAM,CAAC,UAAUC,KAAK,EAAE;MACtD,IAAIlF,KAAK,GAAGkF,KAAK,CAAClF,KAAK;QACnBD,MAAM,GAAGmF,KAAK,CAACnF,MAAM;MACzB,OAAOC,KAAK,IAAI4D,MAAM,CAAC7B,WAAW,IAAIhC,MAAM,IAAI6D,MAAM,CAAC5B,YAAY;IACrE,CAAC,CAAC;IAEF,IAAImD,iBAAiB,GAAGH,aAAa,CAACtL,MAAM,GAAG,CAAC,GAAGsL,aAAa,CAAC,CAAC,CAAC,CAACjE,GAAG,GAAG0D,WAAW,CAAC,CAAC,CAAC,CAAC1D,GAAG;IAE5F,IAAIqE,SAAS,GAAGd,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEvC,OAAOF,iBAAiB,IAAIC,SAAS,GAAG,GAAG,GAAGA,SAAS,GAAG,EAAE,CAAC;EAC/D;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASE,mBAAmBA,CAACC,KAAK,EAAE3B,MAAM,EAAE3H,SAAS,EAAE;IACrD,IAAIuG,aAAa,GAAGpE,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAE5F,IAAIoH,kBAAkB,GAAGhD,aAAa,GAAGgB,4BAA4B,CAACI,MAAM,CAAC,GAAG1G,sBAAsB,CAAC0G,MAAM,EAAE5H,gBAAgB,CAACC,SAAS,CAAC,CAAC;IAC3I,OAAOoG,oCAAoC,CAACpG,SAAS,EAAEuJ,kBAAkB,EAAEhD,aAAa,CAAC;EAC3F;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASiD,aAAaA,CAAC3K,OAAO,EAAE;IAC9B,IAAI1B,MAAM,GAAG0B,OAAO,CAACG,aAAa,CAACC,WAAW;IAC9C,IAAIkE,MAAM,GAAGhG,MAAM,CAACgC,gBAAgB,CAACN,OAAO,CAAC;IAC7C,IAAI4K,CAAC,GAAGlG,UAAU,CAACJ,MAAM,CAAC2D,SAAS,IAAI,CAAC,CAAC,GAAGvD,UAAU,CAACJ,MAAM,CAACuG,YAAY,IAAI,CAAC,CAAC;IAChF,IAAIC,CAAC,GAAGpG,UAAU,CAACJ,MAAM,CAAC4D,UAAU,IAAI,CAAC,CAAC,GAAGxD,UAAU,CAACJ,MAAM,CAACyG,WAAW,IAAI,CAAC,CAAC;IAChF,IAAIhE,MAAM,GAAG;MACX7B,KAAK,EAAElF,OAAO,CAACoH,WAAW,GAAG0D,CAAC;MAC9B7F,MAAM,EAAEjF,OAAO,CAACsH,YAAY,GAAGsD;IACjC,CAAC;IACD,OAAO7D,MAAM;EACf;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASiE,oBAAoBA,CAACxB,SAAS,EAAE;IACvC,IAAIyB,IAAI,GAAG;MAAE9G,IAAI,EAAE,OAAO;MAAEC,KAAK,EAAE,MAAM;MAAEF,MAAM,EAAE,KAAK;MAAED,GAAG,EAAE;IAAS,CAAC;IACzE,OAAOuF,SAAS,CAAC0B,OAAO,CAAC,wBAAwB,EAAE,UAAUC,OAAO,EAAE;MACpE,OAAOF,IAAI,CAACE,OAAO,CAAC;IACtB,CAAC,CAAC;EACJ;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASC,gBAAgBA,CAACtC,MAAM,EAAEuC,gBAAgB,EAAE7B,SAAS,EAAE;IAC7DA,SAAS,GAAGA,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;IAEnC;IACA,IAAIe,UAAU,GAAGX,aAAa,CAAC7B,MAAM,CAAC;;IAEtC;IACA,IAAIyC,aAAa,GAAG;MAClBrG,KAAK,EAAEoG,UAAU,CAACpG,KAAK;MACvBD,MAAM,EAAEqG,UAAU,CAACrG;IACrB,CAAC;;IAED;IACA,IAAIuG,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC1M,OAAO,CAAC0K,SAAS,CAAC,KAAK,CAAC,CAAC;IACzD,IAAIiC,QAAQ,GAAGD,OAAO,GAAG,KAAK,GAAG,MAAM;IACvC,IAAIE,aAAa,GAAGF,OAAO,GAAG,MAAM,GAAG,KAAK;IAC5C,IAAIG,WAAW,GAAGH,OAAO,GAAG,QAAQ,GAAG,OAAO;IAC9C,IAAII,oBAAoB,GAAG,CAACJ,OAAO,GAAG,QAAQ,GAAG,OAAO;IAExDD,aAAa,CAACE,QAAQ,CAAC,GAAGJ,gBAAgB,CAACI,QAAQ,CAAC,GAAGJ,gBAAgB,CAACM,WAAW,CAAC,GAAG,CAAC,GAAGL,UAAU,CAACK,WAAW,CAAC,GAAG,CAAC;IACtH,IAAInC,SAAS,KAAKkC,aAAa,EAAE;MAC/BH,aAAa,CAACG,aAAa,CAAC,GAAGL,gBAAgB,CAACK,aAAa,CAAC,GAAGJ,UAAU,CAACM,oBAAoB,CAAC;IACnG,CAAC,MAAM;MACLL,aAAa,CAACG,aAAa,CAAC,GAAGL,gBAAgB,CAACL,oBAAoB,CAACU,aAAa,CAAC,CAAC;IACtF;IAEA,OAAOH,aAAa;EACtB;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASM,IAAIA,CAACC,GAAG,EAAEC,KAAK,EAAE;IACxB;IACA,IAAIC,KAAK,CAAC5F,SAAS,CAACyF,IAAI,EAAE;MACxB,OAAOC,GAAG,CAACD,IAAI,CAACE,KAAK,CAAC;IACxB;;IAEA;IACA,OAAOD,GAAG,CAAC3B,MAAM,CAAC4B,KAAK,CAAC,CAAC,CAAC,CAAC;EAC7B;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASE,SAASA,CAACH,GAAG,EAAEI,IAAI,EAAE5F,KAAK,EAAE;IACnC;IACA,IAAI0F,KAAK,CAAC5F,SAAS,CAAC6F,SAAS,EAAE;MAC7B,OAAOH,GAAG,CAACG,SAAS,CAAC,UAAUE,GAAG,EAAE;QAClC,OAAOA,GAAG,CAACD,IAAI,CAAC,KAAK5F,KAAK;MAC5B,CAAC,CAAC;IACJ;;IAEA;IACA,IAAI8F,KAAK,GAAGP,IAAI,CAACC,GAAG,EAAE,UAAUzF,GAAG,EAAE;MACnC,OAAOA,GAAG,CAAC6F,IAAI,CAAC,KAAK5F,KAAK;IAC5B,CAAC,CAAC;IACF,OAAOwF,GAAG,CAAChN,OAAO,CAACsN,KAAK,CAAC;EAC3B;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASC,YAAYA,CAACC,SAAS,EAAEC,IAAI,EAAEC,IAAI,EAAE;IAC3C,IAAIC,cAAc,GAAGD,IAAI,KAAKjJ,SAAS,GAAG+I,SAAS,GAAGA,SAAS,CAACI,KAAK,CAAC,CAAC,EAAET,SAAS,CAACK,SAAS,EAAE,MAAM,EAAEE,IAAI,CAAC,CAAC;IAE5GC,cAAc,CAACE,OAAO,CAAC,UAAU3I,QAAQ,EAAE;MACzC,IAAIA,QAAQ,CAAC,UAAU,CAAC,EAAE;QACxB;QACA4I,OAAO,CAACC,IAAI,CAAC,uDAAuD,CAAC;MACvE;MACA,IAAI7N,EAAE,GAAGgF,QAAQ,CAAC,UAAU,CAAC,IAAIA,QAAQ,CAAChF,EAAE,CAAC,CAAC;MAC9C,IAAIgF,QAAQ,CAAC8I,OAAO,IAAIpN,UAAU,CAACV,EAAE,CAAC,EAAE;QACtC;QACA;QACA;QACAuN,IAAI,CAAC3F,OAAO,CAACkC,MAAM,GAAGnC,aAAa,CAAC4F,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAAC;QACxDyD,IAAI,CAAC3F,OAAO,CAACzF,SAAS,GAAGwF,aAAa,CAAC4F,IAAI,CAAC3F,OAAO,CAACzF,SAAS,CAAC;QAE9DoL,IAAI,GAAGvN,EAAE,CAACuN,IAAI,EAAEvI,QAAQ,CAAC;MAC3B;IACF,CAAC,CAAC;IAEF,OAAOuI,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASQ,MAAMA,CAAA,EAAG;IAChB;IACA,IAAI,IAAI,CAACtC,KAAK,CAACuC,WAAW,EAAE;MAC1B;IACF;IAEA,IAAIT,IAAI,GAAG;MACTnH,QAAQ,EAAE,IAAI;MACdd,MAAM,EAAE,CAAC,CAAC;MACV2I,WAAW,EAAE,CAAC,CAAC;MACfC,UAAU,EAAE,CAAC,CAAC;MACdC,OAAO,EAAE,KAAK;MACdvG,OAAO,EAAE,CAAC;IACZ,CAAC;;IAED;IACA2F,IAAI,CAAC3F,OAAO,CAACzF,SAAS,GAAGqJ,mBAAmB,CAAC,IAAI,CAACC,KAAK,EAAE,IAAI,CAAC3B,MAAM,EAAE,IAAI,CAAC3H,SAAS,EAAE,IAAI,CAACiM,OAAO,CAACC,aAAa,CAAC;;IAEjH;IACA;IACA;IACAd,IAAI,CAAC/C,SAAS,GAAGD,oBAAoB,CAAC,IAAI,CAAC6D,OAAO,CAAC5D,SAAS,EAAE+C,IAAI,CAAC3F,OAAO,CAACzF,SAAS,EAAE,IAAI,CAAC2H,MAAM,EAAE,IAAI,CAAC3H,SAAS,EAAE,IAAI,CAACiM,OAAO,CAACd,SAAS,CAACgB,IAAI,CAACtE,iBAAiB,EAAE,IAAI,CAACoE,OAAO,CAACd,SAAS,CAACgB,IAAI,CAACvE,OAAO,CAAC;;IAEtM;IACAwD,IAAI,CAACgB,iBAAiB,GAAGhB,IAAI,CAAC/C,SAAS;IAEvC+C,IAAI,CAACc,aAAa,GAAG,IAAI,CAACD,OAAO,CAACC,aAAa;;IAE/C;IACAd,IAAI,CAAC3F,OAAO,CAACkC,MAAM,GAAGsC,gBAAgB,CAAC,IAAI,CAACtC,MAAM,EAAEyD,IAAI,CAAC3F,OAAO,CAACzF,SAAS,EAAEoL,IAAI,CAAC/C,SAAS,CAAC;IAE3F+C,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAAC0E,QAAQ,GAAG,IAAI,CAACJ,OAAO,CAACC,aAAa,GAAG,OAAO,GAAG,UAAU;;IAEhF;IACAd,IAAI,GAAGF,YAAY,CAAC,IAAI,CAACC,SAAS,EAAEC,IAAI,CAAC;;IAEzC;IACA;IACA,IAAI,CAAC,IAAI,CAAC9B,KAAK,CAACgD,SAAS,EAAE;MACzB,IAAI,CAAChD,KAAK,CAACgD,SAAS,GAAG,IAAI;MAC3B,IAAI,CAACL,OAAO,CAACM,QAAQ,CAACnB,IAAI,CAAC;IAC7B,CAAC,MAAM;MACL,IAAI,CAACa,OAAO,CAACO,QAAQ,CAACpB,IAAI,CAAC;IAC7B;EACF;;EAEA;AACA;AACA;AACA;AACA;AACA;EACA,SAASqB,iBAAiBA,CAACtB,SAAS,EAAEuB,YAAY,EAAE;IAClD,OAAOvB,SAAS,CAACwB,IAAI,CAAC,UAAUxE,IAAI,EAAE;MACpC,IAAIyE,IAAI,GAAGzE,IAAI,CAACyE,IAAI;QAChBjB,OAAO,GAAGxD,IAAI,CAACwD,OAAO;MAC1B,OAAOA,OAAO,IAAIiB,IAAI,KAAKF,YAAY;IACzC,CAAC,CAAC;EACJ;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASG,wBAAwBA,CAAC/N,QAAQ,EAAE;IAC1C,IAAIgO,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC;IAClD,IAAIC,SAAS,GAAGjO,QAAQ,CAACkO,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGnO,QAAQ,CAACyM,KAAK,CAAC,CAAC,CAAC;IAEpE,KAAK,IAAI/N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsP,QAAQ,CAACrP,MAAM,EAAED,CAAC,EAAE,EAAE;MACxC,IAAI0P,MAAM,GAAGJ,QAAQ,CAACtP,CAAC,CAAC;MACxB,IAAI2P,OAAO,GAAGD,MAAM,GAAG,EAAE,GAAGA,MAAM,GAAGH,SAAS,GAAGjO,QAAQ;MACzD,IAAI,OAAO1B,QAAQ,CAACqC,IAAI,CAAC2N,KAAK,CAACD,OAAO,CAAC,KAAK,WAAW,EAAE;QACvD,OAAOA,OAAO;MAChB;IACF;IACA,OAAO,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;EACA,SAASE,OAAOA,CAAA,EAAG;IACjB,IAAI,CAAC/D,KAAK,CAACuC,WAAW,GAAG,IAAI;;IAE7B;IACA,IAAIY,iBAAiB,CAAC,IAAI,CAACtB,SAAS,EAAE,YAAY,CAAC,EAAE;MACnD,IAAI,CAACxD,MAAM,CAAC2F,eAAe,CAAC,aAAa,CAAC;MAC1C,IAAI,CAAC3F,MAAM,CAACyF,KAAK,CAACf,QAAQ,GAAG,EAAE;MAC/B,IAAI,CAAC1E,MAAM,CAACyF,KAAK,CAACtK,GAAG,GAAG,EAAE;MAC1B,IAAI,CAAC6E,MAAM,CAACyF,KAAK,CAACpK,IAAI,GAAG,EAAE;MAC3B,IAAI,CAAC2E,MAAM,CAACyF,KAAK,CAACnK,KAAK,GAAG,EAAE;MAC5B,IAAI,CAAC0E,MAAM,CAACyF,KAAK,CAACrK,MAAM,GAAG,EAAE;MAC7B,IAAI,CAAC4E,MAAM,CAACyF,KAAK,CAACG,UAAU,GAAG,EAAE;MACjC,IAAI,CAAC5F,MAAM,CAACyF,KAAK,CAACP,wBAAwB,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE;IAC/D;IAEA,IAAI,CAACW,qBAAqB,CAAC,CAAC;;IAE5B;IACA;IACA,IAAI,IAAI,CAACvB,OAAO,CAACwB,eAAe,EAAE;MAChC,IAAI,CAAC9F,MAAM,CAACrI,UAAU,CAACoO,WAAW,CAAC,IAAI,CAAC/F,MAAM,CAAC;IACjD;IACA,OAAO,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;EACA,SAASgG,SAASA,CAAC9O,OAAO,EAAE;IAC1B,IAAIG,aAAa,GAAGH,OAAO,CAACG,aAAa;IACzC,OAAOA,aAAa,GAAGA,aAAa,CAACC,WAAW,GAAG9B,MAAM;EAC3D;EAEA,SAASyQ,qBAAqBA,CAACjH,YAAY,EAAEkH,KAAK,EAAEC,QAAQ,EAAEC,aAAa,EAAE;IAC3E,IAAIC,MAAM,GAAGrH,YAAY,CAACtH,QAAQ,KAAK,MAAM;IAC7C,IAAIiF,MAAM,GAAG0J,MAAM,GAAGrH,YAAY,CAAC3H,aAAa,CAACC,WAAW,GAAG0H,YAAY;IAC3ErC,MAAM,CAAC2J,gBAAgB,CAACJ,KAAK,EAAEC,QAAQ,EAAE;MAAEI,OAAO,EAAE;IAAK,CAAC,CAAC;IAE3D,IAAI,CAACF,MAAM,EAAE;MACXJ,qBAAqB,CAACpO,eAAe,CAAC8E,MAAM,CAAChF,UAAU,CAAC,EAAEuO,KAAK,EAAEC,QAAQ,EAAEC,aAAa,CAAC;IAC3F;IACAA,aAAa,CAACI,IAAI,CAAC7J,MAAM,CAAC;EAC5B;;EAEA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS8J,mBAAmBA,CAACpO,SAAS,EAAEiM,OAAO,EAAE3C,KAAK,EAAE+E,WAAW,EAAE;IACnE;IACA/E,KAAK,CAAC+E,WAAW,GAAGA,WAAW;IAC/BV,SAAS,CAAC3N,SAAS,CAAC,CAACiO,gBAAgB,CAAC,QAAQ,EAAE3E,KAAK,CAAC+E,WAAW,EAAE;MAAEH,OAAO,EAAE;IAAK,CAAC,CAAC;;IAErF;IACA,IAAII,aAAa,GAAG9O,eAAe,CAACQ,SAAS,CAAC;IAC9C4N,qBAAqB,CAACU,aAAa,EAAE,QAAQ,EAAEhF,KAAK,CAAC+E,WAAW,EAAE/E,KAAK,CAACyE,aAAa,CAAC;IACtFzE,KAAK,CAACgF,aAAa,GAAGA,aAAa;IACnChF,KAAK,CAACiF,aAAa,GAAG,IAAI;IAE1B,OAAOjF,KAAK;EACd;;EAEA;AACA;AACA;AACA;AACA;AACA;EACA,SAASkF,oBAAoBA,CAAA,EAAG;IAC9B,IAAI,CAAC,IAAI,CAAClF,KAAK,CAACiF,aAAa,EAAE;MAC7B,IAAI,CAACjF,KAAK,GAAG8E,mBAAmB,CAAC,IAAI,CAACpO,SAAS,EAAE,IAAI,CAACiM,OAAO,EAAE,IAAI,CAAC3C,KAAK,EAAE,IAAI,CAACmF,cAAc,CAAC;IACjG;EACF;;EAEA;AACA;AACA;AACA;AACA;AACA;EACA,SAASC,oBAAoBA,CAAC1O,SAAS,EAAEsJ,KAAK,EAAE;IAC9C;IACAqE,SAAS,CAAC3N,SAAS,CAAC,CAAC2O,mBAAmB,CAAC,QAAQ,EAAErF,KAAK,CAAC+E,WAAW,CAAC;;IAErE;IACA/E,KAAK,CAACyE,aAAa,CAACvC,OAAO,CAAC,UAAUlH,MAAM,EAAE;MAC5CA,MAAM,CAACqK,mBAAmB,CAAC,QAAQ,EAAErF,KAAK,CAAC+E,WAAW,CAAC;IACzD,CAAC,CAAC;;IAEF;IACA/E,KAAK,CAAC+E,WAAW,GAAG,IAAI;IACxB/E,KAAK,CAACyE,aAAa,GAAG,EAAE;IACxBzE,KAAK,CAACgF,aAAa,GAAG,IAAI;IAC1BhF,KAAK,CAACiF,aAAa,GAAG,KAAK;IAC3B,OAAOjF,KAAK;EACd;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASkE,qBAAqBA,CAAA,EAAG;IAC/B,IAAI,IAAI,CAAClE,KAAK,CAACiF,aAAa,EAAE;MAC5BK,oBAAoB,CAAC,IAAI,CAACH,cAAc,CAAC;MACzC,IAAI,CAACnF,KAAK,GAAGoF,oBAAoB,CAAC,IAAI,CAAC1O,SAAS,EAAE,IAAI,CAACsJ,KAAK,CAAC;IAC/D;EACF;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASuF,SAASA,CAACC,CAAC,EAAE;IACpB,OAAOA,CAAC,KAAK,EAAE,IAAI,CAACC,KAAK,CAACxL,UAAU,CAACuL,CAAC,CAAC,CAAC,IAAIE,QAAQ,CAACF,CAAC,CAAC;EACzD;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASG,SAASA,CAACpQ,OAAO,EAAEsE,MAAM,EAAE;IAClCyB,MAAM,CAAC6D,IAAI,CAACtF,MAAM,CAAC,CAACqI,OAAO,CAAC,UAAUT,IAAI,EAAE;MAC1C,IAAImE,IAAI,GAAG,EAAE;MACb;MACA,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAACvR,OAAO,CAACoN,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI8D,SAAS,CAAC1L,MAAM,CAAC4H,IAAI,CAAC,CAAC,EAAE;QACzGmE,IAAI,GAAG,IAAI;MACb;MACArQ,OAAO,CAACuO,KAAK,CAACrC,IAAI,CAAC,GAAG5H,MAAM,CAAC4H,IAAI,CAAC,GAAGmE,IAAI;IAC3C,CAAC,CAAC;EACJ;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASC,aAAaA,CAACtQ,OAAO,EAAEkN,UAAU,EAAE;IAC1CnH,MAAM,CAAC6D,IAAI,CAACsD,UAAU,CAAC,CAACP,OAAO,CAAC,UAAUT,IAAI,EAAE;MAC9C,IAAI5F,KAAK,GAAG4G,UAAU,CAAChB,IAAI,CAAC;MAC5B,IAAI5F,KAAK,KAAK,KAAK,EAAE;QACnBtG,OAAO,CAACuQ,YAAY,CAACrE,IAAI,EAAEgB,UAAU,CAAChB,IAAI,CAAC,CAAC;MAC9C,CAAC,MAAM;QACLlM,OAAO,CAACyO,eAAe,CAACvC,IAAI,CAAC;MAC/B;IACF,CAAC,CAAC;EACJ;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASsE,UAAUA,CAACjE,IAAI,EAAE;IACxB;IACA;IACA;IACA;IACA6D,SAAS,CAAC7D,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,EAAEyD,IAAI,CAACjI,MAAM,CAAC;;IAE5C;IACA;IACAgM,aAAa,CAAC/D,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,EAAEyD,IAAI,CAACW,UAAU,CAAC;;IAEpD;IACA,IAAIX,IAAI,CAACkE,YAAY,IAAI1K,MAAM,CAAC6D,IAAI,CAAC2C,IAAI,CAACU,WAAW,CAAC,CAACrO,MAAM,EAAE;MAC7DwR,SAAS,CAAC7D,IAAI,CAACkE,YAAY,EAAElE,IAAI,CAACU,WAAW,CAAC;IAChD;IAEA,OAAOV,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASmE,gBAAgBA,CAACvP,SAAS,EAAE2H,MAAM,EAAEsE,OAAO,EAAEuD,eAAe,EAAElG,KAAK,EAAE;IAC5E;IACA,IAAIY,gBAAgB,GAAGb,mBAAmB,CAACC,KAAK,EAAE3B,MAAM,EAAE3H,SAAS,EAAEiM,OAAO,CAACC,aAAa,CAAC;;IAE3F;IACA;IACA;IACA,IAAI7D,SAAS,GAAGD,oBAAoB,CAAC6D,OAAO,CAAC5D,SAAS,EAAE6B,gBAAgB,EAAEvC,MAAM,EAAE3H,SAAS,EAAEiM,OAAO,CAACd,SAAS,CAACgB,IAAI,CAACtE,iBAAiB,EAAEoE,OAAO,CAACd,SAAS,CAACgB,IAAI,CAACvE,OAAO,CAAC;IAEtKD,MAAM,CAACyH,YAAY,CAAC,aAAa,EAAE/G,SAAS,CAAC;;IAE7C;IACA;IACA4G,SAAS,CAACtH,MAAM,EAAE;MAAE0E,QAAQ,EAAEJ,OAAO,CAACC,aAAa,GAAG,OAAO,GAAG;IAAW,CAAC,CAAC;IAE7E,OAAOD,OAAO;EAChB;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASwD,iBAAiBA,CAACrE,IAAI,EAAEsE,WAAW,EAAE;IAC5C,IAAIC,aAAa,GAAGvE,IAAI,CAAC3F,OAAO;MAC5BkC,MAAM,GAAGgI,aAAa,CAAChI,MAAM;MAC7B3H,SAAS,GAAG2P,aAAa,CAAC3P,SAAS;IACvC,IAAI4P,KAAK,GAAGlM,IAAI,CAACkM,KAAK;MAClBC,KAAK,GAAGnM,IAAI,CAACmM,KAAK;IAEtB,IAAIC,OAAO,GAAG,SAASA,OAAOA,CAACC,CAAC,EAAE;MAChC,OAAOA,CAAC;IACV,CAAC;IAED,IAAIC,cAAc,GAAGJ,KAAK,CAAC5P,SAAS,CAAC+D,KAAK,CAAC;IAC3C,IAAIkM,WAAW,GAAGL,KAAK,CAACjI,MAAM,CAAC5D,KAAK,CAAC;IAErC,IAAImM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAACvS,OAAO,CAACyN,IAAI,CAAC/C,SAAS,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI8H,WAAW,GAAG/E,IAAI,CAAC/C,SAAS,CAAC1K,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,IAAIyS,eAAe,GAAGJ,cAAc,GAAG,CAAC,KAAKC,WAAW,GAAG,CAAC;IAC5D,IAAII,YAAY,GAAGL,cAAc,GAAG,CAAC,KAAK,CAAC,IAAIC,WAAW,GAAG,CAAC,KAAK,CAAC;IAEpE,IAAIK,mBAAmB,GAAG,CAACZ,WAAW,GAAGI,OAAO,GAAGI,UAAU,IAAIC,WAAW,IAAIC,eAAe,GAAGR,KAAK,GAAGC,KAAK;IAC/G,IAAIU,iBAAiB,GAAG,CAACb,WAAW,GAAGI,OAAO,GAAGF,KAAK;IAEtD,OAAO;MACL5M,IAAI,EAAEsN,mBAAmB,CAACD,YAAY,IAAI,CAACF,WAAW,IAAIT,WAAW,GAAG/H,MAAM,CAAC3E,IAAI,GAAG,CAAC,GAAG2E,MAAM,CAAC3E,IAAI,CAAC;MACtGF,GAAG,EAAEyN,iBAAiB,CAAC5I,MAAM,CAAC7E,GAAG,CAAC;MAClCC,MAAM,EAAEwN,iBAAiB,CAAC5I,MAAM,CAAC5E,MAAM,CAAC;MACxCE,KAAK,EAAEqN,mBAAmB,CAAC3I,MAAM,CAAC1E,KAAK;IACzC,CAAC;EACH;EAEA,IAAIuN,SAAS,GAAGtT,SAAS,IAAI,UAAU,CAAC4C,IAAI,CAACzC,SAAS,CAACK,SAAS,CAAC;;EAEjE;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS+S,YAAYA,CAACrF,IAAI,EAAEa,OAAO,EAAE;IACnC,IAAIxC,CAAC,GAAGwC,OAAO,CAACxC,CAAC;MACbE,CAAC,GAAGsC,OAAO,CAACtC,CAAC;IACjB,IAAIhC,MAAM,GAAGyD,IAAI,CAAC3F,OAAO,CAACkC,MAAM;;IAEhC;;IAEA,IAAI+I,2BAA2B,GAAGhG,IAAI,CAACU,IAAI,CAACnH,QAAQ,CAACkH,SAAS,EAAE,UAAUtI,QAAQ,EAAE;MAClF,OAAOA,QAAQ,CAAC+J,IAAI,KAAK,YAAY;IACvC,CAAC,CAAC,CAAC+D,eAAe;IAClB,IAAID,2BAA2B,KAAKtO,SAAS,EAAE;MAC7CqJ,OAAO,CAACC,IAAI,CAAC,+HAA+H,CAAC;IAC/I;IACA,IAAIiF,eAAe,GAAGD,2BAA2B,KAAKtO,SAAS,GAAGsO,2BAA2B,GAAGzE,OAAO,CAAC0E,eAAe;IAEvH,IAAIhQ,YAAY,GAAGH,eAAe,CAAC4K,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,CAAC;IACxD,IAAIiJ,gBAAgB,GAAGlL,qBAAqB,CAAC/E,YAAY,CAAC;;IAE1D;IACA,IAAIwC,MAAM,GAAG;MACXkJ,QAAQ,EAAE1E,MAAM,CAAC0E;IACnB,CAAC;IAED,IAAI5G,OAAO,GAAGgK,iBAAiB,CAACrE,IAAI,EAAEjO,MAAM,CAAC0T,gBAAgB,GAAG,CAAC,IAAI,CAACL,SAAS,CAAC;IAEhF,IAAInN,KAAK,GAAGoG,CAAC,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ;IAC7C,IAAInG,KAAK,GAAGqG,CAAC,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;;IAE5C;IACA;IACA;IACA,IAAImH,gBAAgB,GAAGjE,wBAAwB,CAAC,WAAW,CAAC;;IAE5D;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI7J,IAAI,GAAG,KAAK,CAAC;MACbF,GAAG,GAAG,KAAK,CAAC;IAChB,IAAIO,KAAK,KAAK,QAAQ,EAAE;MACtB;MACA;MACA,IAAI1C,YAAY,CAACtB,QAAQ,KAAK,MAAM,EAAE;QACpCyD,GAAG,GAAG,CAACnC,YAAY,CAACoF,YAAY,GAAGN,OAAO,CAAC1C,MAAM;MACnD,CAAC,MAAM;QACLD,GAAG,GAAG,CAAC8N,gBAAgB,CAAC9M,MAAM,GAAG2B,OAAO,CAAC1C,MAAM;MACjD;IACF,CAAC,MAAM;MACLD,GAAG,GAAG2C,OAAO,CAAC3C,GAAG;IACnB;IACA,IAAIQ,KAAK,KAAK,OAAO,EAAE;MACrB,IAAI3C,YAAY,CAACtB,QAAQ,KAAK,MAAM,EAAE;QACpC2D,IAAI,GAAG,CAACrC,YAAY,CAACmF,WAAW,GAAGL,OAAO,CAACxC,KAAK;MAClD,CAAC,MAAM;QACLD,IAAI,GAAG,CAAC4N,gBAAgB,CAAC7M,KAAK,GAAG0B,OAAO,CAACxC,KAAK;MAChD;IACF,CAAC,MAAM;MACLD,IAAI,GAAGyC,OAAO,CAACzC,IAAI;IACrB;IACA,IAAI2N,eAAe,IAAIG,gBAAgB,EAAE;MACvC3N,MAAM,CAAC2N,gBAAgB,CAAC,GAAG,cAAc,GAAG9N,IAAI,GAAG,MAAM,GAAGF,GAAG,GAAG,QAAQ;MAC1EK,MAAM,CAACE,KAAK,CAAC,GAAG,CAAC;MACjBF,MAAM,CAACG,KAAK,CAAC,GAAG,CAAC;MACjBH,MAAM,CAACoK,UAAU,GAAG,WAAW;IACjC,CAAC,MAAM;MACL;MACA,IAAIwD,SAAS,GAAG1N,KAAK,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3C,IAAI2N,UAAU,GAAG1N,KAAK,KAAK,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3CH,MAAM,CAACE,KAAK,CAAC,GAAGP,GAAG,GAAGiO,SAAS;MAC/B5N,MAAM,CAACG,KAAK,CAAC,GAAGN,IAAI,GAAGgO,UAAU;MACjC7N,MAAM,CAACoK,UAAU,GAAGlK,KAAK,GAAG,IAAI,GAAGC,KAAK;IAC1C;;IAEA;IACA,IAAIyI,UAAU,GAAG;MACf,aAAa,EAAEX,IAAI,CAAC/C;IACtB,CAAC;;IAED;IACA+C,IAAI,CAACW,UAAU,GAAG3G,QAAQ,CAAC,CAAC,CAAC,EAAE2G,UAAU,EAAEX,IAAI,CAACW,UAAU,CAAC;IAC3DX,IAAI,CAACjI,MAAM,GAAGiC,QAAQ,CAAC,CAAC,CAAC,EAAEjC,MAAM,EAAEiI,IAAI,CAACjI,MAAM,CAAC;IAC/CiI,IAAI,CAACU,WAAW,GAAG1G,QAAQ,CAAC,CAAC,CAAC,EAAEgG,IAAI,CAAC3F,OAAO,CAACwL,KAAK,EAAE7F,IAAI,CAACU,WAAW,CAAC;IAErE,OAAOV,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS8F,kBAAkBA,CAAC/F,SAAS,EAAEgG,cAAc,EAAEC,aAAa,EAAE;IACpE,IAAIC,UAAU,GAAG3G,IAAI,CAACS,SAAS,EAAE,UAAUhD,IAAI,EAAE;MAC/C,IAAIyE,IAAI,GAAGzE,IAAI,CAACyE,IAAI;MACpB,OAAOA,IAAI,KAAKuE,cAAc;IAChC,CAAC,CAAC;IAEF,IAAIG,UAAU,GAAG,CAAC,CAACD,UAAU,IAAIlG,SAAS,CAACwB,IAAI,CAAC,UAAU9J,QAAQ,EAAE;MAClE,OAAOA,QAAQ,CAAC+J,IAAI,KAAKwE,aAAa,IAAIvO,QAAQ,CAAC8I,OAAO,IAAI9I,QAAQ,CAACzB,KAAK,GAAGiQ,UAAU,CAACjQ,KAAK;IACjG,CAAC,CAAC;IAEF,IAAI,CAACkQ,UAAU,EAAE;MACf,IAAIC,WAAW,GAAG,GAAG,GAAGJ,cAAc,GAAG,GAAG;MAC5C,IAAIK,SAAS,GAAG,GAAG,GAAGJ,aAAa,GAAG,GAAG;MACzC3F,OAAO,CAACC,IAAI,CAAC8F,SAAS,GAAG,2BAA2B,GAAGD,WAAW,GAAG,2DAA2D,GAAGA,WAAW,GAAG,GAAG,CAAC;IACvJ;IACA,OAAOD,UAAU;EACnB;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASL,KAAKA,CAAC7F,IAAI,EAAEa,OAAO,EAAE;IAC5B,IAAIwF,mBAAmB;;IAEvB;IACA,IAAI,CAACP,kBAAkB,CAAC9F,IAAI,CAACnH,QAAQ,CAACkH,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE;MACzE,OAAOC,IAAI;IACb;IAEA,IAAIkE,YAAY,GAAGrD,OAAO,CAACpN,OAAO;;IAElC;IACA,IAAI,OAAOyQ,YAAY,KAAK,QAAQ,EAAE;MACpCA,YAAY,GAAGlE,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,CAAC+J,aAAa,CAACpC,YAAY,CAAC;;MAE/D;MACA,IAAI,CAACA,YAAY,EAAE;QACjB,OAAOlE,IAAI;MACb;IACF,CAAC,MAAM;MACL;MACA;MACA,IAAI,CAACA,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,CAAC5F,QAAQ,CAACuN,YAAY,CAAC,EAAE;QAChD7D,OAAO,CAACC,IAAI,CAAC,+DAA+D,CAAC;QAC7E,OAAON,IAAI;MACb;IACF;IAEA,IAAI/C,SAAS,GAAG+C,IAAI,CAAC/C,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAIuG,aAAa,GAAGvE,IAAI,CAAC3F,OAAO;MAC5BkC,MAAM,GAAGgI,aAAa,CAAChI,MAAM;MAC7B3H,SAAS,GAAG2P,aAAa,CAAC3P,SAAS;IAEvC,IAAIkQ,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAACvS,OAAO,CAAC0K,SAAS,CAAC,KAAK,CAAC,CAAC;IAE5D,IAAIsJ,GAAG,GAAGzB,UAAU,GAAG,QAAQ,GAAG,OAAO;IACzC,IAAI0B,eAAe,GAAG1B,UAAU,GAAG,KAAK,GAAG,MAAM;IACjD,IAAIhO,IAAI,GAAG0P,eAAe,CAACC,WAAW,CAAC,CAAC;IACxC,IAAIC,OAAO,GAAG5B,UAAU,GAAG,MAAM,GAAG,KAAK;IACzC,IAAI6B,MAAM,GAAG7B,UAAU,GAAG,QAAQ,GAAG,OAAO;IAC5C,IAAI8B,gBAAgB,GAAGxI,aAAa,CAAC8F,YAAY,CAAC,CAACqC,GAAG,CAAC;;IAEvD;IACA;IACA;IACA;;IAEA;IACA,IAAI3R,SAAS,CAAC+R,MAAM,CAAC,GAAGC,gBAAgB,GAAGrK,MAAM,CAACzF,IAAI,CAAC,EAAE;MACvDkJ,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAACzF,IAAI,CAAC,IAAIyF,MAAM,CAACzF,IAAI,CAAC,IAAIlC,SAAS,CAAC+R,MAAM,CAAC,GAAGC,gBAAgB,CAAC;IACpF;IACA;IACA,IAAIhS,SAAS,CAACkC,IAAI,CAAC,GAAG8P,gBAAgB,GAAGrK,MAAM,CAACoK,MAAM,CAAC,EAAE;MACvD3G,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAACzF,IAAI,CAAC,IAAIlC,SAAS,CAACkC,IAAI,CAAC,GAAG8P,gBAAgB,GAAGrK,MAAM,CAACoK,MAAM,CAAC;IAClF;IACA3G,IAAI,CAAC3F,OAAO,CAACkC,MAAM,GAAGnC,aAAa,CAAC4F,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAAC;;IAExD;IACA,IAAIsK,MAAM,GAAGjS,SAAS,CAACkC,IAAI,CAAC,GAAGlC,SAAS,CAAC2R,GAAG,CAAC,GAAG,CAAC,GAAGK,gBAAgB,GAAG,CAAC;;IAExE;IACA;IACA,IAAI9S,GAAG,GAAGN,wBAAwB,CAACwM,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,CAAC;IACxD,IAAIuK,gBAAgB,GAAG3O,UAAU,CAACrE,GAAG,CAAC,QAAQ,GAAG0S,eAAe,CAAC,EAAE,EAAE,CAAC;IACtE,IAAIO,gBAAgB,GAAG5O,UAAU,CAACrE,GAAG,CAAC,QAAQ,GAAG0S,eAAe,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAChF,IAAIQ,SAAS,GAAGH,MAAM,GAAG7G,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAACzF,IAAI,CAAC,GAAGgQ,gBAAgB,GAAGC,gBAAgB;;IAExF;IACAC,SAAS,GAAG1O,IAAI,CAACC,GAAG,CAACD,IAAI,CAAC2O,GAAG,CAAC1K,MAAM,CAACgK,GAAG,CAAC,GAAGK,gBAAgB,EAAEI,SAAS,CAAC,EAAE,CAAC,CAAC;IAE5EhH,IAAI,CAACkE,YAAY,GAAGA,YAAY;IAChClE,IAAI,CAAC3F,OAAO,CAACwL,KAAK,IAAIQ,mBAAmB,GAAG,CAAC,CAAC,EAAE5M,cAAc,CAAC4M,mBAAmB,EAAEvP,IAAI,EAAEwB,IAAI,CAACkM,KAAK,CAACwC,SAAS,CAAC,CAAC,EAAEvN,cAAc,CAAC4M,mBAAmB,EAAEK,OAAO,EAAE,EAAE,CAAC,EAAEL,mBAAmB,CAAC;IAExL,OAAOrG,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASkH,oBAAoBA,CAACnJ,SAAS,EAAE;IACvC,IAAIA,SAAS,KAAK,KAAK,EAAE;MACvB,OAAO,OAAO;IAChB,CAAC,MAAM,IAAIA,SAAS,KAAK,OAAO,EAAE;MAChC,OAAO,KAAK;IACd;IACA,OAAOA,SAAS;EAClB;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAIoJ,UAAU,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC;;EAEjM;EACA,IAAIC,eAAe,GAAGD,UAAU,CAAChH,KAAK,CAAC,CAAC,CAAC;;EAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASkH,SAASA,CAACpK,SAAS,EAAE;IAC5B,IAAIqK,OAAO,GAAGvQ,SAAS,CAAC1E,MAAM,GAAG,CAAC,IAAI0E,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;IAEvF,IAAIwQ,KAAK,GAAGH,eAAe,CAAC7U,OAAO,CAAC0K,SAAS,CAAC;IAC9C,IAAIsC,GAAG,GAAG6H,eAAe,CAACjH,KAAK,CAACoH,KAAK,GAAG,CAAC,CAAC,CAACC,MAAM,CAACJ,eAAe,CAACjH,KAAK,CAAC,CAAC,EAAEoH,KAAK,CAAC,CAAC;IAClF,OAAOD,OAAO,GAAG/H,GAAG,CAACkI,OAAO,CAAC,CAAC,GAAGlI,GAAG;EACtC;EAEA,IAAImI,SAAS,GAAG;IACdC,IAAI,EAAE,MAAM;IACZC,SAAS,EAAE,WAAW;IACtBC,gBAAgB,EAAE;EACpB,CAAC;;EAED;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS9G,IAAIA,CAACf,IAAI,EAAEa,OAAO,EAAE;IAC3B;IACA,IAAIQ,iBAAiB,CAACrB,IAAI,CAACnH,QAAQ,CAACkH,SAAS,EAAE,OAAO,CAAC,EAAE;MACvD,OAAOC,IAAI;IACb;IAEA,IAAIA,IAAI,CAACY,OAAO,IAAIZ,IAAI,CAAC/C,SAAS,KAAK+C,IAAI,CAACgB,iBAAiB,EAAE;MAC7D;MACA,OAAOhB,IAAI;IACb;IAEA,IAAItD,UAAU,GAAGJ,aAAa,CAAC0D,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,EAAEyD,IAAI,CAACnH,QAAQ,CAACjE,SAAS,EAAEiM,OAAO,CAACrE,OAAO,EAAEqE,OAAO,CAACpE,iBAAiB,EAAEuD,IAAI,CAACc,aAAa,CAAC;IAE7I,IAAI7D,SAAS,GAAG+C,IAAI,CAAC/C,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI8J,iBAAiB,GAAGrJ,oBAAoB,CAACxB,SAAS,CAAC;IACvD,IAAIc,SAAS,GAAGiC,IAAI,CAAC/C,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IAElD,IAAI+J,SAAS,GAAG,EAAE;IAElB,QAAQlH,OAAO,CAACmH,QAAQ;MACtB,KAAKN,SAAS,CAACC,IAAI;QACjBI,SAAS,GAAG,CAAC9K,SAAS,EAAE6K,iBAAiB,CAAC;QAC1C;MACF,KAAKJ,SAAS,CAACE,SAAS;QACtBG,SAAS,GAAGV,SAAS,CAACpK,SAAS,CAAC;QAChC;MACF,KAAKyK,SAAS,CAACG,gBAAgB;QAC7BE,SAAS,GAAGV,SAAS,CAACpK,SAAS,EAAE,IAAI,CAAC;QACtC;MACF;QACE8K,SAAS,GAAGlH,OAAO,CAACmH,QAAQ;IAChC;IAEAD,SAAS,CAAC3H,OAAO,CAAC,UAAU6H,IAAI,EAAEV,KAAK,EAAE;MACvC,IAAItK,SAAS,KAAKgL,IAAI,IAAIF,SAAS,CAAC1V,MAAM,KAAKkV,KAAK,GAAG,CAAC,EAAE;QACxD,OAAOvH,IAAI;MACb;MAEA/C,SAAS,GAAG+C,IAAI,CAAC/C,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACxC8J,iBAAiB,GAAGrJ,oBAAoB,CAACxB,SAAS,CAAC;MAEnD,IAAI+B,aAAa,GAAGgB,IAAI,CAAC3F,OAAO,CAACkC,MAAM;MACvC,IAAI2L,UAAU,GAAGlI,IAAI,CAAC3F,OAAO,CAACzF,SAAS;;MAEvC;MACA,IAAI6P,KAAK,GAAGnM,IAAI,CAACmM,KAAK;MACtB,IAAI0D,WAAW,GAAGlL,SAAS,KAAK,MAAM,IAAIwH,KAAK,CAACzF,aAAa,CAACnH,KAAK,CAAC,GAAG4M,KAAK,CAACyD,UAAU,CAACtQ,IAAI,CAAC,IAAIqF,SAAS,KAAK,OAAO,IAAIwH,KAAK,CAACzF,aAAa,CAACpH,IAAI,CAAC,GAAG6M,KAAK,CAACyD,UAAU,CAACrQ,KAAK,CAAC,IAAIoF,SAAS,KAAK,KAAK,IAAIwH,KAAK,CAACzF,aAAa,CAACrH,MAAM,CAAC,GAAG8M,KAAK,CAACyD,UAAU,CAACxQ,GAAG,CAAC,IAAIuF,SAAS,KAAK,QAAQ,IAAIwH,KAAK,CAACzF,aAAa,CAACtH,GAAG,CAAC,GAAG+M,KAAK,CAACyD,UAAU,CAACvQ,MAAM,CAAC;MAE5U,IAAIyQ,aAAa,GAAG3D,KAAK,CAACzF,aAAa,CAACpH,IAAI,CAAC,GAAG6M,KAAK,CAAC/H,UAAU,CAAC9E,IAAI,CAAC;MACtE,IAAIyQ,cAAc,GAAG5D,KAAK,CAACzF,aAAa,CAACnH,KAAK,CAAC,GAAG4M,KAAK,CAAC/H,UAAU,CAAC7E,KAAK,CAAC;MACzE,IAAIyQ,YAAY,GAAG7D,KAAK,CAACzF,aAAa,CAACtH,GAAG,CAAC,GAAG+M,KAAK,CAAC/H,UAAU,CAAChF,GAAG,CAAC;MACnE,IAAI6Q,eAAe,GAAG9D,KAAK,CAACzF,aAAa,CAACrH,MAAM,CAAC,GAAG8M,KAAK,CAAC/H,UAAU,CAAC/E,MAAM,CAAC;MAE5E,IAAI6Q,mBAAmB,GAAGvL,SAAS,KAAK,MAAM,IAAImL,aAAa,IAAInL,SAAS,KAAK,OAAO,IAAIoL,cAAc,IAAIpL,SAAS,KAAK,KAAK,IAAIqL,YAAY,IAAIrL,SAAS,KAAK,QAAQ,IAAIsL,eAAe;;MAE9L;MACA,IAAIzD,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAACvS,OAAO,CAAC0K,SAAS,CAAC,KAAK,CAAC,CAAC;;MAE5D;MACA,IAAIwL,qBAAqB,GAAG,CAAC,CAAC5H,OAAO,CAAC6H,cAAc,KAAK5D,UAAU,IAAI/G,SAAS,KAAK,OAAO,IAAIqK,aAAa,IAAItD,UAAU,IAAI/G,SAAS,KAAK,KAAK,IAAIsK,cAAc,IAAI,CAACvD,UAAU,IAAI/G,SAAS,KAAK,OAAO,IAAIuK,YAAY,IAAI,CAACxD,UAAU,IAAI/G,SAAS,KAAK,KAAK,IAAIwK,eAAe,CAAC;;MAEtR;MACA,IAAII,yBAAyB,GAAG,CAAC,CAAC9H,OAAO,CAAC+H,uBAAuB,KAAK9D,UAAU,IAAI/G,SAAS,KAAK,OAAO,IAAIsK,cAAc,IAAIvD,UAAU,IAAI/G,SAAS,KAAK,KAAK,IAAIqK,aAAa,IAAI,CAACtD,UAAU,IAAI/G,SAAS,KAAK,OAAO,IAAIwK,eAAe,IAAI,CAACzD,UAAU,IAAI/G,SAAS,KAAK,KAAK,IAAIuK,YAAY,CAAC;MAEnS,IAAIO,gBAAgB,GAAGJ,qBAAqB,IAAIE,yBAAyB;MAEzE,IAAIR,WAAW,IAAIK,mBAAmB,IAAIK,gBAAgB,EAAE;QAC1D;QACA7I,IAAI,CAACY,OAAO,GAAG,IAAI;QAEnB,IAAIuH,WAAW,IAAIK,mBAAmB,EAAE;UACtCvL,SAAS,GAAG8K,SAAS,CAACR,KAAK,GAAG,CAAC,CAAC;QAClC;QAEA,IAAIsB,gBAAgB,EAAE;UACpB9K,SAAS,GAAGmJ,oBAAoB,CAACnJ,SAAS,CAAC;QAC7C;QAEAiC,IAAI,CAAC/C,SAAS,GAAGA,SAAS,IAAIc,SAAS,GAAG,GAAG,GAAGA,SAAS,GAAG,EAAE,CAAC;;QAE/D;QACA;QACAiC,IAAI,CAAC3F,OAAO,CAACkC,MAAM,GAAGvC,QAAQ,CAAC,CAAC,CAAC,EAAEgG,IAAI,CAAC3F,OAAO,CAACkC,MAAM,EAAEsC,gBAAgB,CAACmB,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,EAAEyD,IAAI,CAAC3F,OAAO,CAACzF,SAAS,EAAEoL,IAAI,CAAC/C,SAAS,CAAC,CAAC;QAEvI+C,IAAI,GAAGF,YAAY,CAACE,IAAI,CAACnH,QAAQ,CAACkH,SAAS,EAAEC,IAAI,EAAE,MAAM,CAAC;MAC5D;IACF,CAAC,CAAC;IACF,OAAOA,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS8I,YAAYA,CAAC9I,IAAI,EAAE;IAC1B,IAAIuE,aAAa,GAAGvE,IAAI,CAAC3F,OAAO;MAC5BkC,MAAM,GAAGgI,aAAa,CAAChI,MAAM;MAC7B3H,SAAS,GAAG2P,aAAa,CAAC3P,SAAS;IAEvC,IAAIqI,SAAS,GAAG+C,IAAI,CAAC/C,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAIyG,KAAK,GAAGnM,IAAI,CAACmM,KAAK;IACtB,IAAIK,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAACvS,OAAO,CAAC0K,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAInG,IAAI,GAAGgO,UAAU,GAAG,OAAO,GAAG,QAAQ;IAC1C,IAAI6B,MAAM,GAAG7B,UAAU,GAAG,MAAM,GAAG,KAAK;IACxC,IAAI1F,WAAW,GAAG0F,UAAU,GAAG,OAAO,GAAG,QAAQ;IAEjD,IAAIvI,MAAM,CAACzF,IAAI,CAAC,GAAG2N,KAAK,CAAC7P,SAAS,CAAC+R,MAAM,CAAC,CAAC,EAAE;MAC3C3G,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAACoK,MAAM,CAAC,GAAGlC,KAAK,CAAC7P,SAAS,CAAC+R,MAAM,CAAC,CAAC,GAAGpK,MAAM,CAAC6C,WAAW,CAAC;IAC9E;IACA,IAAI7C,MAAM,CAACoK,MAAM,CAAC,GAAGlC,KAAK,CAAC7P,SAAS,CAACkC,IAAI,CAAC,CAAC,EAAE;MAC3CkJ,IAAI,CAAC3F,OAAO,CAACkC,MAAM,CAACoK,MAAM,CAAC,GAAGlC,KAAK,CAAC7P,SAAS,CAACkC,IAAI,CAAC,CAAC;IACtD;IAEA,OAAOkJ,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS+I,OAAOA,CAACC,GAAG,EAAE5J,WAAW,EAAEJ,aAAa,EAAEF,gBAAgB,EAAE;IAClE;IACA,IAAId,KAAK,GAAGgL,GAAG,CAACnJ,KAAK,CAAC,2BAA2B,CAAC;IAClD,IAAI9F,KAAK,GAAG,CAACiE,KAAK,CAAC,CAAC,CAAC;IACrB,IAAI8F,IAAI,GAAG9F,KAAK,CAAC,CAAC,CAAC;;IAEnB;IACA,IAAI,CAACjE,KAAK,EAAE;MACV,OAAOiP,GAAG;IACZ;IAEA,IAAIlF,IAAI,CAACvR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;MAC3B,IAAIkB,OAAO,GAAG,KAAK,CAAC;MACpB,QAAQqQ,IAAI;QACV,KAAK,IAAI;UACPrQ,OAAO,GAAGuL,aAAa;UACvB;QACF,KAAK,GAAG;QACR,KAAK,IAAI;QACT;UACEvL,OAAO,GAAGqL,gBAAgB;MAC9B;MAEA,IAAIzH,IAAI,GAAG+C,aAAa,CAAC3G,OAAO,CAAC;MACjC,OAAO4D,IAAI,CAAC+H,WAAW,CAAC,GAAG,GAAG,GAAGrF,KAAK;IACxC,CAAC,MAAM,IAAI+J,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,EAAE;MACzC;MACA,IAAImF,IAAI,GAAG,KAAK,CAAC;MACjB,IAAInF,IAAI,KAAK,IAAI,EAAE;QACjBmF,IAAI,GAAG3Q,IAAI,CAACC,GAAG,CAACvG,QAAQ,CAACqD,eAAe,CAACsF,YAAY,EAAE5I,MAAM,CAACiK,WAAW,IAAI,CAAC,CAAC;MACjF,CAAC,MAAM;QACLiN,IAAI,GAAG3Q,IAAI,CAACC,GAAG,CAACvG,QAAQ,CAACqD,eAAe,CAACqF,WAAW,EAAE3I,MAAM,CAACgK,UAAU,IAAI,CAAC,CAAC;MAC/E;MACA,OAAOkN,IAAI,GAAG,GAAG,GAAGlP,KAAK;IAC3B,CAAC,MAAM;MACL;MACA;MACA,OAAOA,KAAK;IACd;EACF;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASmP,WAAWA,CAACjN,MAAM,EAAE+C,aAAa,EAAEF,gBAAgB,EAAEqK,aAAa,EAAE;IAC3E,IAAI9O,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;;IAEpB;IACA;IACA;IACA,IAAI+O,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC7W,OAAO,CAAC4W,aAAa,CAAC,KAAK,CAAC,CAAC;;IAE/D;IACA;IACA,IAAIE,SAAS,GAAGpN,MAAM,CAAC+B,KAAK,CAAC,SAAS,CAAC,CAACV,GAAG,CAAC,UAAUgM,IAAI,EAAE;MAC1D,OAAOA,IAAI,CAACC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;;IAEF;IACA;IACA,IAAIC,OAAO,GAAGH,SAAS,CAAC9W,OAAO,CAAC+M,IAAI,CAAC+J,SAAS,EAAE,UAAUC,IAAI,EAAE;MAC9D,OAAOA,IAAI,CAACG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAIJ,SAAS,CAACG,OAAO,CAAC,IAAIH,SAAS,CAACG,OAAO,CAAC,CAACjX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;MAChE8N,OAAO,CAACC,IAAI,CAAC,8EAA8E,CAAC;IAC9F;;IAEA;IACA;IACA,IAAIoJ,UAAU,GAAG,aAAa;IAC9B,IAAIC,GAAG,GAAGH,OAAO,KAAK,CAAC,CAAC,GAAG,CAACH,SAAS,CAAClJ,KAAK,CAAC,CAAC,EAAEqJ,OAAO,CAAC,CAAChC,MAAM,CAAC,CAAC6B,SAAS,CAACG,OAAO,CAAC,CAACxL,KAAK,CAAC0L,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAACL,SAAS,CAACG,OAAO,CAAC,CAACxL,KAAK,CAAC0L,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAClC,MAAM,CAAC6B,SAAS,CAAClJ,KAAK,CAACqJ,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAACH,SAAS,CAAC;;IAExM;IACAM,GAAG,GAAGA,GAAG,CAACrM,GAAG,CAAC,UAAUsM,EAAE,EAAErC,KAAK,EAAE;MACjC;MACA,IAAInI,WAAW,GAAG,CAACmI,KAAK,KAAK,CAAC,GAAG,CAAC6B,SAAS,GAAGA,SAAS,IAAI,QAAQ,GAAG,OAAO;MAC7E,IAAIS,iBAAiB,GAAG,KAAK;MAC7B,OAAOD;MACP;MACA;MAAA,CACCE,MAAM,CAAC,UAAUrM,CAAC,EAAEC,CAAC,EAAE;QACtB,IAAID,CAAC,CAACA,CAAC,CAACpL,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAACE,OAAO,CAACmL,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;UAC1DD,CAAC,CAACA,CAAC,CAACpL,MAAM,GAAG,CAAC,CAAC,GAAGqL,CAAC;UACnBmM,iBAAiB,GAAG,IAAI;UACxB,OAAOpM,CAAC;QACV,CAAC,MAAM,IAAIoM,iBAAiB,EAAE;UAC5BpM,CAAC,CAACA,CAAC,CAACpL,MAAM,GAAG,CAAC,CAAC,IAAIqL,CAAC;UACpBmM,iBAAiB,GAAG,KAAK;UACzB,OAAOpM,CAAC;QACV,CAAC,MAAM;UACL,OAAOA,CAAC,CAAC+J,MAAM,CAAC9J,CAAC,CAAC;QACpB;MACF,CAAC,EAAE,EAAE;MACL;MAAA,CACCJ,GAAG,CAAC,UAAU0L,GAAG,EAAE;QAClB,OAAOD,OAAO,CAACC,GAAG,EAAE5J,WAAW,EAAEJ,aAAa,EAAEF,gBAAgB,CAAC;MACnE,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACA6K,GAAG,CAACvJ,OAAO,CAAC,UAAUwJ,EAAE,EAAErC,KAAK,EAAE;MAC/BqC,EAAE,CAACxJ,OAAO,CAAC,UAAUkJ,IAAI,EAAES,MAAM,EAAE;QACjC,IAAItG,SAAS,CAAC6F,IAAI,CAAC,EAAE;UACnBjP,OAAO,CAACkN,KAAK,CAAC,IAAI+B,IAAI,IAAIM,EAAE,CAACG,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO1P,OAAO;EAChB;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS4B,MAAMA,CAAC+D,IAAI,EAAEjD,IAAI,EAAE;IAC1B,IAAId,MAAM,GAAGc,IAAI,CAACd,MAAM;IACxB,IAAIgB,SAAS,GAAG+C,IAAI,CAAC/C,SAAS;MAC1BsH,aAAa,GAAGvE,IAAI,CAAC3F,OAAO;MAC5BkC,MAAM,GAAGgI,aAAa,CAAChI,MAAM;MAC7B3H,SAAS,GAAG2P,aAAa,CAAC3P,SAAS;IAEvC,IAAIuU,aAAa,GAAGlM,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3C,IAAI3D,OAAO,GAAG,KAAK,CAAC;IACpB,IAAIoJ,SAAS,CAAC,CAACxH,MAAM,CAAC,EAAE;MACtB5B,OAAO,GAAG,CAAC,CAAC4B,MAAM,EAAE,CAAC,CAAC;IACxB,CAAC,MAAM;MACL5B,OAAO,GAAG6O,WAAW,CAACjN,MAAM,EAAEM,MAAM,EAAE3H,SAAS,EAAEuU,aAAa,CAAC;IACjE;IAEA,IAAIA,aAAa,KAAK,MAAM,EAAE;MAC5B5M,MAAM,CAAC7E,GAAG,IAAI2C,OAAO,CAAC,CAAC,CAAC;MACxBkC,MAAM,CAAC3E,IAAI,IAAIyC,OAAO,CAAC,CAAC,CAAC;IAC3B,CAAC,MAAM,IAAI8O,aAAa,KAAK,OAAO,EAAE;MACpC5M,MAAM,CAAC7E,GAAG,IAAI2C,OAAO,CAAC,CAAC,CAAC;MACxBkC,MAAM,CAAC3E,IAAI,IAAIyC,OAAO,CAAC,CAAC,CAAC;IAC3B,CAAC,MAAM,IAAI8O,aAAa,KAAK,KAAK,EAAE;MAClC5M,MAAM,CAAC3E,IAAI,IAAIyC,OAAO,CAAC,CAAC,CAAC;MACzBkC,MAAM,CAAC7E,GAAG,IAAI2C,OAAO,CAAC,CAAC,CAAC;IAC1B,CAAC,MAAM,IAAI8O,aAAa,KAAK,QAAQ,EAAE;MACrC5M,MAAM,CAAC3E,IAAI,IAAIyC,OAAO,CAAC,CAAC,CAAC;MACzBkC,MAAM,CAAC7E,GAAG,IAAI2C,OAAO,CAAC,CAAC,CAAC;IAC1B;IAEA2F,IAAI,CAACzD,MAAM,GAAGA,MAAM;IACpB,OAAOyD,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASgK,eAAeA,CAAChK,IAAI,EAAEa,OAAO,EAAE;IACtC,IAAIpE,iBAAiB,GAAGoE,OAAO,CAACpE,iBAAiB,IAAIrH,eAAe,CAAC4K,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,CAAC;;IAE1F;IACA;IACA;IACA,IAAIyD,IAAI,CAACnH,QAAQ,CAACjE,SAAS,KAAK6H,iBAAiB,EAAE;MACjDA,iBAAiB,GAAGrH,eAAe,CAACqH,iBAAiB,CAAC;IACxD;;IAEA;IACA;IACA;IACA,IAAIwN,aAAa,GAAGxI,wBAAwB,CAAC,WAAW,CAAC;IACzD,IAAIyI,YAAY,GAAGlK,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,CAACyF,KAAK,CAAC,CAAC;IAC/C,IAAItK,GAAG,GAAGwS,YAAY,CAACxS,GAAG;MACtBE,IAAI,GAAGsS,YAAY,CAACtS,IAAI;MACxBuS,SAAS,GAAGD,YAAY,CAACD,aAAa,CAAC;IAE3CC,YAAY,CAACxS,GAAG,GAAG,EAAE;IACrBwS,YAAY,CAACtS,IAAI,GAAG,EAAE;IACtBsS,YAAY,CAACD,aAAa,CAAC,GAAG,EAAE;IAEhC,IAAIvN,UAAU,GAAGJ,aAAa,CAAC0D,IAAI,CAACnH,QAAQ,CAAC0D,MAAM,EAAEyD,IAAI,CAACnH,QAAQ,CAACjE,SAAS,EAAEiM,OAAO,CAACrE,OAAO,EAAEC,iBAAiB,EAAEuD,IAAI,CAACc,aAAa,CAAC;;IAErI;IACA;IACAoJ,YAAY,CAACxS,GAAG,GAAGA,GAAG;IACtBwS,YAAY,CAACtS,IAAI,GAAGA,IAAI;IACxBsS,YAAY,CAACD,aAAa,CAAC,GAAGE,SAAS;IAEvCtJ,OAAO,CAACnE,UAAU,GAAGA,UAAU;IAE/B,IAAI1G,KAAK,GAAG6K,OAAO,CAACuJ,QAAQ;IAC5B,IAAI7N,MAAM,GAAGyD,IAAI,CAAC3F,OAAO,CAACkC,MAAM;IAEhC,IAAIiD,KAAK,GAAG;MACV6K,OAAO,EAAE,SAASA,OAAOA,CAACpN,SAAS,EAAE;QACnC,IAAIlD,KAAK,GAAGwC,MAAM,CAACU,SAAS,CAAC;QAC7B,IAAIV,MAAM,CAACU,SAAS,CAAC,GAAGP,UAAU,CAACO,SAAS,CAAC,IAAI,CAAC4D,OAAO,CAACyJ,mBAAmB,EAAE;UAC7EvQ,KAAK,GAAGzB,IAAI,CAACC,GAAG,CAACgE,MAAM,CAACU,SAAS,CAAC,EAAEP,UAAU,CAACO,SAAS,CAAC,CAAC;QAC5D;QACA,OAAOxD,cAAc,CAAC,CAAC,CAAC,EAAEwD,SAAS,EAAElD,KAAK,CAAC;MAC7C,CAAC;MACDwQ,SAAS,EAAE,SAASA,SAASA,CAACtN,SAAS,EAAE;QACvC,IAAIiC,QAAQ,GAAGjC,SAAS,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK;QACrD,IAAIlD,KAAK,GAAGwC,MAAM,CAAC2C,QAAQ,CAAC;QAC5B,IAAI3C,MAAM,CAACU,SAAS,CAAC,GAAGP,UAAU,CAACO,SAAS,CAAC,IAAI,CAAC4D,OAAO,CAACyJ,mBAAmB,EAAE;UAC7EvQ,KAAK,GAAGzB,IAAI,CAAC2O,GAAG,CAAC1K,MAAM,CAAC2C,QAAQ,CAAC,EAAExC,UAAU,CAACO,SAAS,CAAC,IAAIA,SAAS,KAAK,OAAO,GAAGV,MAAM,CAAC5D,KAAK,GAAG4D,MAAM,CAAC7D,MAAM,CAAC,CAAC;QACpH;QACA,OAAOe,cAAc,CAAC,CAAC,CAAC,EAAEyF,QAAQ,EAAEnF,KAAK,CAAC;MAC5C;IACF,CAAC;IAED/D,KAAK,CAACoK,OAAO,CAAC,UAAUnD,SAAS,EAAE;MACjC,IAAInG,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAACvE,OAAO,CAAC0K,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,WAAW;MAC9EV,MAAM,GAAGvC,QAAQ,CAAC,CAAC,CAAC,EAAEuC,MAAM,EAAEiD,KAAK,CAAC1I,IAAI,CAAC,CAACmG,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF+C,IAAI,CAAC3F,OAAO,CAACkC,MAAM,GAAGA,MAAM;IAE5B,OAAOyD,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAASwK,KAAKA,CAACxK,IAAI,EAAE;IACnB,IAAI/C,SAAS,GAAG+C,IAAI,CAAC/C,SAAS;IAC9B,IAAIkM,aAAa,GAAGlM,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAIyM,cAAc,GAAGxN,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;IAE5C;IACA,IAAIyM,cAAc,EAAE;MAClB,IAAIlG,aAAa,GAAGvE,IAAI,CAAC3F,OAAO;QAC5BzF,SAAS,GAAG2P,aAAa,CAAC3P,SAAS;QACnC2H,MAAM,GAAGgI,aAAa,CAAChI,MAAM;MAEjC,IAAIuI,UAAU,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAACvS,OAAO,CAAC4W,aAAa,CAAC,KAAK,CAAC,CAAC;MAChE,IAAIrS,IAAI,GAAGgO,UAAU,GAAG,MAAM,GAAG,KAAK;MACtC,IAAI1F,WAAW,GAAG0F,UAAU,GAAG,OAAO,GAAG,QAAQ;MAEjD,IAAI4F,YAAY,GAAG;QACjBtU,KAAK,EAAEqD,cAAc,CAAC,CAAC,CAAC,EAAE3C,IAAI,EAAElC,SAAS,CAACkC,IAAI,CAAC,CAAC;QAChDT,GAAG,EAAEoD,cAAc,CAAC,CAAC,CAAC,EAAE3C,IAAI,EAAElC,SAAS,CAACkC,IAAI,CAAC,GAAGlC,SAAS,CAACwK,WAAW,CAAC,GAAG7C,MAAM,CAAC6C,WAAW,CAAC;MAC9F,CAAC;MAEDY,IAAI,CAAC3F,OAAO,CAACkC,MAAM,GAAGvC,QAAQ,CAAC,CAAC,CAAC,EAAEuC,MAAM,EAAEmO,YAAY,CAACD,cAAc,CAAC,CAAC;IAC1E;IAEA,OAAOzK,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS2K,IAAIA,CAAC3K,IAAI,EAAE;IAClB,IAAI,CAAC8F,kBAAkB,CAAC9F,IAAI,CAACnH,QAAQ,CAACkH,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE;MAC3E,OAAOC,IAAI;IACb;IAEA,IAAI9C,OAAO,GAAG8C,IAAI,CAAC3F,OAAO,CAACzF,SAAS;IACpC,IAAIgW,KAAK,GAAGtL,IAAI,CAACU,IAAI,CAACnH,QAAQ,CAACkH,SAAS,EAAE,UAAUtI,QAAQ,EAAE;MAC5D,OAAOA,QAAQ,CAAC+J,IAAI,KAAK,iBAAiB;IAC5C,CAAC,CAAC,CAAC9E,UAAU;IAEb,IAAIQ,OAAO,CAACvF,MAAM,GAAGiT,KAAK,CAAClT,GAAG,IAAIwF,OAAO,CAACtF,IAAI,GAAGgT,KAAK,CAAC/S,KAAK,IAAIqF,OAAO,CAACxF,GAAG,GAAGkT,KAAK,CAACjT,MAAM,IAAIuF,OAAO,CAACrF,KAAK,GAAG+S,KAAK,CAAChT,IAAI,EAAE;MACxH;MACA,IAAIoI,IAAI,CAAC2K,IAAI,KAAK,IAAI,EAAE;QACtB,OAAO3K,IAAI;MACb;MAEAA,IAAI,CAAC2K,IAAI,GAAG,IAAI;MAChB3K,IAAI,CAACW,UAAU,CAAC,qBAAqB,CAAC,GAAG,EAAE;IAC7C,CAAC,MAAM;MACL;MACA,IAAIX,IAAI,CAAC2K,IAAI,KAAK,KAAK,EAAE;QACvB,OAAO3K,IAAI;MACb;MAEAA,IAAI,CAAC2K,IAAI,GAAG,KAAK;MACjB3K,IAAI,CAACW,UAAU,CAAC,qBAAqB,CAAC,GAAG,KAAK;IAChD;IAEA,OAAOX,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS6K,KAAKA,CAAC7K,IAAI,EAAE;IACnB,IAAI/C,SAAS,GAAG+C,IAAI,CAAC/C,SAAS;IAC9B,IAAIkM,aAAa,GAAGlM,SAAS,CAACe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAIuG,aAAa,GAAGvE,IAAI,CAAC3F,OAAO;MAC5BkC,MAAM,GAAGgI,aAAa,CAAChI,MAAM;MAC7B3H,SAAS,GAAG2P,aAAa,CAAC3P,SAAS;IAEvC,IAAIqK,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC1M,OAAO,CAAC4W,aAAa,CAAC,KAAK,CAAC,CAAC;IAE7D,IAAI2B,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAACvY,OAAO,CAAC4W,aAAa,CAAC,KAAK,CAAC,CAAC;IAElE5M,MAAM,CAAC0C,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,GAAGrK,SAAS,CAACuU,aAAa,CAAC,IAAI2B,cAAc,GAAGvO,MAAM,CAAC0C,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEzHe,IAAI,CAAC/C,SAAS,GAAGwB,oBAAoB,CAACxB,SAAS,CAAC;IAChD+C,IAAI,CAAC3F,OAAO,CAACkC,MAAM,GAAGnC,aAAa,CAACmC,MAAM,CAAC;IAE3C,OAAOyD,IAAI;EACb;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAID,SAAS,GAAG;IACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IACEyK,KAAK,EAAE;MACL;MACAxU,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAE+X;IACN,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACEvO,MAAM,EAAE;MACN;MACAjG,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAEwJ,MAAM;MACV;AACJ;AACA;MACIA,MAAM,EAAE;IACV,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE+N,eAAe,EAAE;MACf;MACAhU,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAEuX,eAAe;MACnB;AACJ;AACA;AACA;AACA;MACII,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;MAC5C;AACJ;AACA;AACA;AACA;AACA;MACI5N,OAAO,EAAE,CAAC;MACV;AACJ;AACA;AACA;AACA;MACIC,iBAAiB,EAAE;IACrB,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACEqM,YAAY,EAAE;MACZ;MACA9S,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAEqW;IACN,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACEjD,KAAK,EAAE;MACL;MACA7P,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAEoT,KAAK;MACT;MACApS,OAAO,EAAE;IACX,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACEsN,IAAI,EAAE;MACJ;MACA/K,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAEsO,IAAI;MACR;AACJ;AACA;AACA;AACA;AACA;MACIiH,QAAQ,EAAE,MAAM;MAChB;AACJ;AACA;AACA;MACIxL,OAAO,EAAE,CAAC;MACV;AACJ;AACA;AACA;AACA;AACA;MACIC,iBAAiB,EAAE,UAAU;MAC7B;AACJ;AACA;AACA;AACA;AACA;AACA;MACIiM,cAAc,EAAE,KAAK;MACrB;AACJ;AACA;AACA;AACA;AACA;AACA;MACIE,uBAAuB,EAAE;IAC3B,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;IACEiC,KAAK,EAAE;MACL;MACA7U,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,KAAK;MACd;MACA9N,EAAE,EAAEoY;IACN,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACEF,IAAI,EAAE;MACJ;MACA3U,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAEkY;IACN,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACEtF,YAAY,EAAE;MACZ;MACArP,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAE4S,YAAY;MAChB;AACJ;AACA;AACA;AACA;MACIE,eAAe,EAAE,IAAI;MACrB;AACJ;AACA;AACA;AACA;MACIlH,CAAC,EAAE,QAAQ;MACX;AACJ;AACA;AACA;AACA;MACIE,CAAC,EAAE;IACL,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE0F,UAAU,EAAE;MACV;MACAjO,KAAK,EAAE,GAAG;MACV;MACAuK,OAAO,EAAE,IAAI;MACb;MACA9N,EAAE,EAAEwR,UAAU;MACd;MACA8G,MAAM,EAAE5G,gBAAgB;MACxB;AACJ;AACA;AACA;AACA;AACA;MACIoB,eAAe,EAAEvO;IACnB;EACF,CAAC;;EAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAIgU,QAAQ,GAAG;IACb;AACF;AACA;AACA;IACE/N,SAAS,EAAE,QAAQ;IAEnB;AACF;AACA;AACA;IACE6D,aAAa,EAAE,KAAK;IAEpB;AACF;AACA;AACA;IACEqC,aAAa,EAAE,IAAI;IAEnB;AACF;AACA;AACA;AACA;IACEd,eAAe,EAAE,KAAK;IAEtB;AACF;AACA;AACA;AACA;AACA;IACElB,QAAQ,EAAE,SAASA,QAAQA,CAAA,EAAG,CAAC,CAAC;IAEhC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IACEC,QAAQ,EAAE,SAASA,QAAQA,CAAA,EAAG,CAAC,CAAC;IAEhC;AACF;AACA;AACA;AACA;IACErB,SAAS,EAAEA;EACb,CAAC;;EAED;AACA;AACA;AACA;;EAEA;AACA;AACA;AACA;;EAEA;EACA;EACA,IAAIlO,MAAM,GAAG,YAAY;IACvB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IACE,SAASA,MAAMA,CAAC+C,SAAS,EA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","sources":["webpack://paragon_base_theme/./src/js/popper.js","webpack://paragon_base_theme/webpack/bootstrap","webpack://paragon_base_theme/webpack/runtime/global","webpack://paragon_base_theme/webpack/before-startup","webpack://paragon_base_theme/webpack/startup","webpack://paragon_base_theme/webpack/after-startup"],"sourcesContent":["/**!\r\n * @fileOverview Kickass library to create and place poppers near their reference elements.\r\n * @version 1.16.0\r\n * @license\r\n * Copyright (c) 2016 Federico Zivolo and contributors\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\n(function (global, factory) {\r\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n\ttypeof define === 'function' && define.amd ? define(factory) :\r\n\t(global.Popper = factory());\r\n}(this, (function () { 'use strict';\r\n\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\r\n\r\nvar timeoutDuration = function () {\r\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\r\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\r\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n}();\r\n\r\nfunction microtaskDebounce(fn) {\r\n var called = false;\r\n return function () {\r\n if (called) {\r\n return;\r\n }\r\n called = true;\r\n window.Promise.resolve().then(function () {\r\n called = false;\r\n fn();\r\n });\r\n };\r\n}\r\n\r\nfunction taskDebounce(fn) {\r\n var scheduled = false;\r\n return function () {\r\n if (!scheduled) {\r\n scheduled = true;\r\n setTimeout(function () {\r\n scheduled = false;\r\n fn();\r\n }, timeoutDuration);\r\n }\r\n };\r\n}\r\n\r\nvar supportsMicroTasks = isBrowser && window.Promise;\r\n\r\n/**\r\n* Create a debounced version of a method, that's asynchronously deferred\r\n* but called in the minimum time possible.\r\n*\r\n* @method\r\n* @memberof Popper.Utils\r\n* @argument {Function} fn\r\n* @returns {Function}\r\n*/\r\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\r\n\r\n/**\r\n * Check if the given variable is a function\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Any} functionToCheck - variable to check\r\n * @returns {Boolean} answer to: is a function?\r\n */\r\nfunction isFunction(functionToCheck) {\r\n var getType = {};\r\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\r\n}\r\n\r\n/**\r\n * Get CSS computed property of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Eement} element\r\n * @argument {String} property\r\n */\r\nfunction getStyleComputedProperty(element, property) {\r\n if (element.nodeType !== 1) {\r\n return [];\r\n }\r\n // NOTE: 1 DOM access here\r\n var window = element.ownerDocument.defaultView;\r\n var css = window.getComputedStyle(element, null);\r\n return property ? css[property] : css;\r\n}\r\n\r\n/**\r\n * Returns the parentNode or the host of the element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} parent\r\n */\r\nfunction getParentNode(element) {\r\n if (element.nodeName === 'HTML') {\r\n return element;\r\n }\r\n return element.parentNode || element.host;\r\n}\r\n\r\n/**\r\n * Returns the scrolling parent of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} scroll parent\r\n */\r\nfunction getScrollParent(element) {\r\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\r\n if (!element) {\r\n return document.body;\r\n }\r\n\r\n switch (element.nodeName) {\r\n case 'HTML':\r\n case 'BODY':\r\n return element.ownerDocument.body;\r\n case '#document':\r\n return element.body;\r\n }\r\n\r\n // Firefox want us to check `-x` and `-y` variations as well\r\n\r\n var _getStyleComputedProp = getStyleComputedProperty(element),\r\n overflow = _getStyleComputedProp.overflow,\r\n overflowX = _getStyleComputedProp.overflowX,\r\n overflowY = _getStyleComputedProp.overflowY;\r\n\r\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\r\n return element;\r\n }\r\n\r\n return getScrollParent(getParentNode(element));\r\n}\r\n\r\n/**\r\n * Returns the reference node of the reference object, or the reference object itself.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\r\n * @returns {Element} parent\r\n */\r\nfunction getReferenceNode(reference) {\r\n return reference && reference.referenceNode ? reference.referenceNode : reference;\r\n}\r\n\r\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\r\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\r\n\r\n/**\r\n * Determines if the browser is Internet Explorer\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Number} version to check\r\n * @returns {Boolean} isIE\r\n */\r\nfunction isIE(version) {\r\n if (version === 11) {\r\n return isIE11;\r\n }\r\n if (version === 10) {\r\n return isIE10;\r\n }\r\n return isIE11 || isIE10;\r\n}\r\n\r\n/**\r\n * Returns the offset parent of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} offset parent\r\n */\r\nfunction getOffsetParent(element) {\r\n if (!element) {\r\n return document.documentElement;\r\n }\r\n\r\n var noOffsetParent = isIE(10) ? document.body : null;\r\n\r\n // NOTE: 1 DOM access here\r\n var offsetParent = element.offsetParent || null;\r\n // Skip hidden elements which don't have an offsetParent\r\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\r\n offsetParent = (element = element.nextElementSibling).offsetParent;\r\n }\r\n\r\n var nodeName = offsetParent && offsetParent.nodeName;\r\n\r\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\r\n return element ? element.ownerDocument.documentElement : document.documentElement;\r\n }\r\n\r\n // .offsetParent will return the closest TH, TD or TABLE in case\r\n // no offsetParent is present, I hate this job...\r\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\r\n return getOffsetParent(offsetParent);\r\n }\r\n\r\n return offsetParent;\r\n}\r\n\r\nfunction isOffsetContainer(element) {\r\n var nodeName = element.nodeName;\r\n\r\n if (nodeName === 'BODY') {\r\n return false;\r\n }\r\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\r\n}\r\n\r\n/**\r\n * Finds the root node (document, shadowDOM root) of the given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} node\r\n * @returns {Element} root node\r\n */\r\nfunction getRoot(node) {\r\n if (node.parentNode !== null) {\r\n return getRoot(node.parentNode);\r\n }\r\n\r\n return node;\r\n}\r\n\r\n/**\r\n * Finds the offset parent common to the two provided nodes\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element1\r\n * @argument {Element} element2\r\n * @returns {Element} common offset parent\r\n */\r\nfunction findCommonOffsetParent(element1, element2) {\r\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\r\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\r\n return document.documentElement;\r\n }\r\n\r\n // Here we make sure to give as \"start\" the element that comes first in the DOM\r\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\r\n var start = order ? element1 : element2;\r\n var end = order ? element2 : element1;\r\n\r\n // Get common ancestor container\r\n var range = document.createRange();\r\n range.setStart(start, 0);\r\n range.setEnd(end, 0);\r\n var commonAncestorContainer = range.commonAncestorContainer;\r\n\r\n // Both nodes are inside #document\r\n\r\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\r\n if (isOffsetContainer(commonAncestorContainer)) {\r\n return commonAncestorContainer;\r\n }\r\n\r\n return getOffsetParent(commonAncestorContainer);\r\n }\r\n\r\n // one of the nodes is inside shadowDOM, find which one\r\n var element1root = getRoot(element1);\r\n if (element1root.host) {\r\n return findCommonOffsetParent(element1root.host, element2);\r\n } else {\r\n return findCommonOffsetParent(element1, getRoot(element2).host);\r\n }\r\n}\r\n\r\n/**\r\n * Gets the scroll value of the given element in the given side (top and left)\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @argument {String} side `top` or `left`\r\n * @returns {number} amount of scrolled pixels\r\n */\r\nfunction getScroll(element) {\r\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\r\n\r\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\r\n var nodeName = element.nodeName;\r\n\r\n if (nodeName === 'BODY' || nodeName === 'HTML') {\r\n var html = element.ownerDocument.documentElement;\r\n var scrollingElement = element.ownerDocument.scrollingElement || html;\r\n return scrollingElement[upperSide];\r\n }\r\n\r\n return element[upperSide];\r\n}\r\n\r\n/*\r\n * Sum or subtract the element scroll values (left and top) from a given rect object\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Object} rect - Rect object you want to change\r\n * @param {HTMLElement} element - The element from the function reads the scroll values\r\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\r\n * @return {Object} rect - The modifier rect object\r\n */\r\nfunction includeScroll(rect, element) {\r\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n\r\n var scrollTop = getScroll(element, 'top');\r\n var scrollLeft = getScroll(element, 'left');\r\n var modifier = subtract ? -1 : 1;\r\n rect.top += scrollTop * modifier;\r\n rect.bottom += scrollTop * modifier;\r\n rect.left += scrollLeft * modifier;\r\n rect.right += scrollLeft * modifier;\r\n return rect;\r\n}\r\n\r\n/*\r\n * Helper to detect borders of a given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {CSSStyleDeclaration} styles\r\n * Result of `getStyleComputedProperty` on the given element\r\n * @param {String} axis - `x` or `y`\r\n * @return {number} borders - The borders size of the given axis\r\n */\r\n\r\nfunction getBordersSize(styles, axis) {\r\n var sideA = axis === 'x' ? 'Left' : 'Top';\r\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\r\n\r\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\r\n}\r\n\r\nfunction getSize(axis, body, html, computedStyle) {\r\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\r\n}\r\n\r\nfunction getWindowSizes(document) {\r\n var body = document.body;\r\n var html = document.documentElement;\r\n var computedStyle = isIE(10) && getComputedStyle(html);\r\n\r\n return {\r\n height: getSize('Height', body, html, computedStyle),\r\n width: getSize('Width', body, html, computedStyle)\r\n };\r\n}\r\n\r\nvar classCallCheck = function (instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n }\r\n};\r\n\r\nvar createClass = function () {\r\n function defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n return function (Constructor, protoProps, staticProps) {\r\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\r\n if (staticProps) defineProperties(Constructor, staticProps);\r\n return Constructor;\r\n };\r\n}();\r\n\r\n\r\n\r\n\r\n\r\nvar defineProperty = function (obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n });\r\n } else {\r\n obj[key] = value;\r\n }\r\n\r\n return obj;\r\n};\r\n\r\nvar _extends = Object.assign || function (target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return target;\r\n};\r\n\r\n/**\r\n * Given element offsets, generate an output similar to getBoundingClientRect\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Object} offsets\r\n * @returns {Object} ClientRect like output\r\n */\r\nfunction getClientRect(offsets) {\r\n return _extends({}, offsets, {\r\n right: offsets.left + offsets.width,\r\n bottom: offsets.top + offsets.height\r\n });\r\n}\r\n\r\n/**\r\n * Get bounding client rect of given element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {HTMLElement} element\r\n * @return {Object} client rect\r\n */\r\nfunction getBoundingClientRect(element) {\r\n var rect = {};\r\n\r\n // IE10 10 FIX: Please, don't ask, the element isn't\r\n // considered in DOM in some circumstances...\r\n // This isn't reproducible in IE10 compatibility mode of IE11\r\n try {\r\n if (isIE(10)) {\r\n rect = element.getBoundingClientRect();\r\n var scrollTop = getScroll(element, 'top');\r\n var scrollLeft = getScroll(element, 'left');\r\n rect.top += scrollTop;\r\n rect.left += scrollLeft;\r\n rect.bottom += scrollTop;\r\n rect.right += scrollLeft;\r\n } else {\r\n rect = element.getBoundingClientRect();\r\n }\r\n } catch (e) {}\r\n\r\n var result = {\r\n left: rect.left,\r\n top: rect.top,\r\n width: rect.right - rect.left,\r\n height: rect.bottom - rect.top\r\n };\r\n\r\n // subtract scrollbar size from sizes\r\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\r\n var width = sizes.width || element.clientWidth || result.width;\r\n var height = sizes.height || element.clientHeight || result.height;\r\n\r\n var horizScrollbar = element.offsetWidth - width;\r\n var vertScrollbar = element.offsetHeight - height;\r\n\r\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\r\n // we make this check conditional for performance reasons\r\n if (horizScrollbar || vertScrollbar) {\r\n var styles = getStyleComputedProperty(element);\r\n horizScrollbar -= getBordersSize(styles, 'x');\r\n vertScrollbar -= getBordersSize(styles, 'y');\r\n\r\n result.width -= horizScrollbar;\r\n result.height -= vertScrollbar;\r\n }\r\n\r\n return getClientRect(result);\r\n}\r\n\r\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\r\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n\r\n var isIE10 = isIE(10);\r\n var isHTML = parent.nodeName === 'HTML';\r\n var childrenRect = getBoundingClientRect(children);\r\n var parentRect = getBoundingClientRect(parent);\r\n var scrollParent = getScrollParent(children);\r\n\r\n var styles = getStyleComputedProperty(parent);\r\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\r\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\r\n\r\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\r\n if (fixedPosition && isHTML) {\r\n parentRect.top = Math.max(parentRect.top, 0);\r\n parentRect.left = Math.max(parentRect.left, 0);\r\n }\r\n var offsets = getClientRect({\r\n top: childrenRect.top - parentRect.top - borderTopWidth,\r\n left: childrenRect.left - parentRect.left - borderLeftWidth,\r\n width: childrenRect.width,\r\n height: childrenRect.height\r\n });\r\n offsets.marginTop = 0;\r\n offsets.marginLeft = 0;\r\n\r\n // Subtract margins of documentElement in case it's being used as parent\r\n // we do this only on HTML because it's the only element that behaves\r\n // differently when margins are applied to it. The margins are included in\r\n // the box of the documentElement, in the other cases not.\r\n if (!isIE10 && isHTML) {\r\n var marginTop = parseFloat(styles.marginTop, 10);\r\n var marginLeft = parseFloat(styles.marginLeft, 10);\r\n\r\n offsets.top -= borderTopWidth - marginTop;\r\n offsets.bottom -= borderTopWidth - marginTop;\r\n offsets.left -= borderLeftWidth - marginLeft;\r\n offsets.right -= borderLeftWidth - marginLeft;\r\n\r\n // Attach marginTop and marginLeft because in some circumstances we may need them\r\n offsets.marginTop = marginTop;\r\n offsets.marginLeft = marginLeft;\r\n }\r\n\r\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\r\n offsets = includeScroll(offsets, parent);\r\n }\r\n\r\n return offsets;\r\n}\r\n\r\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\r\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n\r\n var html = element.ownerDocument.documentElement;\r\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\r\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\r\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\r\n\r\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\r\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\r\n\r\n var offset = {\r\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\r\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\r\n width: width,\r\n height: height\r\n };\r\n\r\n return getClientRect(offset);\r\n}\r\n\r\n/**\r\n * Check if the given element is fixed or is inside a fixed parent\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @argument {Element} customContainer\r\n * @returns {Boolean} answer to \"isFixed?\"\r\n */\r\nfunction isFixed(element) {\r\n var nodeName = element.nodeName;\r\n if (nodeName === 'BODY' || nodeName === 'HTML') {\r\n return false;\r\n }\r\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\r\n return true;\r\n }\r\n var parentNode = getParentNode(element);\r\n if (!parentNode) {\r\n return false;\r\n }\r\n return isFixed(parentNode);\r\n}\r\n\r\n/**\r\n * Finds the first parent of an element that has a transformed property defined\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Element} first transformed parent or documentElement\r\n */\r\n\r\nfunction getFixedPositionOffsetParent(element) {\r\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\r\n if (!element || !element.parentElement || isIE()) {\r\n return document.documentElement;\r\n }\r\n var el = element.parentElement;\r\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\r\n el = el.parentElement;\r\n }\r\n return el || document.documentElement;\r\n}\r\n\r\n/**\r\n * Computed the boundaries limits and return them\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {HTMLElement} popper\r\n * @param {HTMLElement} reference\r\n * @param {number} padding\r\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\r\n * @param {Boolean} fixedPosition - Is in fixed position mode\r\n * @returns {Object} Coordinates of the boundaries\r\n */\r\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\r\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\r\n\r\n // NOTE: 1 DOM access here\r\n\r\n var boundaries = { top: 0, left: 0 };\r\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\r\n\r\n // Handle viewport case\r\n if (boundariesElement === 'viewport') {\r\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\r\n } else {\r\n // Handle other cases based on DOM element used as boundaries\r\n var boundariesNode = void 0;\r\n if (boundariesElement === 'scrollParent') {\r\n boundariesNode = getScrollParent(getParentNode(reference));\r\n if (boundariesNode.nodeName === 'BODY') {\r\n boundariesNode = popper.ownerDocument.documentElement;\r\n }\r\n } else if (boundariesElement === 'window') {\r\n boundariesNode = popper.ownerDocument.documentElement;\r\n } else {\r\n boundariesNode = boundariesElement;\r\n }\r\n\r\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\r\n\r\n // In case of HTML, we need a different computation\r\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\r\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\r\n height = _getWindowSizes.height,\r\n width = _getWindowSizes.width;\r\n\r\n boundaries.top += offsets.top - offsets.marginTop;\r\n boundaries.bottom = height + offsets.top;\r\n boundaries.left += offsets.left - offsets.marginLeft;\r\n boundaries.right = width + offsets.left;\r\n } else {\r\n // for all the other DOM elements, this one is good\r\n boundaries = offsets;\r\n }\r\n }\r\n\r\n // Add paddings\r\n padding = padding || 0;\r\n var isPaddingNumber = typeof padding === 'number';\r\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\r\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\r\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\r\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\r\n\r\n return boundaries;\r\n}\r\n\r\nfunction getArea(_ref) {\r\n var width = _ref.width,\r\n height = _ref.height;\r\n\r\n return width * height;\r\n}\r\n\r\n/**\r\n * Utility used to transform the `auto` placement to the placement with more\r\n * available space.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\r\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\r\n\r\n if (placement.indexOf('auto') === -1) {\r\n return placement;\r\n }\r\n\r\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\r\n\r\n var rects = {\r\n top: {\r\n width: boundaries.width,\r\n height: refRect.top - boundaries.top\r\n },\r\n right: {\r\n width: boundaries.right - refRect.right,\r\n height: boundaries.height\r\n },\r\n bottom: {\r\n width: boundaries.width,\r\n height: boundaries.bottom - refRect.bottom\r\n },\r\n left: {\r\n width: refRect.left - boundaries.left,\r\n height: boundaries.height\r\n }\r\n };\r\n\r\n var sortedAreas = Object.keys(rects).map(function (key) {\r\n return _extends({\r\n key: key\r\n }, rects[key], {\r\n area: getArea(rects[key])\r\n });\r\n }).sort(function (a, b) {\r\n return b.area - a.area;\r\n });\r\n\r\n var filteredAreas = sortedAreas.filter(function (_ref2) {\r\n var width = _ref2.width,\r\n height = _ref2.height;\r\n return width >= popper.clientWidth && height >= popper.clientHeight;\r\n });\r\n\r\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\r\n\r\n var variation = placement.split('-')[1];\r\n\r\n return computedPlacement + (variation ? '-' + variation : '');\r\n}\r\n\r\n/**\r\n * Get offsets to the reference element\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Object} state\r\n * @param {Element} popper - the popper element\r\n * @param {Element} reference - the reference element (the popper will be relative to this)\r\n * @param {Element} fixedPosition - is in fixed position mode\r\n * @returns {Object} An object containing the offsets which will be applied to the popper\r\n */\r\nfunction getReferenceOffsets(state, popper, reference) {\r\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\r\n\r\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\r\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\r\n}\r\n\r\n/**\r\n * Get the outer sizes of the given element (offset size + margins)\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element\r\n * @returns {Object} object containing width and height properties\r\n */\r\nfunction getOuterSizes(element) {\r\n var window = element.ownerDocument.defaultView;\r\n var styles = window.getComputedStyle(element);\r\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\r\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\r\n var result = {\r\n width: element.offsetWidth + y,\r\n height: element.offsetHeight + x\r\n };\r\n return result;\r\n}\r\n\r\n/**\r\n * Get the opposite placement of the given one\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} placement\r\n * @returns {String} flipped placement\r\n */\r\nfunction getOppositePlacement(placement) {\r\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\r\n return placement.replace(/left|right|bottom|top/g, function (matched) {\r\n return hash[matched];\r\n });\r\n}\r\n\r\n/**\r\n * Get offsets to the popper\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Object} position - CSS position the Popper will get applied\r\n * @param {HTMLElement} popper - the popper element\r\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\r\n * @param {String} placement - one of the valid placement options\r\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\r\n */\r\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\r\n placement = placement.split('-')[0];\r\n\r\n // Get popper node sizes\r\n var popperRect = getOuterSizes(popper);\r\n\r\n // Add position, width and height to our offsets object\r\n var popperOffsets = {\r\n width: popperRect.width,\r\n height: popperRect.height\r\n };\r\n\r\n // depending by the popper placement we have to compute its offsets slightly differently\r\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\r\n var mainSide = isHoriz ? 'top' : 'left';\r\n var secondarySide = isHoriz ? 'left' : 'top';\r\n var measurement = isHoriz ? 'height' : 'width';\r\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\r\n\r\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\r\n if (placement === secondarySide) {\r\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\r\n } else {\r\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\r\n }\r\n\r\n return popperOffsets;\r\n}\r\n\r\n/**\r\n * Mimics the `find` method of Array\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Array} arr\r\n * @argument prop\r\n * @argument value\r\n * @returns index or -1\r\n */\r\nfunction find(arr, check) {\r\n // use native find if supported\r\n if (Array.prototype.find) {\r\n return arr.find(check);\r\n }\r\n\r\n // use `filter` to obtain the same behavior of `find`\r\n return arr.filter(check)[0];\r\n}\r\n\r\n/**\r\n * Return the index of the matching object\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Array} arr\r\n * @argument prop\r\n * @argument value\r\n * @returns index or -1\r\n */\r\nfunction findIndex(arr, prop, value) {\r\n // use native findIndex if supported\r\n if (Array.prototype.findIndex) {\r\n return arr.findIndex(function (cur) {\r\n return cur[prop] === value;\r\n });\r\n }\r\n\r\n // use `find` + `indexOf` if `findIndex` isn't supported\r\n var match = find(arr, function (obj) {\r\n return obj[prop] === value;\r\n });\r\n return arr.indexOf(match);\r\n}\r\n\r\n/**\r\n * Loop trough the list of modifiers and run them in order,\r\n * each of them will then edit the data object.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {dataObject} data\r\n * @param {Array} modifiers\r\n * @param {String} ends - Optional modifier name used as stopper\r\n * @returns {dataObject}\r\n */\r\nfunction runModifiers(modifiers, data, ends) {\r\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\r\n\r\n modifiersToRun.forEach(function (modifier) {\r\n if (modifier['function']) {\r\n // eslint-disable-line dot-notation\r\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\r\n }\r\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\r\n if (modifier.enabled && isFunction(fn)) {\r\n // Add properties to offsets to make them a complete clientRect object\r\n // we do this before each modifier to make sure the previous one doesn't\r\n // mess with these values\r\n data.offsets.popper = getClientRect(data.offsets.popper);\r\n data.offsets.reference = getClientRect(data.offsets.reference);\r\n\r\n data = fn(data, modifier);\r\n }\r\n });\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * Updates the position of the popper, computing the new offsets and applying\r\n * the new style.<br />\r\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction update() {\r\n // if popper is destroyed, don't perform any further update\r\n if (this.state.isDestroyed) {\r\n return;\r\n }\r\n\r\n var data = {\r\n instance: this,\r\n styles: {},\r\n arrowStyles: {},\r\n attributes: {},\r\n flipped: false,\r\n offsets: {}\r\n };\r\n\r\n // compute reference element offsets\r\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\r\n\r\n // compute auto placement, store placement inside the data object,\r\n // modifiers will be able to edit `placement` if needed\r\n // and refer to originalPlacement to know the original value\r\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\r\n\r\n // store the computed placement inside `originalPlacement`\r\n data.originalPlacement = data.placement;\r\n\r\n data.positionFixed = this.options.positionFixed;\r\n\r\n // compute the popper offsets\r\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\r\n\r\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\r\n\r\n // run the modifiers\r\n data = runModifiers(this.modifiers, data);\r\n\r\n // the first `update` will call `onCreate` callback\r\n // the other ones will call `onUpdate` callback\r\n if (!this.state.isCreated) {\r\n this.state.isCreated = true;\r\n this.options.onCreate(data);\r\n } else {\r\n this.options.onUpdate(data);\r\n }\r\n}\r\n\r\n/**\r\n * Helper used to know if the given modifier is enabled.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @returns {Boolean}\r\n */\r\nfunction isModifierEnabled(modifiers, modifierName) {\r\n return modifiers.some(function (_ref) {\r\n var name = _ref.name,\r\n enabled = _ref.enabled;\r\n return enabled && name === modifierName;\r\n });\r\n}\r\n\r\n/**\r\n * Get the prefixed supported property name\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} property (camelCase)\r\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\r\n */\r\nfunction getSupportedPropertyName(property) {\r\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\r\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\r\n\r\n for (var i = 0; i < prefixes.length; i++) {\r\n var prefix = prefixes[i];\r\n var toCheck = prefix ? '' + prefix + upperProp : property;\r\n if (typeof document.body.style[toCheck] !== 'undefined') {\r\n return toCheck;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Destroys the popper.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction destroy() {\r\n this.state.isDestroyed = true;\r\n\r\n // touch DOM only if `applyStyle` modifier is enabled\r\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\r\n this.popper.removeAttribute('x-placement');\r\n this.popper.style.position = '';\r\n this.popper.style.top = '';\r\n this.popper.style.left = '';\r\n this.popper.style.right = '';\r\n this.popper.style.bottom = '';\r\n this.popper.style.willChange = '';\r\n this.popper.style[getSupportedPropertyName('transform')] = '';\r\n }\r\n\r\n this.disableEventListeners();\r\n\r\n // remove the popper if user explicitly asked for the deletion on destroy\r\n // do not use `remove` because IE11 doesn't support it\r\n if (this.options.removeOnDestroy) {\r\n this.popper.parentNode.removeChild(this.popper);\r\n }\r\n return this;\r\n}\r\n\r\n/**\r\n * Get the window associated with the element\r\n * @argument {Element} element\r\n * @returns {Window}\r\n */\r\nfunction getWindow(element) {\r\n var ownerDocument = element.ownerDocument;\r\n return ownerDocument ? ownerDocument.defaultView : window;\r\n}\r\n\r\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\r\n var isBody = scrollParent.nodeName === 'BODY';\r\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\r\n target.addEventListener(event, callback, { passive: true });\r\n\r\n if (!isBody) {\r\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\r\n }\r\n scrollParents.push(target);\r\n}\r\n\r\n/**\r\n * Setup needed event listeners used to update the popper position\r\n * @method\r\n * @memberof Popper.Utils\r\n * @private\r\n */\r\nfunction setupEventListeners(reference, options, state, updateBound) {\r\n // Resize event listener on window\r\n state.updateBound = updateBound;\r\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\r\n\r\n // Scroll event listener on scroll parents\r\n var scrollElement = getScrollParent(reference);\r\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\r\n state.scrollElement = scrollElement;\r\n state.eventsEnabled = true;\r\n\r\n return state;\r\n}\r\n\r\n/**\r\n * It will add resize/scroll events and start recalculating\r\n * position of the popper element when they are triggered.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction enableEventListeners() {\r\n if (!this.state.eventsEnabled) {\r\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\r\n }\r\n}\r\n\r\n/**\r\n * Remove event listeners used to update the popper position\r\n * @method\r\n * @memberof Popper.Utils\r\n * @private\r\n */\r\nfunction removeEventListeners(reference, state) {\r\n // Remove resize event listener on window\r\n getWindow(reference).removeEventListener('resize', state.updateBound);\r\n\r\n // Remove scroll event listener on scroll parents\r\n state.scrollParents.forEach(function (target) {\r\n target.removeEventListener('scroll', state.updateBound);\r\n });\r\n\r\n // Reset state\r\n state.updateBound = null;\r\n state.scrollParents = [];\r\n state.scrollElement = null;\r\n state.eventsEnabled = false;\r\n return state;\r\n}\r\n\r\n/**\r\n * It will remove resize/scroll events and won't recalculate popper position\r\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\r\n * unless you call `update` method manually.\r\n * @method\r\n * @memberof Popper\r\n */\r\nfunction disableEventListeners() {\r\n if (this.state.eventsEnabled) {\r\n cancelAnimationFrame(this.scheduleUpdate);\r\n this.state = removeEventListeners(this.reference, this.state);\r\n }\r\n}\r\n\r\n/**\r\n * Tells if a given input is a number\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {*} input to check\r\n * @return {Boolean}\r\n */\r\nfunction isNumeric(n) {\r\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\r\n}\r\n\r\n/**\r\n * Set the style to the given popper\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element - Element to apply the style to\r\n * @argument {Object} styles\r\n * Object with a list of properties and values which will be applied to the element\r\n */\r\nfunction setStyles(element, styles) {\r\n Object.keys(styles).forEach(function (prop) {\r\n var unit = '';\r\n // add unit if the value is numeric and is one of the following\r\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\r\n unit = 'px';\r\n }\r\n element.style[prop] = styles[prop] + unit;\r\n });\r\n}\r\n\r\n/**\r\n * Set the attributes to the given popper\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {Element} element - Element to apply the attributes to\r\n * @argument {Object} styles\r\n * Object with a list of properties and values which will be applied to the element\r\n */\r\nfunction setAttributes(element, attributes) {\r\n Object.keys(attributes).forEach(function (prop) {\r\n var value = attributes[prop];\r\n if (value !== false) {\r\n element.setAttribute(prop, attributes[prop]);\r\n } else {\r\n element.removeAttribute(prop);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\r\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The same data object\r\n */\r\nfunction applyStyle(data) {\r\n // any property present in `data.styles` will be applied to the popper,\r\n // in this way we can make the 3rd party modifiers add custom styles to it\r\n // Be aware, modifiers could override the properties defined in the previous\r\n // lines of this modifier!\r\n setStyles(data.instance.popper, data.styles);\r\n\r\n // any property present in `data.attributes` will be applied to the popper,\r\n // they will be set as HTML attributes of the element\r\n setAttributes(data.instance.popper, data.attributes);\r\n\r\n // if arrowElement is defined and arrowStyles has some properties\r\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\r\n setStyles(data.arrowElement, data.arrowStyles);\r\n }\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * Set the x-placement attribute before everything else because it could be used\r\n * to add margins to the popper margins needs to be calculated to get the\r\n * correct popper offsets.\r\n * @method\r\n * @memberof Popper.modifiers\r\n * @param {HTMLElement} reference - The reference element used to position the popper\r\n * @param {HTMLElement} popper - The HTML element used as popper\r\n * @param {Object} options - Popper.js options\r\n */\r\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\r\n // compute reference element offsets\r\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\r\n\r\n // compute auto placement, store placement inside the data object,\r\n // modifiers will be able to edit `placement` if needed\r\n // and refer to originalPlacement to know the original value\r\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\r\n\r\n popper.setAttribute('x-placement', placement);\r\n\r\n // Apply `position` to popper before anything else because\r\n // without the position applied we can't guarantee correct computations\r\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\r\n\r\n return options;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Popper.Utils\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\r\n * @returns {Object} The popper's position offsets rounded\r\n *\r\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\r\n * good as it can be within reason.\r\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\r\n *\r\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\r\n * as well on High DPI screens).\r\n *\r\n * Firefox prefers no rounding for positioning and does not have blurriness on\r\n * high DPI screens.\r\n *\r\n * Only horizontal placement and left/right values need to be considered.\r\n */\r\nfunction getRoundedOffsets(data, shouldRound) {\r\n var _data$offsets = data.offsets,\r\n popper = _data$offsets.popper,\r\n reference = _data$offsets.reference;\r\n var round = Math.round,\r\n floor = Math.floor;\r\n\r\n var noRound = function noRound(v) {\r\n return v;\r\n };\r\n\r\n var referenceWidth = round(reference.width);\r\n var popperWidth = round(popper.width);\r\n\r\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\r\n var isVariation = data.placement.indexOf('-') !== -1;\r\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\r\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\r\n\r\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\r\n var verticalToInteger = !shouldRound ? noRound : round;\r\n\r\n return {\r\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\r\n top: verticalToInteger(popper.top),\r\n bottom: verticalToInteger(popper.bottom),\r\n right: horizontalToInteger(popper.right)\r\n };\r\n}\r\n\r\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction computeStyle(data, options) {\r\n var x = options.x,\r\n y = options.y;\r\n var popper = data.offsets.popper;\r\n\r\n // Remove this legacy support in Popper.js v2\r\n\r\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\r\n return modifier.name === 'applyStyle';\r\n }).gpuAcceleration;\r\n if (legacyGpuAccelerationOption !== undefined) {\r\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\r\n }\r\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\r\n\r\n var offsetParent = getOffsetParent(data.instance.popper);\r\n var offsetParentRect = getBoundingClientRect(offsetParent);\r\n\r\n // Styles\r\n var styles = {\r\n position: popper.position\r\n };\r\n\r\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\r\n\r\n var sideA = x === 'bottom' ? 'top' : 'bottom';\r\n var sideB = y === 'right' ? 'left' : 'right';\r\n\r\n // if gpuAcceleration is set to `true` and transform is supported,\r\n // we use `translate3d` to apply the position to the popper we\r\n // automatically use the supported prefixed version if needed\r\n var prefixedProperty = getSupportedPropertyName('transform');\r\n\r\n // now, let's make a step back and look at this code closely (wtf?)\r\n // If the content of the popper grows once it's been positioned, it\r\n // may happen that the popper gets misplaced because of the new content\r\n // overflowing its reference element\r\n // To avoid this problem, we provide two options (x and y), which allow\r\n // the consumer to define the offset origin.\r\n // If we position a popper on top of a reference element, we can set\r\n // `x` to `top` to make the popper grow towards its top instead of\r\n // its bottom.\r\n var left = void 0,\r\n top = void 0;\r\n if (sideA === 'bottom') {\r\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\r\n // and not the bottom of the html element\r\n if (offsetParent.nodeName === 'HTML') {\r\n top = -offsetParent.clientHeight + offsets.bottom;\r\n } else {\r\n top = -offsetParentRect.height + offsets.bottom;\r\n }\r\n } else {\r\n top = offsets.top;\r\n }\r\n if (sideB === 'right') {\r\n if (offsetParent.nodeName === 'HTML') {\r\n left = -offsetParent.clientWidth + offsets.right;\r\n } else {\r\n left = -offsetParentRect.width + offsets.right;\r\n }\r\n } else {\r\n left = offsets.left;\r\n }\r\n if (gpuAcceleration && prefixedProperty) {\r\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\r\n styles[sideA] = 0;\r\n styles[sideB] = 0;\r\n styles.willChange = 'transform';\r\n } else {\r\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\r\n var invertTop = sideA === 'bottom' ? -1 : 1;\r\n var invertLeft = sideB === 'right' ? -1 : 1;\r\n styles[sideA] = top * invertTop;\r\n styles[sideB] = left * invertLeft;\r\n styles.willChange = sideA + ', ' + sideB;\r\n }\r\n\r\n // Attributes\r\n var attributes = {\r\n 'x-placement': data.placement\r\n };\r\n\r\n // Update `data` attributes, styles and arrowStyles\r\n data.attributes = _extends({}, attributes, data.attributes);\r\n data.styles = _extends({}, styles, data.styles);\r\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * Helper used to know if the given modifier depends from another one.<br />\r\n * It checks if the needed modifier is listed and enabled.\r\n * @method\r\n * @memberof Popper.Utils\r\n * @param {Array} modifiers - list of modifiers\r\n * @param {String} requestingName - name of requesting modifier\r\n * @param {String} requestedName - name of requested modifier\r\n * @returns {Boolean}\r\n */\r\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\r\n var requesting = find(modifiers, function (_ref) {\r\n var name = _ref.name;\r\n return name === requestingName;\r\n });\r\n\r\n var isRequired = !!requesting && modifiers.some(function (modifier) {\r\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\r\n });\r\n\r\n if (!isRequired) {\r\n var _requesting = '`' + requestingName + '`';\r\n var requested = '`' + requestedName + '`';\r\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\r\n }\r\n return isRequired;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction arrow(data, options) {\r\n var _data$offsets$arrow;\r\n\r\n // arrow depends on keepTogether in order to work\r\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\r\n return data;\r\n }\r\n\r\n var arrowElement = options.element;\r\n\r\n // if arrowElement is a string, suppose it's a CSS selector\r\n if (typeof arrowElement === 'string') {\r\n arrowElement = data.instance.popper.querySelector(arrowElement);\r\n\r\n // if arrowElement is not found, don't run the modifier\r\n if (!arrowElement) {\r\n return data;\r\n }\r\n } else {\r\n // if the arrowElement isn't a query selector we must check that the\r\n // provided DOM node is child of its popper node\r\n if (!data.instance.popper.contains(arrowElement)) {\r\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\r\n return data;\r\n }\r\n }\r\n\r\n var placement = data.placement.split('-')[0];\r\n var _data$offsets = data.offsets,\r\n popper = _data$offsets.popper,\r\n reference = _data$offsets.reference;\r\n\r\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\r\n\r\n var len = isVertical ? 'height' : 'width';\r\n var sideCapitalized = isVertical ? 'Top' : 'Left';\r\n var side = sideCapitalized.toLowerCase();\r\n var altSide = isVertical ? 'left' : 'top';\r\n var opSide = isVertical ? 'bottom' : 'right';\r\n var arrowElementSize = getOuterSizes(arrowElement)[len];\r\n\r\n //\r\n // extends keepTogether behavior making sure the popper and its\r\n // reference have enough pixels in conjunction\r\n //\r\n\r\n // top/left side\r\n if (reference[opSide] - arrowElementSize < popper[side]) {\r\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\r\n }\r\n // bottom/right side\r\n if (reference[side] + arrowElementSize > popper[opSide]) {\r\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\r\n }\r\n data.offsets.popper = getClientRect(data.offsets.popper);\r\n\r\n // compute center of the popper\r\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\r\n\r\n // Compute the sideValue using the updated popper offsets\r\n // take popper margin in account because we don't have this info available\r\n var css = getStyleComputedProperty(data.instance.popper);\r\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\r\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\r\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\r\n\r\n // prevent arrowElement from being placed not contiguously to its popper\r\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\r\n\r\n data.arrowElement = arrowElement;\r\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * Get the opposite placement variation of the given one\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} placement variation\r\n * @returns {String} flipped placement variation\r\n */\r\nfunction getOppositeVariation(variation) {\r\n if (variation === 'end') {\r\n return 'start';\r\n } else if (variation === 'start') {\r\n return 'end';\r\n }\r\n return variation;\r\n}\r\n\r\n/**\r\n * List of accepted placements to use as values of the `placement` option.<br />\r\n * Valid placements are:\r\n * - `auto`\r\n * - `top`\r\n * - `right`\r\n * - `bottom`\r\n * - `left`\r\n *\r\n * Each placement can have a variation from this list:\r\n * - `-start`\r\n * - `-end`\r\n *\r\n * Variations are interpreted easily if you think of them as the left to right\r\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\r\n * is right.<br />\r\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\r\n *\r\n * Some valid examples are:\r\n * - `top-end` (on top of reference, right aligned)\r\n * - `right-start` (on right of reference, top aligned)\r\n * - `bottom` (on bottom, centered)\r\n * - `auto-end` (on the side with more space available, alignment depends by placement)\r\n *\r\n * @static\r\n * @type {Array}\r\n * @enum {String}\r\n * @readonly\r\n * @method placements\r\n * @memberof Popper\r\n */\r\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\r\n\r\n// Get rid of `auto` `auto-start` and `auto-end`\r\nvar validPlacements = placements.slice(3);\r\n\r\n/**\r\n * Given an initial placement, returns all the subsequent placements\r\n * clockwise (or counter-clockwise).\r\n *\r\n * @method\r\n * @memberof Popper.Utils\r\n * @argument {String} placement - A valid placement (it accepts variations)\r\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\r\n * @returns {Array} placements including their variations\r\n */\r\nfunction clockwise(placement) {\r\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n\r\n var index = validPlacements.indexOf(placement);\r\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\r\n return counter ? arr.reverse() : arr;\r\n}\r\n\r\nvar BEHAVIORS = {\r\n FLIP: 'flip',\r\n CLOCKWISE: 'clockwise',\r\n COUNTERCLOCKWISE: 'counterclockwise'\r\n};\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction flip(data, options) {\r\n // if `inner` modifier is enabled, we can't use the `flip` modifier\r\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\r\n return data;\r\n }\r\n\r\n if (data.flipped && data.placement === data.originalPlacement) {\r\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\r\n return data;\r\n }\r\n\r\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\r\n\r\n var placement = data.placement.split('-')[0];\r\n var placementOpposite = getOppositePlacement(placement);\r\n var variation = data.placement.split('-')[1] || '';\r\n\r\n var flipOrder = [];\r\n\r\n switch (options.behavior) {\r\n case BEHAVIORS.FLIP:\r\n flipOrder = [placement, placementOpposite];\r\n break;\r\n case BEHAVIORS.CLOCKWISE:\r\n flipOrder = clockwise(placement);\r\n break;\r\n case BEHAVIORS.COUNTERCLOCKWISE:\r\n flipOrder = clockwise(placement, true);\r\n break;\r\n default:\r\n flipOrder = options.behavior;\r\n }\r\n\r\n flipOrder.forEach(function (step, index) {\r\n if (placement !== step || flipOrder.length === index + 1) {\r\n return data;\r\n }\r\n\r\n placement = data.placement.split('-')[0];\r\n placementOpposite = getOppositePlacement(placement);\r\n\r\n var popperOffsets = data.offsets.popper;\r\n var refOffsets = data.offsets.reference;\r\n\r\n // using floor because the reference offsets may contain decimals we are not going to consider here\r\n var floor = Math.floor;\r\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\r\n\r\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\r\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\r\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\r\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\r\n\r\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\r\n\r\n // flip the variation if required\r\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\r\n\r\n // flips variation if reference element overflows boundaries\r\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\r\n\r\n // flips variation if popper content overflows boundaries\r\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\r\n\r\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\r\n\r\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\r\n // this boolean to detect any flip loop\r\n data.flipped = true;\r\n\r\n if (overlapsRef || overflowsBoundaries) {\r\n placement = flipOrder[index + 1];\r\n }\r\n\r\n if (flippedVariation) {\r\n variation = getOppositeVariation(variation);\r\n }\r\n\r\n data.placement = placement + (variation ? '-' + variation : '');\r\n\r\n // this object contains `position`, we want to preserve it along with\r\n // any additional property we may add in the future\r\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\r\n\r\n data = runModifiers(data.instance.modifiers, data, 'flip');\r\n }\r\n });\r\n return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction keepTogether(data) {\r\n var _data$offsets = data.offsets,\r\n popper = _data$offsets.popper,\r\n reference = _data$offsets.reference;\r\n\r\n var placement = data.placement.split('-')[0];\r\n var floor = Math.floor;\r\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\r\n var side = isVertical ? 'right' : 'bottom';\r\n var opSide = isVertical ? 'left' : 'top';\r\n var measurement = isVertical ? 'width' : 'height';\r\n\r\n if (popper[side] < floor(reference[opSide])) {\r\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\r\n }\r\n if (popper[opSide] > floor(reference[side])) {\r\n data.offsets.popper[opSide] = floor(reference[side]);\r\n }\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * Converts a string containing value + unit into a px value number\r\n * @function\r\n * @memberof {modifiers~offset}\r\n * @private\r\n * @argument {String} str - Value + unit string\r\n * @argument {String} measurement - `height` or `width`\r\n * @argument {Object} popperOffsets\r\n * @argument {Object} referenceOffsets\r\n * @returns {Number|String}\r\n * Value in pixels, or original string if no values were extracted\r\n */\r\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\r\n // separate value from unit\r\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\r\n var value = +split[1];\r\n var unit = split[2];\r\n\r\n // If it's not a number it's an operator, I guess\r\n if (!value) {\r\n return str;\r\n }\r\n\r\n if (unit.indexOf('%') === 0) {\r\n var element = void 0;\r\n switch (unit) {\r\n case '%p':\r\n element = popperOffsets;\r\n break;\r\n case '%':\r\n case '%r':\r\n default:\r\n element = referenceOffsets;\r\n }\r\n\r\n var rect = getClientRect(element);\r\n return rect[measurement] / 100 * value;\r\n } else if (unit === 'vh' || unit === 'vw') {\r\n // if is a vh or vw, we calculate the size based on the viewport\r\n var size = void 0;\r\n if (unit === 'vh') {\r\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n } else {\r\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\r\n }\r\n return size / 100 * value;\r\n } else {\r\n // if is an explicit pixel unit, we get rid of the unit and keep the value\r\n // if is an implicit unit, it's px, and we return just the value\r\n return value;\r\n }\r\n}\r\n\r\n/**\r\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\r\n * @function\r\n * @memberof {modifiers~offset}\r\n * @private\r\n * @argument {String} offset\r\n * @argument {Object} popperOffsets\r\n * @argument {Object} referenceOffsets\r\n * @argument {String} basePlacement\r\n * @returns {Array} a two cells array with x and y offsets in numbers\r\n */\r\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\r\n var offsets = [0, 0];\r\n\r\n // Use height if placement is left or right and index is 0 otherwise use width\r\n // in this way the first offset will use an axis and the second one\r\n // will use the other one\r\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\r\n\r\n // Split the offset string to obtain a list of values and operands\r\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\r\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\r\n return frag.trim();\r\n });\r\n\r\n // Detect if the offset string contains a pair of values or a single one\r\n // they could be separated by comma or space\r\n var divider = fragments.indexOf(find(fragments, function (frag) {\r\n return frag.search(/,|\\s/) !== -1;\r\n }));\r\n\r\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\r\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\r\n }\r\n\r\n // If divider is found, we divide the list of values and operands to divide\r\n // them by ofset X and Y.\r\n var splitRegex = /\\s*,\\s*|\\s+/;\r\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\r\n\r\n // Convert the values with units to absolute pixels to allow our computations\r\n ops = ops.map(function (op, index) {\r\n // Most of the units rely on the orientation of the popper\r\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\r\n var mergeWithPrevious = false;\r\n return op\r\n // This aggregates any `+` or `-` sign that aren't considered operators\r\n // e.g.: 10 + +5 => [10, +, +5]\r\n .reduce(function (a, b) {\r\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\r\n a[a.length - 1] = b;\r\n mergeWithPrevious = true;\r\n return a;\r\n } else if (mergeWithPrevious) {\r\n a[a.length - 1] += b;\r\n mergeWithPrevious = false;\r\n return a;\r\n } else {\r\n return a.concat(b);\r\n }\r\n }, [])\r\n // Here we convert the string values into number values (in px)\r\n .map(function (str) {\r\n return toValue(str, measurement, popperOffsets, referenceOffsets);\r\n });\r\n });\r\n\r\n // Loop trough the offsets arrays and execute the operations\r\n ops.forEach(function (op, index) {\r\n op.forEach(function (frag, index2) {\r\n if (isNumeric(frag)) {\r\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\r\n }\r\n });\r\n });\r\n return offsets;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @argument {Number|String} options.offset=0\r\n * The offset value as described in the modifier description\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction offset(data, _ref) {\r\n var offset = _ref.offset;\r\n var placement = data.placement,\r\n _data$offsets = data.offsets,\r\n popper = _data$offsets.popper,\r\n reference = _data$offsets.reference;\r\n\r\n var basePlacement = placement.split('-')[0];\r\n\r\n var offsets = void 0;\r\n if (isNumeric(+offset)) {\r\n offsets = [+offset, 0];\r\n } else {\r\n offsets = parseOffset(offset, popper, reference, basePlacement);\r\n }\r\n\r\n if (basePlacement === 'left') {\r\n popper.top += offsets[0];\r\n popper.left -= offsets[1];\r\n } else if (basePlacement === 'right') {\r\n popper.top += offsets[0];\r\n popper.left += offsets[1];\r\n } else if (basePlacement === 'top') {\r\n popper.left += offsets[0];\r\n popper.top -= offsets[1];\r\n } else if (basePlacement === 'bottom') {\r\n popper.left += offsets[0];\r\n popper.top += offsets[1];\r\n }\r\n\r\n data.popper = popper;\r\n return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction preventOverflow(data, options) {\r\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\r\n\r\n // If offsetParent is the reference element, we really want to\r\n // go one step up and use the next offsetParent as reference to\r\n // avoid to make this modifier completely useless and look like broken\r\n if (data.instance.reference === boundariesElement) {\r\n boundariesElement = getOffsetParent(boundariesElement);\r\n }\r\n\r\n // NOTE: DOM access here\r\n // resets the popper's position so that the document size can be calculated excluding\r\n // the size of the popper element itself\r\n var transformProp = getSupportedPropertyName('transform');\r\n var popperStyles = data.instance.popper.style; // assignment to help minification\r\n var top = popperStyles.top,\r\n left = popperStyles.left,\r\n transform = popperStyles[transformProp];\r\n\r\n popperStyles.top = '';\r\n popperStyles.left = '';\r\n popperStyles[transformProp] = '';\r\n\r\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\r\n\r\n // NOTE: DOM access here\r\n // restores the original style properties after the offsets have been computed\r\n popperStyles.top = top;\r\n popperStyles.left = left;\r\n popperStyles[transformProp] = transform;\r\n\r\n options.boundaries = boundaries;\r\n\r\n var order = options.priority;\r\n var popper = data.offsets.popper;\r\n\r\n var check = {\r\n primary: function primary(placement) {\r\n var value = popper[placement];\r\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\r\n value = Math.max(popper[placement], boundaries[placement]);\r\n }\r\n return defineProperty({}, placement, value);\r\n },\r\n secondary: function secondary(placement) {\r\n var mainSide = placement === 'right' ? 'left' : 'top';\r\n var value = popper[mainSide];\r\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\r\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\r\n }\r\n return defineProperty({}, mainSide, value);\r\n }\r\n };\r\n\r\n order.forEach(function (placement) {\r\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\r\n popper = _extends({}, popper, check[side](placement));\r\n });\r\n\r\n data.offsets.popper = popper;\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction shift(data) {\r\n var placement = data.placement;\r\n var basePlacement = placement.split('-')[0];\r\n var shiftvariation = placement.split('-')[1];\r\n\r\n // if shift shiftvariation is specified, run the modifier\r\n if (shiftvariation) {\r\n var _data$offsets = data.offsets,\r\n reference = _data$offsets.reference,\r\n popper = _data$offsets.popper;\r\n\r\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\r\n var side = isVertical ? 'left' : 'top';\r\n var measurement = isVertical ? 'width' : 'height';\r\n\r\n var shiftOffsets = {\r\n start: defineProperty({}, side, reference[side]),\r\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\r\n };\r\n\r\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\r\n }\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by update method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction hide(data) {\r\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\r\n return data;\r\n }\r\n\r\n var refRect = data.offsets.reference;\r\n var bound = find(data.instance.modifiers, function (modifier) {\r\n return modifier.name === 'preventOverflow';\r\n }).boundaries;\r\n\r\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\r\n // Avoid unnecessary DOM access if visibility hasn't changed\r\n if (data.hide === true) {\r\n return data;\r\n }\r\n\r\n data.hide = true;\r\n data.attributes['x-out-of-boundaries'] = '';\r\n } else {\r\n // Avoid unnecessary DOM access if visibility hasn't changed\r\n if (data.hide === false) {\r\n return data;\r\n }\r\n\r\n data.hide = false;\r\n data.attributes['x-out-of-boundaries'] = false;\r\n }\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * @function\r\n * @memberof Modifiers\r\n * @argument {Object} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {Object} The data object, properly modified\r\n */\r\nfunction inner(data) {\r\n var placement = data.placement;\r\n var basePlacement = placement.split('-')[0];\r\n var _data$offsets = data.offsets,\r\n popper = _data$offsets.popper,\r\n reference = _data$offsets.reference;\r\n\r\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\r\n\r\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\r\n\r\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\r\n\r\n data.placement = getOppositePlacement(placement);\r\n data.offsets.popper = getClientRect(popper);\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * Modifier function, each modifier can have a function of this type assigned\r\n * to its `fn` property.<br />\r\n * These functions will be called on each update, this means that you must\r\n * make sure they are performant enough to avoid performance bottlenecks.\r\n *\r\n * @function ModifierFn\r\n * @argument {dataObject} data - The data object generated by `update` method\r\n * @argument {Object} options - Modifiers configuration and options\r\n * @returns {dataObject} The data object, properly modified\r\n */\r\n\r\n/**\r\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\r\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\r\n * needed by the library.\r\n *\r\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\r\n * All the other properties are configurations that could be tweaked.\r\n * @namespace modifiers\r\n */\r\nvar modifiers = {\r\n /**\r\n * Modifier used to shift the popper on the start or end of its reference\r\n * element.<br />\r\n * It will read the variation of the `placement` property.<br />\r\n * It can be one either `-end` or `-start`.\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n shift: {\r\n /** @prop {number} order=100 - Index used to define the order of execution */\r\n order: 100,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: shift\r\n },\r\n\r\n /**\r\n * The `offset` modifier can shift your popper on both its axis.\r\n *\r\n * It accepts the following units:\r\n * - `px` or unit-less, interpreted as pixels\r\n * - `%` or `%r`, percentage relative to the length of the reference element\r\n * - `%p`, percentage relative to the length of the popper element\r\n * - `vw`, CSS viewport width unit\r\n * - `vh`, CSS viewport height unit\r\n *\r\n * For length is intended the main axis relative to the placement of the popper.<br />\r\n * This means that if the placement is `top` or `bottom`, the length will be the\r\n * `width`. In case of `left` or `right`, it will be the `height`.\r\n *\r\n * You can provide a single value (as `Number` or `String`), or a pair of values\r\n * as `String` divided by a comma or one (or more) white spaces.<br />\r\n * The latter is a deprecated method because it leads to confusion and will be\r\n * removed in v2.<br />\r\n * Additionally, it accepts additions and subtractions between different units.\r\n * Note that multiplications and divisions aren't supported.\r\n *\r\n * Valid examples are:\r\n * ```\r\n * 10\r\n * '10%'\r\n * '10, 10'\r\n * '10%, 10'\r\n * '10 + 10%'\r\n * '10 - 5vh + 3%'\r\n * '-10px + 5vh, 5px - 6%'\r\n * ```\r\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\r\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\r\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\r\n *\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n offset: {\r\n /** @prop {number} order=200 - Index used to define the order of execution */\r\n order: 200,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: offset,\r\n /** @prop {Number|String} offset=0\r\n * The offset value as described in the modifier description\r\n */\r\n offset: 0\r\n },\r\n\r\n /**\r\n * Modifier used to prevent the popper from being positioned outside the boundary.\r\n *\r\n * A scenario exists where the reference itself is not within the boundaries.<br />\r\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\r\n * In this case we need to decide whether the popper should either:\r\n *\r\n * - detach from the reference and remain \"trapped\" in the boundaries, or\r\n * - if it should ignore the boundary and \"escape with its reference\"\r\n *\r\n * When `escapeWithReference` is set to`true` and reference is completely\r\n * outside its boundaries, the popper will overflow (or completely leave)\r\n * the boundaries in order to remain attached to the edge of the reference.\r\n *\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n preventOverflow: {\r\n /** @prop {number} order=300 - Index used to define the order of execution */\r\n order: 300,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: preventOverflow,\r\n /**\r\n * @prop {Array} [priority=['left','right','top','bottom']]\r\n * Popper will try to prevent overflow following these priorities by default,\r\n * then, it could overflow on the left and on top of the `boundariesElement`\r\n */\r\n priority: ['left', 'right', 'top', 'bottom'],\r\n /**\r\n * @prop {number} padding=5\r\n * Amount of pixel used to define a minimum distance between the boundaries\r\n * and the popper. This makes sure the popper always has a little padding\r\n * between the edges of its container\r\n */\r\n padding: 5,\r\n /**\r\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\r\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\r\n * `viewport` or any DOM element.\r\n */\r\n boundariesElement: 'scrollParent'\r\n },\r\n\r\n /**\r\n * Modifier used to make sure the reference and its popper stay near each other\r\n * without leaving any gap between the two. Especially useful when the arrow is\r\n * enabled and you want to ensure that it points to its reference element.\r\n * It cares only about the first axis. You can still have poppers with margin\r\n * between the popper and its reference element.\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n keepTogether: {\r\n /** @prop {number} order=400 - Index used to define the order of execution */\r\n order: 400,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: keepTogether\r\n },\r\n\r\n /**\r\n * This modifier is used to move the `arrowElement` of the popper to make\r\n * sure it is positioned between the reference element and its popper element.\r\n * It will read the outer size of the `arrowElement` node to detect how many\r\n * pixels of conjunction are needed.\r\n *\r\n * It has no effect if no `arrowElement` is provided.\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n arrow: {\r\n /** @prop {number} order=500 - Index used to define the order of execution */\r\n order: 500,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: arrow,\r\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\r\n element: '[x-arrow]'\r\n },\r\n\r\n /**\r\n * Modifier used to flip the popper's placement when it starts to overlap its\r\n * reference element.\r\n *\r\n * Requires the `preventOverflow` modifier before it in order to work.\r\n *\r\n * **NOTE:** this modifier will interrupt the current update cycle and will\r\n * restart it if it detects the need to flip the placement.\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n flip: {\r\n /** @prop {number} order=600 - Index used to define the order of execution */\r\n order: 600,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: flip,\r\n /**\r\n * @prop {String|Array} behavior='flip'\r\n * The behavior used to change the popper's placement. It can be one of\r\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\r\n * placements (with optional variations)\r\n */\r\n behavior: 'flip',\r\n /**\r\n * @prop {number} padding=5\r\n * The popper will flip if it hits the edges of the `boundariesElement`\r\n */\r\n padding: 5,\r\n /**\r\n * @prop {String|HTMLElement} boundariesElement='viewport'\r\n * The element which will define the boundaries of the popper position.\r\n * The popper will never be placed outside of the defined boundaries\r\n * (except if `keepTogether` is enabled)\r\n */\r\n boundariesElement: 'viewport',\r\n /**\r\n * @prop {Boolean} flipVariations=false\r\n * The popper will switch placement variation between `-start` and `-end` when\r\n * the reference element overlaps its boundaries.\r\n *\r\n * The original placement should have a set variation.\r\n */\r\n flipVariations: false,\r\n /**\r\n * @prop {Boolean} flipVariationsByContent=false\r\n * The popper will switch placement variation between `-start` and `-end` when\r\n * the popper element overlaps its reference boundaries.\r\n *\r\n * The original placement should have a set variation.\r\n */\r\n flipVariationsByContent: false\r\n },\r\n\r\n /**\r\n * Modifier used to make the popper flow toward the inner of the reference element.\r\n * By default, when this modifier is disabled, the popper will be placed outside\r\n * the reference element.\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n inner: {\r\n /** @prop {number} order=700 - Index used to define the order of execution */\r\n order: 700,\r\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\r\n enabled: false,\r\n /** @prop {ModifierFn} */\r\n fn: inner\r\n },\r\n\r\n /**\r\n * Modifier used to hide the popper when its reference element is outside of the\r\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\r\n * be used to hide with a CSS selector the popper when its reference is\r\n * out of boundaries.\r\n *\r\n * Requires the `preventOverflow` modifier before it in order to work.\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n hide: {\r\n /** @prop {number} order=800 - Index used to define the order of execution */\r\n order: 800,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: hide\r\n },\r\n\r\n /**\r\n * Computes the style that will be applied to the popper element to gets\r\n * properly positioned.\r\n *\r\n * Note that this modifier will not touch the DOM, it just prepares the styles\r\n * so that `applyStyle` modifier can apply it. This separation is useful\r\n * in case you need to replace `applyStyle` with a custom implementation.\r\n *\r\n * This modifier has `850` as `order` value to maintain backward compatibility\r\n * with previous versions of Popper.js. Expect the modifiers ordering method\r\n * to change in future major versions of the library.\r\n *\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n computeStyle: {\r\n /** @prop {number} order=850 - Index used to define the order of execution */\r\n order: 850,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: computeStyle,\r\n /**\r\n * @prop {Boolean} gpuAcceleration=true\r\n * If true, it uses the CSS 3D transformation to position the popper.\r\n * Otherwise, it will use the `top` and `left` properties\r\n */\r\n gpuAcceleration: true,\r\n /**\r\n * @prop {string} [x='bottom']\r\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\r\n * Change this if your popper should grow in a direction different from `bottom`\r\n */\r\n x: 'bottom',\r\n /**\r\n * @prop {string} [x='left']\r\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\r\n * Change this if your popper should grow in a direction different from `right`\r\n */\r\n y: 'right'\r\n },\r\n\r\n /**\r\n * Applies the computed styles to the popper element.\r\n *\r\n * All the DOM manipulations are limited to this modifier. This is useful in case\r\n * you want to integrate Popper.js inside a framework or view library and you\r\n * want to delegate all the DOM manipulations to it.\r\n *\r\n * Note that if you disable this modifier, you must make sure the popper element\r\n * has its position set to `absolute` before Popper.js can do its work!\r\n *\r\n * Just disable this modifier and define your own to achieve the desired effect.\r\n *\r\n * @memberof modifiers\r\n * @inner\r\n */\r\n applyStyle: {\r\n /** @prop {number} order=900 - Index used to define the order of execution */\r\n order: 900,\r\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\r\n enabled: true,\r\n /** @prop {ModifierFn} */\r\n fn: applyStyle,\r\n /** @prop {Function} */\r\n onLoad: applyStyleOnLoad,\r\n /**\r\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\r\n * @prop {Boolean} gpuAcceleration=true\r\n * If true, it uses the CSS 3D transformation to position the popper.\r\n * Otherwise, it will use the `top` and `left` properties\r\n */\r\n gpuAcceleration: undefined\r\n }\r\n};\r\n\r\n/**\r\n * The `dataObject` is an object containing all the information used by Popper.js.\r\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\r\n * @name dataObject\r\n * @property {Object} data.instance The Popper.js instance\r\n * @property {String} data.placement Placement applied to popper\r\n * @property {String} data.originalPlacement Placement originally defined on init\r\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\r\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\r\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\r\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\r\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\r\n * @property {Object} data.boundaries Offsets of the popper boundaries\r\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\r\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\r\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\r\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\r\n */\r\n\r\n/**\r\n * Default options provided to Popper.js constructor.<br />\r\n * These can be overridden using the `options` argument of Popper.js.<br />\r\n * To override an option, simply pass an object with the same\r\n * structure of the `options` object, as the 3rd argument. For example:\r\n * ```\r\n * new Popper(ref, pop, {\r\n * modifiers: {\r\n * preventOverflow: { enabled: false }\r\n * }\r\n * })\r\n * ```\r\n * @type {Object}\r\n * @static\r\n * @memberof Popper\r\n */\r\nvar Defaults = {\r\n /**\r\n * Popper's placement.\r\n * @prop {Popper.placements} placement='bottom'\r\n */\r\n placement: 'bottom',\r\n\r\n /**\r\n * Set this to true if you want popper to position it self in 'fixed' mode\r\n * @prop {Boolean} positionFixed=false\r\n */\r\n positionFixed: false,\r\n\r\n /**\r\n * Whether events (resize, scroll) are initially enabled.\r\n * @prop {Boolean} eventsEnabled=true\r\n */\r\n eventsEnabled: true,\r\n\r\n /**\r\n * Set to true if you want to automatically remove the popper when\r\n * you call the `destroy` method.\r\n * @prop {Boolean} removeOnDestroy=false\r\n */\r\n removeOnDestroy: false,\r\n\r\n /**\r\n * Callback called when the popper is created.<br />\r\n * By default, it is set to no-op.<br />\r\n * Access Popper.js instance with `data.instance`.\r\n * @prop {onCreate}\r\n */\r\n onCreate: function onCreate() {},\r\n\r\n /**\r\n * Callback called when the popper is updated. This callback is not called\r\n * on the initialization/creation of the popper, but only on subsequent\r\n * updates.<br />\r\n * By default, it is set to no-op.<br />\r\n * Access Popper.js instance with `data.instance`.\r\n * @prop {onUpdate}\r\n */\r\n onUpdate: function onUpdate() {},\r\n\r\n /**\r\n * List of modifiers used to modify the offsets before they are applied to the popper.\r\n * They provide most of the functionalities of Popper.js.\r\n * @prop {modifiers}\r\n */\r\n modifiers: modifiers\r\n};\r\n\r\n/**\r\n * @callback onCreate\r\n * @param {dataObject} data\r\n */\r\n\r\n/**\r\n * @callback onUpdate\r\n * @param {dataObject} data\r\n */\r\n\r\n// Utils\r\n// Methods\r\nvar Popper = function () {\r\n /**\r\n * Creates a new Popper.js instance.\r\n * @class Popper\r\n * @param {Element|referenceObject} reference - The reference element used to position the popper\r\n * @param {Element} popper - The HTML / XML element used as the popper\r\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\r\n * @return {Object} instance - The generated Popper.js instance\r\n */\r\n function Popper(reference, popper) {\r\n var _this = this;\r\n\r\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\r\n classCallCheck(this, Popper);\r\n\r\n this.scheduleUpdate = function () {\r\n return requestAnimationFrame(_this.update);\r\n };\r\n\r\n // make update() debounced, so that it only runs at most once-per-tick\r\n this.update = debounce(this.update.bind(this));\r\n\r\n // with {} we create a new object with the options inside it\r\n this.options = _extends({}, Popper.Defaults, options);\r\n\r\n // init state\r\n this.state = {\r\n isDestroyed: false,\r\n isCreated: false,\r\n scrollParents: []\r\n };\r\n\r\n // get reference and popper elements (allow jQuery wrappers)\r\n this.reference = reference && reference.jquery ? reference[0] : reference;\r\n this.popper = popper && popper.jquery ? popper[0] : popper;\r\n\r\n // Deep merge modifiers options\r\n this.options.modifiers = {};\r\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\r\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\r\n });\r\n\r\n // Refactoring modifiers' list (Object => Array)\r\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\r\n return _extends({\r\n name: name\r\n }, _this.options.modifiers[name]);\r\n })\r\n // sort the modifiers by order\r\n .sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n\r\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\r\n // such code is executed in the same order of its modifier\r\n // they could add new properties to their options configuration\r\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\r\n this.modifiers.forEach(function (modifierOptions) {\r\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\r\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\r\n }\r\n });\r\n\r\n // fire the first update to position the popper in the right place\r\n this.update();\r\n\r\n var eventsEnabled = this.options.eventsEnabled;\r\n if (eventsEnabled) {\r\n // setup event listeners, they will take care of update the position in specific situations\r\n this.enableEventListeners();\r\n }\r\n\r\n this.state.eventsEnabled = eventsEnabled;\r\n }\r\n\r\n // We can't use class properties because they don't get listed in the\r\n // class prototype and break stuff like Sinon stubs\r\n\r\n\r\n createClass(Popper, [{\r\n key: 'update',\r\n value: function update$$1() {\r\n return update.call(this);\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy$$1() {\r\n return destroy.call(this);\r\n }\r\n }, {\r\n key: 'enableEventListeners',\r\n value: function enableEventListeners$$1() {\r\n return enableEventListeners.call(this);\r\n }\r\n }, {\r\n key: 'disableEventListeners',\r\n value: function disableEventListeners$$1() {\r\n return disableEventListeners.call(this);\r\n }\r\n\r\n /**\r\n * Schedules an update. It will run on the next UI update available.\r\n * @method scheduleUpdate\r\n * @memberof Popper\r\n */\r\n\r\n\r\n /**\r\n * Collection of utilities useful when writing custom modifiers.\r\n * Starting from version 1.7, this method is available only if you\r\n * include `popper-utils.js` before `popper.js`.\r\n *\r\n * **DEPRECATION**: This way to access PopperUtils is deprecated\r\n * and will be removed in v2! Use the PopperUtils module directly instead.\r\n * Due to the high instability of the methods contained in Utils, we can't\r\n * guarantee them to follow semver. Use them at your own risk!\r\n * @static\r\n * @private\r\n * @type {Object}\r\n * @deprecated since version 1.8\r\n * @member Utils\r\n * @memberof Popper\r\n */\r\n\r\n }]);\r\n return Popper;\r\n}();\r\n\r\n/**\r\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\r\n * and lets you use it as replacement of a real DOM node.<br />\r\n * You can use this method to position a popper relatively to a set of coordinates\r\n * in case you don't have a DOM node to use as reference.\r\n *\r\n * ```\r\n * new Popper(referenceObject, popperNode);\r\n * ```\r\n *\r\n * NB: This feature isn't supported in Internet Explorer 10.\r\n * @name referenceObject\r\n * @property {Function} data.getBoundingClientRect\r\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\r\n * @property {number} data.clientWidth\r\n * An ES6 getter that will return the width of the virtual reference element.\r\n * @property {number} data.clientHeight\r\n * An ES6 getter that will return the height of the virtual reference element.\r\n */\r\n\r\n\r\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\r\nPopper.placements = placements;\r\nPopper.Defaults = Defaults;\r\n\r\nreturn Popper;\r\n\r\n})));\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/js/popper.js\");\n",""],"names":["global","factory","exports","module","define","amd","Popper","isBrowser","window","document","navigator","timeoutDuration","longerTimeoutBrowsers","i","length","userAgent","indexOf","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","setTimeout","supportsMicroTasks","debounce","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","ownerDocument","defaultView","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","arguments","undefined","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","Math","max","parseInt","getWindowSizes","height","width","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","obj","value","_extends","assign","source","hasOwnProperty","getClientRect","offsets","getBoundingClientRect","e","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","a","b","filteredAreas","filter","_ref2","computedPlacement","variation","split","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","findIndex","prop","cur","match","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","event","callback","scrollParents","isBody","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","setAttribute","applyStyle","arrowElement","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","round","floor","noRound","v","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","isFirefox","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","devicePixelRatio","prefixedProperty","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","_data$offsets$arrow","querySelector","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","getOppositeVariation","placements","validPlacements","clockwise","counter","index","concat","reverse","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","onLoad","Defaults","_this","requestAnimationFrame","bind","jquery","update$$1","destroy$$1","enableEventListeners$$1","disableEventListeners$$1","Utils","PopperUtils"],"sourceRoot":""}