UNPKG

536 kBSource Map (JSON)View Raw
1{"version":3,"sources":["_header.js","node_modules/browser-pack-flat/_prelude","packages/@interactjs/utils/isWindow.ts","packages/@interactjs/utils/window.ts","packages/@interactjs/utils/is.ts","packages/@interactjs/actions/drag/plugin.ts","packages/@interactjs/utils/domObjects.ts","packages/@interactjs/utils/browser.ts","packages/@interactjs/utils/domUtils.ts","packages/@interactjs/utils/extend.ts","packages/@interactjs/utils/rect.ts","packages/@interactjs/utils/getOriginXY.ts","packages/@interactjs/utils/normalizeListeners.ts","packages/@interactjs/utils/hypot.ts","packages/@interactjs/utils/pointerExtend.ts","packages/@interactjs/utils/pointerUtils.ts","packages/@interactjs/core/BaseEvent.ts","packages/@interactjs/utils/arr.ts","packages/@interactjs/actions/drop/DropEvent.ts","packages/@interactjs/actions/drop/plugin.ts","packages/@interactjs/actions/gesture/plugin.ts","packages/@interactjs/actions/resize/plugin.ts","packages/@interactjs/actions/plugin.ts","packages/@interactjs/utils/raf.ts","packages/@interactjs/auto-scroll/plugin.ts","packages/@interactjs/utils/misc.ts","packages/@interactjs/auto-start/InteractableMethods.ts","packages/@interactjs/auto-start/base.ts","packages/@interactjs/auto-start/dragAxis.ts","packages/@interactjs/auto-start/hold.ts","packages/@interactjs/auto-start/plugin.ts","packages/@interactjs/core/interactablePreventDefault.ts","packages/@interactjs/dev-tools/visualizer/plugin.ts","packages/@interactjs/dev-tools/plugin.ts","packages/@interactjs/utils/clone.ts","packages/@interactjs/modifiers/Modification.ts","packages/@interactjs/modifiers/base.ts","packages/@interactjs/core/options.ts","packages/@interactjs/core/InteractEvent.ts","packages/@interactjs/core/PointerInfo.ts","packages/@interactjs/core/Interaction.ts","packages/@interactjs/offset/plugin.ts","packages/@interactjs/inertia/plugin.ts","packages/@interactjs/core/Eventable.ts","packages/@interactjs/core/isNonNativeEvent.ts","packages/@interactjs/core/InteractStatic.ts","packages/@interactjs/core/Interactable.ts","packages/@interactjs/core/InteractableSet.ts","packages/@interactjs/core/events.ts","packages/@interactjs/core/interactionFinder.ts","packages/@interactjs/core/interactions.ts","packages/@interactjs/core/scope.ts","packages/@interactjs/interact/index.ts","packages/@interactjs/snappers/edgeTarget.ts","packages/@interactjs/snappers/elements.ts","packages/@interactjs/snappers/grid.ts","packages/@interactjs/snappers/all.ts","packages/@interactjs/snappers/plugin.ts","packages/@interactjs/modifiers/aspectRatio.ts","packages/@interactjs/modifiers/noop.ts","packages/@interactjs/modifiers/avoid/avoid.ts","packages/@interactjs/modifiers/restrict/pointer.ts","packages/@interactjs/modifiers/restrict/edges.ts","packages/@interactjs/modifiers/restrict/rect.ts","packages/@interactjs/modifiers/restrict/size.ts","packages/@interactjs/modifiers/rubberband/rubberband.ts","packages/@interactjs/modifiers/snap/pointer.ts","packages/@interactjs/modifiers/snap/size.ts","packages/@interactjs/modifiers/snap/edges.ts","packages/@interactjs/modifiers/spring/spring.ts","packages/@interactjs/modifiers/all.ts","packages/@interactjs/modifiers/plugin.ts","packages/@interactjs/pointer-events/PointerEvent.ts","packages/@interactjs/pointer-events/base.ts","packages/@interactjs/pointer-events/holdRepeat.ts","packages/@interactjs/pointer-events/interactableTargets.ts","packages/@interactjs/pointer-events/plugin.ts","packages/@interactjs/reflow/plugin.ts","packages/@interactjs/interactjs/index.ts","packages/interactjs/index.ts","node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;ACJA,CAAA,UAAA,CAAA,EAAA;AAAA,MAAA,QAAA,OAAA,0CAAA,OAAA,OAAA,QAAA,IAAA,OAAA,MAAA,KAAA,WAAA,EAAA;AAAA,IAAA,MAAA,CAAA,OAAA,GAAA,CAAA,EAAA;AAAA,GAAA,MAAA,IAAA,OAAA,MAAA,KAAA,UAAA,IAAA,MAAA,CAAA,GAAA,EAAA;AAAA,IAAA,MAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAA,GAAA,MAAA;AAAA,QAAA,CAAA;;AAAA,QAAA,OAAA,MAAA,KAAA,WAAA,EAAA;AAAA,MAAA,CAAA,GAAA,MAAA;AAAA,KAAA,MAAA,IAAA,OAAA,MAAA,KAAA,WAAA,EAAA;AAAA,MAAA,CAAA,GAAA,MAAA;AAAA,KAAA,MAAA,IAAA,OAAA,IAAA,KAAA,WAAA,EAAA;AAAA,MAAA,CAAA,GAAA,IAAA;AAAA,KAAA,MAAA;AAAA,MAAA,CAAA,GAAA,IAAA;AAAA;;AAAA,IAAA,CAAA,CAAA,QAAA,GAAA,CAAA,EAAA;AAAA;AAAA,CAAA,EAAA,YAAA;AAAA,MAAA,MAAA,EAAA,MAAA,EAAA,OAAA;AACA,MAAA,aAAA,GAAA,EAAA;;;;;;;;iBCDe,SAAA,QAAA,CAAA,KAAA,EAAA;AAAA,WAAgB,CAAC,EAAE,KAAK,IAAI,KAAK,CAAjB,MAAC,CAAD,IAA6B,KAAK,YAAY,KAAK,CAAnE,MAAA;;;;;;;;;;;;;ACAf;;AAAA;AAEO,MAAI,UAAU,GAAd,SAAA;;AAEP,MAAI,GAAG,GAAP,SAAA;;;AAGO,WAAA,IAAA,CAAA,MAAA,EAAoE;;AAGzE,IAAA,WAAA,CAAA,UAAA,GAAA,UAAU,GAH+D,MAGzE,CAHyE,CAAA;;AAMzE,QAAM,EAAE,GAAG,MAAM,CAAN,QAAA,CAAA,cAAA,CAN8D,EAM9D,CAAX,CANyE,CAAA;;AASzE,QAAI,EAAE,CAAF,aAAA,KAAqB,MAAM,CAA3B,QAAA,IAAwC,OAAO,MAAM,CAAb,IAAA,KAAxC,UAAA,IAA6E,MAAM,CAAN,IAAA,CAAA,EAAA,MAAjF,EAAA,EAAyG;;AAEvG,MAAA,MAAM,GAAG,MAAM,CAAN,IAAA,CAAT,MAAS,CAAT;AACD;;AAED,IAAA,WAAA,CAAA,MAAA,GAAA,GAAG,GAAH,MAAA;AACD;;AAED,MAAI,OAAA,MAAA,KAAA,WAAA,IAAiC,CAAC,CAAtC,MAAA,EAA+C;AAC7C,IAAA,IAAI,CAAJ,MAAI,CAAJ;AACD;;AAEM,WAAA,SAAA,CAAA,IAAA,EAA+B;AACpC,QAAI,CAAA,GAAA,aAAA,CAAA,OAAA,EAAJ,IAAI,CAAJ,EAAoB;AAClB,aAAA,IAAA;AACD;;AAED,QAAM,QAAQ,GAAG,IAAI,CAAJ,aAAA,IAAjB,IAAA;AAEA,WAAO,QAAQ,CAAR,WAAA,IAAwB,GAAG,CAAlC,MAAA;AACD;;;;;;;;;AClCD;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;AAEA,MAAM,WAAM,GAAG,SAAT,MAAS,CAAA,KAAA,EAAA;AAAA,WAAiC,KAAK,KAAK,WAAG,CAAb,MAAA,IAAwB,CAAA,GAAA,aAAA,CAAA,OAAA,EAAzD,KAAyD,CAAzD;AAAf,GAAA;;AAEA,MAAM,OAAO,GAAG,SAAV,OAAU,CAAA,KAAA,EAAA;AAAA,WAA2C,MAAM,CAAN,KAAM,CAAN,IAAiB,KAAK,CAAL,QAAA,KAA5D,EAAA;AAAhB,GAAA;;AAEA,MAAM,MAAM,GAAG,SAAT,MAAS,CAAA,KAAA,EAAA;AAAA,WAAmD,CAAC,CAAD,KAAA,IAAW,OAAA,CAAA,KAAA,CAAA,KAA9D,QAAA;AAAf,GAAA;;AAEA,MAAM,IAAI,GAAG,SAAP,IAAO,CAAA,KAAA,EAAA;AAAA,WAAkD,OAAA,KAAA,KAAlD,UAAA;AAAb,GAAA;;AAEA,MAAM,MAAM,GAAG,SAAT,MAAS,CAAA,KAAA,EAAA;AAAA,WAAiC,OAAA,KAAA,KAAjC,QAAA;AAAf,GAAA;;AAEA,MAAM,IAAI,GAAG,SAAP,IAAO,CAAA,KAAA,EAAA;AAAA,WAAkC,OAAA,KAAA,KAAlC,SAAA;AAAb,GAAA;;AAEA,MAAM,MAAM,GAAG,SAAT,MAAS,CAAA,KAAA,EAAA;AAAA,WAAiC,OAAA,KAAA,KAAjC,QAAA;AAAf,GAAA;;AAEA,MAAM,OAAO,GAAG,SAAV,OAAU,CAAA,KAAA,EAAkC;AAChD,QAAI,CAAA,KAAA,IAAU,OAAA,CAAA,KAAA,CAAA,KAAd,QAAA,EAAyC;AACvC,aAAA,KAAA;AAF8C,KAAA,CAAA;;;AAMhD,QAAM,OAAO,GAAG,WAAG,CAAH,SAAA,CAAA,KAAA,KAAwB,WAAG,CAA3C,MAAA;;AAEA,WAAO,kBAAA,IAAA,CAAA,OAAA,CAA8B,OAAO,CAArC,OAAA,CAAA,IACH,KAAK,YAAY,OAAO,CADrB,OAAA,CAAA;AAAA,MAEH,KAAK,CAAL,QAAA,KAAA,CAAA,IAAwB,OAAO,KAAK,CAAZ,QAAA,KAF5B,QAAA;AARF,GAAA;;AAaA,MAAM,WAA0B,GAAG,SAA7B,WAA6B,CAAA,KAAA,EAAA;AAAA,WACjC,MAAM,CAAN,KAAM,CAAN,IAAiB,CAAC,CAAC,KAAK,CAAxB,WAAA,IAAwC,oBAAA,IAAA,CAAyB,KAAK,CAAL,WAAA,CADhC,QACgC,EAAzB,CADP;AAAnC,GAAA;;AAGA,MAAM,KAAK,GAAG,SAAR,KAAQ,CAAA,KAAA,EAAA;AAAA,WACZ,MAAM,CAAN,KAAM,CAAN,IAAiB,OAAO,KAAK,CAAZ,MAAA,KAAjB,WAAA,IAAwD,IAAI,CAAC,KAAK,CADtD,MACgD,CADhD;AAAd,GAAA;;sBAGe;AACb,IAAA,MAAM,EADO,WAAA;AAEb,IAAA,OAAO,EAFM,OAAA;AAGb,IAAA,MAAM,EAHO,MAAA;AAIb,IAAA,IAAI,EAJS,IAAA;AAKb,IAAA,MAAM,EALO,MAAA;AAMb,IAAA,IAAI,EANS,IAAA;AAOb,IAAA,MAAM,EAPO,MAAA;AAQb,IAAA,OAAO,EARM,OAAA;AASb,IAAA,WAAW,EATE,WAAA;AAUb,IAAA,KAAK,EAAL;AAVa,G;;;;;;;;;AClCf;;AAAA;;AAwBA,WAAA,OAAA,CAAA,KAAA,EAAgC;AAAA,QACtB,OADsB,GACc,KADd,CAAA,OAAA;AAAA,QACb,YADa,GACc,KADd,CAAA,YAAA;AAAA,QACC,QADD,GACc,KADd,CAAA,QAAA;AAG9B,IAAA,YAAY,CAAZ,SAAA,CAAA,SAAA,GAAmC,IAAI,CAAvC,SAAA;AAEA,IAAA,OAAO,CAAP,GAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,OAAO,CAAP,UAAA,CAAA,IAAA,GAAA,WAAA;AAEA,IAAA,QAAQ,CAAR,OAAA,CAAA,IAAA,GAAwB,IAAI,CAA5B,QAAA;AACD;;AAED,WAAA,UAAA,CAAA,IAAA,EAAsC;AAAA,QAAf,WAAe,GAAA,IAAA,CAAf,WAAe;AACpC,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,MAAA,EAA0C;AAE1C,QAAM,IAAI,GAAG,WAAW,CAAX,QAAA,CAAb,IAAA;;AAEA,QAAI,IAAI,KAAR,GAAA,EAAkB;AAChB,MAAA,WAAW,CAAX,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,GAAgC,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,IAAA,CAAhC,CAAA;AACA,MAAA,WAAW,CAAX,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAkC,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,MAAA,CAAlC,CAAA;AAEA,MAAA,WAAW,CAAX,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA;AACA,MAAA,WAAW,CAAX,MAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA,GAAA,CAAA;AALF,KAAA,MAMO,IAAI,IAAI,KAAR,GAAA,EAAkB;AACvB,MAAA,WAAW,CAAX,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,GAAgC,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,IAAA,CAAhC,CAAA;AACA,MAAA,WAAW,CAAX,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAkC,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,MAAA,CAAlC,CAAA;AAEA,MAAA,WAAW,CAAX,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA;AACA,MAAA,WAAW,CAAX,MAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA,GAAA,CAAA;AACD;AACF;;AAED,WAAA,IAAA,CAAA,KAAA,EAAwC;AAAA,QAAvB,MAAuB,GAAA,KAAA,CAAvB,MAAuB;AAAA,QAAf,WAAe,GAAA,KAAA,CAAf,WAAe;AACtC,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,MAAA,EAA0C;AAE1C,QAAM,IAAI,GAAG,WAAW,CAAX,QAAA,CAAb,IAAA;;AAEA,QAAI,IAAI,KAAJ,GAAA,IAAgB,IAAI,KAAxB,GAAA,EAAkC;AAChC,UAAM,QAAQ,GAAG,IAAI,KAAJ,GAAA,GAAA,GAAA,GAAjB,GAAA;AAEA,MAAA,MAAM,CAAN,IAAA,CAAA,QAAA,IAAwB,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,IAAA,CAAxB,QAAwB,CAAxB;AACA,MAAA,MAAM,CAAN,MAAA,CAAA,QAAA,IAA0B,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,MAAA,CAA1B,QAA0B,CAA1B;AACA,MAAA,MAAM,CAAN,KAAA,CAAA,QAAA,IAAA,CAAA;AACD;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCD,MAAM,SAA0B,GAAG,SAAA,SAAA,CAAA,OAAA,EAG5B;AACL,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,OAAI,CAAJ,EAAwB;AACtB,WAAA,OAAA,CAAA,IAAA,CAAA,OAAA,GAA4B,OAAO,CAAP,OAAA,KAA5B,KAAA;AACA,WAAA,YAAA,CAAA,MAAA,EAAA,OAAA;AACA,WAAA,WAAA,CAAA,MAAA,EAAA,OAAA;;AAEA,UAAI,mBAAA,IAAA,CAAwB,OAAO,CAAnC,QAAI,CAAJ,EAA+C;AAC7C,aAAA,OAAA,CAAA,IAAA,CAAA,QAAA,GAA6B,OAAO,CAApC,QAAA;AACD;;AACD,UAAI,aAAA,IAAA,CAAkB,OAAO,CAA7B,SAAI,CAAJ,EAA0C;AACxC,aAAA,OAAA,CAAA,IAAA,CAAA,SAAA,GAA8B,OAAO,CAArC,SAAA;AACD;;AAED,aAAA,IAAA;AACD;;AAED,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,OAAI,CAAJ,EAAsB;AACpB,WAAA,OAAA,CAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEA,aAAA,IAAA;AACD;;AAED,WAAO,KAAA,OAAA,CAAP,IAAA;AAzBF,GAAA;;AA4BA,MAAM,IAAY,GAAG;AACnB,IAAA,EAAE,EADiB,cAAA;AAEnB,IAAA,OAAO,EAFY,OAAA;AAGnB,IAAA,SAAS,EAAE;AACT,yCADS,UAAA;AAET,oCAFS,UAAA;;AAKT,kCALS,IAAA;AAMT,0BAAoB,SAAA,cAAA,CAAA,GAAA,EAAS;AAAA,YACnB,WADmB,GACoB,GADpB,CAAA,WAAA;AAAA,YACN,YADM,GACoB,GADpB,CAAA,YAAA;AAAA,YACQ,OADR,GACoB,GADpB,CAAA,OAAA;AAE3B,YAAM,WAAW,GAAG,YAAY,CAAZ,OAAA,CAApB,IAAA;;AAEA,YACE,EAAE,WAAW,IAAI,WAAW,CAA5B,OAAA,KAAA;AAEC,QAAA,WAAW,CAAX,aAAA,IACC,gBAAA,IAAA,CAAqB,WAAW,CADjC,WACC,CADD,IAEC,CAAC,OAAO,GAAG,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAX,YAAA,MALJ,CAAA,EAME;AACA,iBAAA,SAAA;AACD;;AAED,QAAA,GAAG,CAAH,MAAA,GAAa;AACX,UAAA,IAAI,EADO,MAAA;AAEX,UAAA,IAAI,EAAE,WAAW,CAAX,QAAA,KAAA,OAAA,GAAmC,WAAW,CAA9C,SAAA,GAA2D,WAAW,CAAC;AAFlE,SAAb;AAKA,eAAA,KAAA;AACD;AA1BQ,KAHQ;AA+BnB,IAAA,SAAS,EA/BU,SAAA;AAgCnB,IAAA,UAAU,EAhCS,UAAA;AAiCnB,IAAA,IAAI,EAjCe,IAAA;AAkCnB,IAAA,QAAQ,EAAE;AACR,MAAA,SAAS,EADD,IAAA;AAER,MAAA,QAAQ,EAAE;AAFF,KAlCS;AAuCnB,IAAA,SAvCmB,EAAA,SAAA,SAAA,GAuCN;AACX,aAAA,MAAA;AACD;AAzCkB,GAArB;qBA4Ce,I;;;;;;;;;ACxLf,MAAM,UAYL,GAAG;AACF,IAAA,IAAI,EADF,SAAA;AAEF,IAAA,QAAQ,EAFN,IAAA;AAGF,IAAA,gBAAgB,EAHd,IAAA;AAIF,IAAA,UAAU,EAJR,IAAA;AAKF,IAAA,aAAa,EALX,IAAA;AAMF,IAAA,kBAAkB,EANhB,IAAA;AAOF,IAAA,OAAO,EAPL,IAAA;AAQF,IAAA,WAAW,EART,IAAA;AASF,IAAA,KAAK,EATH,IAAA;AAUF,IAAA,KAAK,EAVH,IAAA;AAWF,IAAA,YAAY,EAAE;AAXZ,GAZJ;;AA0BA,WAAA,KAAA,GAAkB,CAAE;;sBAEL,U;;;AAEf,WAAA,SAAA,CAAA,MAAA,EAA+B;AAC7B,QAAM,GAAG,GAAT,MAAA;AAEA,IAAA,UAAU,CAAV,QAAA,GAAsB,GAAG,CAAzB,QAAA;AACA,IAAA,UAAU,CAAV,gBAAA,GAA8B,GAAG,CAAH,gBAAA,IAA9B,KAAA;AACA,IAAA,UAAU,CAAV,UAAA,GAAwB,GAAG,CAAH,UAAA,IAAxB,KAAA;AACA,IAAA,UAAU,CAAV,aAAA,GAA2B,GAAG,CAAH,aAAA,IAA3B,KAAA;AACA,IAAA,UAAU,CAAV,kBAAA,GAAgC,GAAG,CAAH,kBAAA,IAAhC,KAAA;AACA,IAAA,UAAU,CAAV,OAAA,GAAqB,GAAG,CAAH,OAAA,IAArB,KAAA;AACA,IAAA,UAAU,CAAV,WAAA,GAAyB,GAAG,CAAH,WAAA,IAAmB,UAAU,CAAtD,OAAA;AAEA,IAAA,UAAU,CAAV,KAAA,GAAmB,GAAG,CAAtB,KAAA;AACA,IAAA,UAAU,CAAV,KAAA,GAAmB,GAAG,CAAH,KAAA,IAAnB,KAAA;AACA,IAAA,UAAU,CAAV,YAAA,GAA0B,GAAG,CAAH,YAAA,IAAoB,GAAG,CAAjD,cAAA;AACD;;;;;;;;;AC5CD;;AAAA;AACA;;AAAA;AAEA,MAAM,OAAO,GAAG;AACd,IAAA,IAAI,EADU,SAAA;AAEd,IAAA,aAAa,EAFC,IAAA;AAGd,IAAA,oBAAoB,EAHN,IAAA;AAId,IAAA,MAAM,EAJQ,IAAA;AAKd,IAAA,KAAK,EALS,IAAA;AAMd,IAAA,KAAK,EANS,IAAA;AAOd,IAAA,aAAa,EAPC,IAAA;AAQd,IAAA,uBAAuB,EART,IAAA;AASd,IAAA,WAAW,EATG,IAAA;AAiBd,IAAA,UAAU,EAAE;AAjBE,GAAhB;;AAoBA,WAAA,SAAA,CAAA,MAAA,EAA4B;AAC1B,QAAM,OAAO,GAAG,eAAA,CAAA,OAAA,CAAhB,OAAA;AACA,QAAM,SAA6B,GAAG,MAAM,CAAN,SAAA,IAFZ,EAE1B,CAF0B,CAAA;;AAK1B,IAAA,OAAO,CAAP,aAAA,GACE,kBAAA,MAAA,IACC,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,MAAM,CAAd,aAAA,KAAiC,eAAA,CAAA,OAAA,CAAA,QAAA,YAA+B,MAAM,CAP/C,aAK1B,CAL0B,CAAA;;AAU1B,IAAA,OAAO,CAAP,oBAAA,GAA+B,SAAS,CAAT,cAAA,KAAA,KAAA,IAAsC,CAAC,CAAC,eAAA,CAAA,OAAA,CAAvE,YAAA;AAEA,IAAA,OAAO,CAAP,KAAA,GAAgB,iBAAA,IAAA,CAAsB,SAAS,CAZrB,QAYV,CAAhB,CAZ0B,CAAA;;AAe1B,IAAA,OAAO,CAAP,MAAA,GAAiB,iBAAA,IAAA,CAAsB,SAAS,CAA/B,QAAA,KAA6C,YAAA,IAAA,CAAiB,SAAS,CAAxF,UAA8D,CAA9D;AAEA,IAAA,OAAO,CAAP,KAAA,GAAgB,SAAA,IAAA,CAAc,SAAS,CAjBb,SAiBV,CAAhB,CAjB0B,CAAA;;AAoB1B,IAAA,OAAO,CAAP,aAAA,GACE,SAAS,CAAT,OAAA,KAAA,OAAA,IAAiC,OAAO,CAAxC,aAAA,IAA0D,SAAA,IAAA,CAAc,SAAS,CArBzD,SAqBkC,CAD5D,CApB0B,CAAA;;AAwB1B,IAAA,OAAO,CAAP,uBAAA,GAAmC,aAAa,OAAO,CAApB,SAAA,GAAA,SAAA,GAE/B,2BAA2B,OAAO,CAAlC,SAAA,GAAA,uBAAA,GAEE,wBAAwB,OAAO,CAA/B,SAAA,GAAA,oBAAA,GAEE,sBAAsB,OAAO,CAA7B,SAAA,GAAA,kBAAA,GANR,mBAAA;AAUA,IAAA,OAAO,CAAP,WAAA,GAAsB,OAAO,CAAP,oBAAA,GAClB,eAAA,CAAA,OAAA,CAAA,YAAA,KAA4B,MAAM,CAAlC,cAAA,GACE;AACA,MAAA,EAAE,EADF,aAAA;AAEA,MAAA,IAAI,EAFJ,eAAA;AAGA,MAAA,IAAI,EAHJ,WAAA;AAIA,MAAA,GAAG,EAJH,UAAA;AAKA,MAAA,IAAI,EALJ,eAAA;AAMA,MAAA,MAAM,EAAE;AANR,KADF,GASE;AACA,MAAA,EAAE,EADF,WAAA;AAEA,MAAA,IAAI,EAFJ,aAAA;AAGA,MAAA,IAAI,EAHJ,aAAA;AAIA,MAAA,GAAG,EAJH,YAAA;AAKA,MAAA,IAAI,EALJ,aAAA;AAMA,MAAA,MAAM,EAAE;AANR,KAVgB,GAlCI,IAkC1B,CAlC0B,CAAA;;AAuD1B,IAAA,OAAO,CAAP,UAAA,GAAqB,eAAA,CAAA,OAAA,CAAA,QAAA,IAAuB,kBAAkB,eAAA,CAAA,OAAA,CAAzC,QAAA,GAAA,YAAA,GAArB,OAAA;AACD;;sBAEc,O;;;;;;;;;;;;;;;;;;;;AC/Ef;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;AAEO,WAAA,YAAA,CAAA,MAAA,EAAA,KAAA,EAAkD;AACvD,QAAI,MAAM,CAAV,QAAA,EAAqB;AACnB,aAAO,MAAM,CAAN,QAAA,CAAP,KAAO,CAAP;AACD;;AAED,WAAA,KAAA,EAAc;AACZ,UAAI,KAAK,KAAT,MAAA,EAAsB;AACpB,eAAA,IAAA;AACD;;AAED,MAAA,KAAK,GAAI,KAAD,CAAR,UAAA;AACD;;AAED,WAAA,KAAA;AACD;;AAEM,WAAA,OAAA,CAAA,OAAA,EAAA,QAAA,EAAmD;AACxD,WAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAP,OAAO,CAAP,EAA4B;AAC1B,UAAI,eAAe,CAAA,OAAA,EAAnB,QAAmB,CAAnB,EAAwC;AACtC,eAAA,OAAA;AACD;;AAED,MAAA,OAAO,GAAG,UAAU,CAApB,OAAoB,CAApB;AACD;;AAED,WAAA,IAAA;AACD;;AAEM,WAAA,UAAA,CAAA,IAAA,EAA4C;AACjD,QAAI,MAAM,GAAG,IAAI,CAAjB,UAAA;;AAEA,QAAI,OAAA,CAAA,OAAA,CAAA,OAAA,CAAJ,MAAI,CAAJ,EAAwB;;;AAGtB,aAAO,CAAC,MAAM,GAAI,MAAD,CAAV,IAAA,KAAmC,OAAA,CAAA,OAAA,CAAA,OAAA,CAA1C,MAA0C,CAA1C,EAA8D;AAC5D;AACD;;AAED,aAAA,MAAA;AACD;;AAED,WAAA,MAAA;AACD;;AAEM,WAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAA8D;;AAEnE,QAAI,WAAG,CAAH,MAAA,KAAe,WAAG,CAAtB,UAAA,EAAmC;AACjC,MAAA,QAAQ,GAAG,QAAQ,CAAR,OAAA,CAAA,WAAA,EAAX,GAAW,CAAX;AACD;;AAED,WAAO,OAAO,CAAC,YAAA,CAAA,OAAA,CAAR,uBAAO,CAAP,CAAP,QAAO,CAAP;AACD;;AAED,MAAM,SAAS,GAAG,SAAZ,SAAY,CAAA,EAAA,EAAA;AAAA,WAAsC,EAAE,CAAF,UAAA,IAAkB,EAAD,CAAvD,IAAA;AAAlB,GAAA,CP5DA,CO4DA;;;AAGO,WAAA,qBAAA,CAAA,QAAA,EAAsF;AAC3F,QAAI,kBAA0B,GAA9B,EAAA;AACA,QAAA,gBAAA;;AAEA,SAAK,IAAI,CAAC,GAAV,CAAA,EAAgB,CAAC,GAAG,QAAQ,CAA5B,MAAA,EAAqC,CAArC,EAAA,EAA0C;AACxC,UAAM,WAAW,GAAG,QAAQ,CAA5B,CAA4B,CAA5B;AACA,UAAM,WAAiB,GAAG,QAAQ,CAFM,gBAEN,CAAlC,CAFwC,CAAA;;AAKxC,UAAI,CAAA,WAAA,IAAgB,CAAC,KAArB,gBAAA,EAA4C;AAC1C;AACD;;AAED,UAAI,CAAJ,WAAA,EAAkB;AAChB,QAAA,gBAAgB,GAAhB,CAAA;AACA;AACD;;AAED,UAAM,iBAAiB,GAAG,SAAS,CAAnC,WAAmC,CAAnC;AACA,UAAM,iBAAiB,GAAG,SAAS,CAfK,WAeL,CAAnC,CAfwC,CAAA;;;AAmBxC,UAAI,iBAAiB,KAAK,WAAW,CAArC,aAAA,EAAqD;AACnD;AADF,OAAA,CAAA;AAAA,WAIK,IAAI,iBAAiB,KAAK,WAAW,CAArC,aAAA,EAAqD;AACxD,UAAA,gBAAgB,GAAhB,CAAA;AACA;AAzBsC,SAAA,CAAA;;;AA6BxC,UAAI,iBAAiB,KAArB,iBAAA,EAA6C;AAC3C,YAAI,kBAAkB,CAAA,WAAA,EAAtB,WAAsB,CAAtB,EAAkD;AAChD,UAAA,gBAAgB,GAAhB,CAAA;AACD;;AAED;AAlCsC,OAAA,CAAA;;;AAsCxC,MAAA,kBAAkB,GAAG,kBAAkB,CAAlB,MAAA,GAAA,kBAAA,GAAiD,cAAc,CAApF,WAAoF,CAApF;AAEA,UAAI,aAAmB,GAAA,KAxCiB,CAwCxC,CAxCwC,CAAA;;AA2CxC,UACE,WAAW,YAAY,eAAA,CAAA,OAAA,CAAvB,WAAA,IACA,WAAW,YAAY,eAAA,CAAA,OAAA,CADvB,UAAA,IAEA,EAAE,WAAW,YAAY,eAAA,CAAA,OAAA,CAH3B,aAGE,CAHF,EAIE;;AAEA,YAAI,WAAW,KAAf,iBAAA,EAAuC;AACrC;AACD;;AAED,QAAA,aAAa,GAAG,WAAW,CAA3B,eAAA;AAVF,OAAA,MAWO;AACL,QAAA,aAAa,GAAb,WAAA;AACD;;AAED,UAAM,kBAAkB,GAAG,cAAc,CAAA,aAAA,EAAgB,WAAW,CAApE,aAAyC,CAAzC;AACA,UAAI,WAAW,GA3DyB,CA2DxC,CA3DwC,CAAA;;AA8DxC,aACE,kBAAkB,CAAlB,WAAkB,CAAlB,IACA,kBAAkB,CAAlB,WAAkB,CAAlB,KAAoC,kBAAkB,CAFxD,WAEwD,CAFxD,EAGE;AACA,QAAA,WAAW;AACZ;;AAED,UAAM,OAAO,GAAG,CACd,kBAAkB,CAAC,WAAW,GADhB,CACI,CADJ,EAEd,kBAAkB,CAFJ,WAEI,CAFJ,EAGd,kBAAkB,CAHpB,WAGoB,CAHJ,CAAhB;;AAMA,UAAI,OAAO,CAAX,CAAW,CAAX,EAAgB;AACd,YAAI,KAAK,GAAG,OAAO,CAAP,CAAO,CAAP,CAAZ,SAAA;;AAEA,eAAA,KAAA,EAAc;AACZ,cAAI,KAAK,KAAK,OAAO,CAArB,CAAqB,CAArB,EAA0B;AACxB,YAAA,gBAAgB,GAAhB,CAAA;AACA,YAAA,kBAAkB,GAAlB,kBAAA;AAEA;AAJF,WAAA,MAKO,IAAI,KAAK,KAAK,OAAO,CAArB,CAAqB,CAArB,EAA0B;AAC/B;AACD;;AAED,UAAA,KAAK,GAAG,KAAK,CAAb,eAAA;AACD;AACF;AACF;;AAED,WAAA,gBAAA;AACD;;AAED,WAAA,cAAA,CAAA,IAAA,EAAA,KAAA,EAAmD;AACjD,QAAM,OAAe,GAArB,EAAA;AACA,QAAI,MAAY,GAAhB,IAAA;AACA,QAAA,YAAA;;AAEA,WAAO,CAAC,YAAY,GAAG,SAAS,CAAzB,MAAyB,CAAzB,KAAsC,MAAM,KAA5C,KAAA,IAA0D,YAAY,KAAK,MAAM,CAAxF,aAAA,EAAwG;AACtG,MAAA,OAAO,CAAP,OAAA,CAAA,MAAA;AACA,MAAA,MAAM,GAAN,YAAA;AACD;;AAED,WAAA,OAAA;AACD;;AAED,WAAA,kBAAA,CAAA,UAAA,EAAA,SAAA,EAAgE;AAC9D,QAAM,WAAW,GAAG,QAAQ,CAAC,WAAG,CAAH,SAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,UAAA,EAAD,MAAA,EAAR,EAAQ,CAAR,IAApB,CAAA;AACA,QAAM,UAAU,GAAG,QAAQ,CAAC,WAAG,CAAH,SAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,SAAA,EAAD,MAAA,EAAR,EAAQ,CAAR,IAAnB,CAAA;AAEA,WAAO,WAAW,IAAlB,UAAA;AACD;;AAEM,WAAA,WAAA,CAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAuE;AAC5E,WAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAP,OAAO,CAAP,EAA4B;AAC1B,UAAI,eAAe,CAAA,OAAA,EAAnB,QAAmB,CAAnB,EAAwC;AACtC,eAAA,IAAA;AACD;;AAED,MAAA,OAAO,GAAG,UAAU,CAApB,OAAoB,CAApB;;AAEA,UAAI,OAAO,KAAX,KAAA,EAAuB;AACrB,eAAO,eAAe,CAAA,OAAA,EAAtB,QAAsB,CAAtB;AACD;AACF;;AAED,WAAA,KAAA;AACD;;AAEM,WAAA,gBAAA,CAAA,OAAA,EAA6C;AAClD,WAAQ,OAAD,CAAA,uBAAC,IAAR,OAAA;AACD;;AAEM,WAAA,WAAA,CAAA,cAAA,EAA+C;AACpD,IAAA,cAAc,GAAG,cAAc,IAAI,WAAG,CAAtC,MAAA;AACA,WAAO;AACL,MAAA,CAAC,EAAE,cAAc,CAAd,OAAA,IAA0B,cAAc,CAAd,QAAA,CAAA,eAAA,CADxB,UAAA;AAEL,MAAA,CAAC,EAAE,cAAc,CAAd,OAAA,IAA0B,cAAc,CAAd,QAAA,CAAA,eAAA,CAAwC;AAFhE,KAAP;AAID;;AAEM,WAAA,oBAAA,CAAA,OAAA,EAAiE;AACtE,QAAM,UAAU,GACd,OAAO,YAAY,eAAA,CAAA,OAAA,CAAnB,UAAA,GAA2C,OAAO,CAAlD,qBAA2C,EAA3C,GAA6E,OAAO,CAAP,cAAA,GAD/E,CAC+E,CAD/E;AAGA,WACE,UAAU,IAAI;AACZ,MAAA,IAAI,EAAE,UAAU,CADJ,IAAA;AAEZ,MAAA,KAAK,EAAE,UAAU,CAFL,KAAA;AAGZ,MAAA,GAAG,EAAE,UAAU,CAHH,GAAA;AAIZ,MAAA,MAAM,EAAE,UAAU,CAJN,MAAA;AAKZ,MAAA,KAAK,EAAE,UAAU,CAAV,KAAA,IAAoB,UAAU,CAAV,KAAA,GAAmB,UAAU,CAL5C,IAAA;AAMZ,MAAA,MAAM,EAAE,UAAU,CAAV,MAAA,IAAqB,UAAU,CAAV,MAAA,GAAoB,UAAU,CAAC;AANhD,KADhB;AAUD;;AAEM,WAAA,cAAA,CAAA,OAAA,EAA2C;AAChD,QAAM,UAAU,GAAG,oBAAoB,CAAvC,OAAuC,CAAvC;;AAEA,QAAI,CAAC,YAAA,CAAA,OAAA,CAAD,MAAA,IAAJ,UAAA,EAAmC;AACjC,UAAM,MAAM,GAAG,WAAW,CAAC,WAAG,CAAH,SAAA,CAA3B,OAA2B,CAAD,CAA1B;AAEA,MAAA,UAAU,CAAV,IAAA,IAAmB,MAAM,CAAzB,CAAA;AACA,MAAA,UAAU,CAAV,KAAA,IAAoB,MAAM,CAA1B,CAAA;AACA,MAAA,UAAU,CAAV,GAAA,IAAkB,MAAM,CAAxB,CAAA;AACA,MAAA,UAAU,CAAV,MAAA,IAAqB,MAAM,CAA3B,CAAA;AACD;;AAED,WAAA,UAAA;AACD;;AAEM,WAAA,OAAA,CAAA,IAAA,EAAyC;AAC9C,QAAM,IAAI,GAAV,EAAA;;AAEA,WAAA,IAAA,EAAa;AACX,MAAA,IAAI,CAAJ,IAAA,CAAA,IAAA;AACA,MAAA,IAAI,GAAG,UAAU,CAAjB,IAAiB,CAAjB;AACD;;AAED,WAAA,IAAA;AACD;;AAEM,WAAA,WAAA,CAAA,KAAA,EAAqC;AAC1C,QAAI,CAAC,OAAA,CAAA,OAAA,CAAA,MAAA,CAAL,KAAK,CAAL,EAAuB;AACrB,aAAA,KAAA;AAFwC,KAAA,CAAA;;;AAM1C,IAAA,eAAA,CAAA,OAAA,CAAA,QAAA,CAAA,aAAA,CAAA,KAAA;;AACA,WAAA,IAAA;AACD;;;;;;;;;;ACrQc,WAAA,MAAA,CAAA,IAAA,EAAA,MAAA,EAA8E;AAC3F,SAAK,IAAL,IAAA,IAAA,MAAA,EAA2B;AACzB;AAAG,MAAA,IAAF,CAAA,IAAA,CAAE,GAA+B,MAAM,CAAvC,IAAuC,CAArC;AACJ;;AAED,QAAM,GAAG,GAAT,IAAA;AAEA,WAAA,GAAA;AACD;;;;;;;;;;;;;;ACED;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,WAAA,qBAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAA+E;AACpF,QAAI,KAAK,KAAT,QAAA,EAAwB;AACtB,aAAO,CAAA,GAAA,aAAA,CAAA,UAAA,EAAP,OAAO,CAAP;AACD;;AAED,QAAI,KAAK,KAAT,MAAA,EAAsB;AACpB,aAAO,MAAM,CAAN,OAAA,CAAP,OAAO,CAAP;AACD;;AAED,WAAO,CAAA,GAAA,aAAA,CAAA,OAAA,EAAA,OAAA,EAAP,KAAO,CAAP;AACD;;AAEM,WAAA,eAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAKL;AACA,QAAI,WAAgB,GAApB,KAAA;;AACA,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,WAAI,CAAJ,EAA4B;AAC1B,MAAA,WAAW,GAAG,qBAAqB,CAAA,WAAA,EAAA,MAAA,EAAnC,OAAmC,CAAnC;AADF,KAAA,MAEO,IAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,WAAI,CAAJ,EAA0B;AAC/B,MAAA,WAAW,GAAG,WAAW,CAAX,KAAA,CAAA,KAAA,CAAA,EAAA,kBAAA,CAAd,YAAc,CAAA,CAAd;AACD;;AAED,QAAI,OAAA,CAAA,OAAA,CAAA,OAAA,CAAJ,WAAI,CAAJ,EAA6B;AAC3B,MAAA,WAAW,GAAG,CAAA,GAAA,aAAA,CAAA,cAAA,EAAd,WAAc,CAAd;AACD;;AAED,WAAA,WAAA;AACD;;AAEM,WAAA,QAAA,CAAA,IAAA,EAAuC;AAC5C,WACE,IAAI,IAAI;AACN,MAAA,CAAC,EAAE,OAAA,IAAA,GAAc,IAAI,CAAlB,CAAA,GAAuB,IAAI,CADxB,IAAA;AAEN,MAAA,CAAC,EAAE,OAAA,IAAA,GAAc,IAAI,CAAlB,CAAA,GAAuB,IAAI,CAAC;AAFzB,KADV;AAMD;;AAEM,WAAA,UAAA,CAAA,IAAA,EAA+D;AACpE,QAAI,IAAI,IAAI,EAAE,UAAA,IAAA,IAAkB,SAAhC,IAAY,CAAZ,EAAgD;AAC9C,MAAA,IAAI,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAP,IAAO,CAAP;AAEA,MAAA,IAAI,CAAJ,IAAA,GAAY,IAAI,CAAJ,CAAA,IAAZ,CAAA;AACA,MAAA,IAAI,CAAJ,GAAA,GAAW,IAAI,CAAJ,CAAA,IAAX,CAAA;AACA,MAAA,IAAI,CAAJ,KAAA,GAAa,IAAI,CAAJ,KAAA,IAAc,IAAI,CAAJ,IAAA,GAAY,IAAI,CAA3C,KAAA;AACA,MAAA,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAJ,MAAA,IAAe,IAAI,CAAJ,GAAA,GAAW,IAAI,CAA5C,MAAA;AACD;;AAED,WAAA,IAAA;AACD;;AAEM,WAAA,UAAA,CAAA,IAAA,EAAkD;AACvD,QAAI,IAAI,IAAI,EAAE,OAAA,IAAA,IAAe,OAA7B,IAAY,CAAZ,EAA2C;AACzC,MAAA,IAAI,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAP,IAAO,CAAP;AAEA,MAAA,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAJ,IAAA,IAAT,CAAA;AACA,MAAA,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAJ,GAAA,IAAT,CAAA;AACA,MAAA,IAAI,CAAJ,KAAA,GAAa,IAAI,CAAJ,KAAA,IAAc,CAAC,IAAI,CAAJ,KAAA,IAAD,CAAA,IAAoB,IAAI,CAAnD,CAAA;AACA,MAAA,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAJ,MAAA,IAAe,CAAC,IAAI,CAAJ,MAAA,IAAD,CAAA,IAAqB,IAAI,CAAtD,CAAA;AACD;;AAED,WAAA,IAAA;AACD;;AAEM,WAAA,QAAA,CAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAiE;AACtE,QAAI,KAAK,CAAT,IAAA,EAAgB;AACd,MAAA,IAAI,CAAJ,IAAA,IAAa,KAAK,CAAlB,CAAA;AACD;;AACD,QAAI,KAAK,CAAT,KAAA,EAAiB;AACf,MAAA,IAAI,CAAJ,KAAA,IAAc,KAAK,CAAnB,CAAA;AACD;;AACD,QAAI,KAAK,CAAT,GAAA,EAAe;AACb,MAAA,IAAI,CAAJ,GAAA,IAAY,KAAK,CAAjB,CAAA;AACD;;AACD,QAAI,KAAK,CAAT,MAAA,EAAkB;AAChB,MAAA,IAAI,CAAJ,MAAA,IAAe,KAAK,CAApB,CAAA;AACD;;AAED,IAAA,IAAI,CAAJ,KAAA,GAAa,IAAI,CAAJ,KAAA,GAAa,IAAI,CAA9B,IAAA;AACA,IAAA,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAhC,GAAA;AACD;;;;;;;;;AC7FD;;AAAA;;AAEe,WAAA,aAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAIb;AACA,QAAM,aAAa,GAAI,MAAM,CAAP,OAAC,CAAvB,UAAuB,CAAvB;AACA,QAAM,YAAY,GAAG,aAAa,IAAI,aAAa,CAAnD,MAAA;AACA,QAAM,MAAM,GAAG,YAAY,IAAI,MAAM,CAAN,OAAA,CAA/B,MAAA;AAEA,QAAM,UAAU,GAAG,CAAA,GAAA,SAAA,CAAA,eAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAyC,CAAC,MAAM,IAAnE,OAA4D,CAAzC,CAAnB;AAEA,WAAO,CAAA,GAAA,SAAA,CAAA,QAAA,EAAA,UAAA,KAAwB;AAAE,MAAA,CAAC,EAAH,CAAA;AAAQ,MAAA,CAAC,EAAE;AAAX,KAA/B;AACD;;;;;;;;;AChBD;;AAAA;AACA;;AAAA;;AAMe,WAAA,SAAA,CAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAIQ;AACrB,IAAA,MAAM,GAAG,MAAM,IAAf,EAAA;;AAEA,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,KAAmB,IAAI,CAAJ,MAAA,CAAA,GAAA,MAAqB,CAA5C,CAAA,EAAgD;AAC9C,MAAA,IAAI,GAAG,KAAK,CAAZ,IAAY,CAAZ;AACD;;AAED,QAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAJ,IAAI,CAAJ,EAAoB;AAClB,aAAO,IAAI,CAAJ,MAAA,CAAiC,UAAA,GAAA,EAAA,CAAA,EAAA;AAAA,eAAY,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,GAAA,EAAY,SAAS,CAAA,CAAA,EAAA,SAAA,EAAjC,MAAiC,CAArB,CAAZ;AAAjC,OAAA,EAAP,MAAO,CAAP;AARmB,KAAA,CAAA;;;AAYrB,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,IAAI,CAAJ,EAAqB;AACnB,MAAA,SAAS,GAAT,IAAA;AACA,MAAA,IAAI,GAAJ,EAAA;AACD;;AAED,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,SAAI,CAAJ,EAAwB;AACtB,MAAA,MAAM,CAAN,IAAM,CAAN,GAAe,MAAM,CAAN,IAAM,CAAN,IAAf,EAAA;AACA,MAAA,MAAM,CAAN,IAAM,CAAN,CAAA,IAAA,CAAA,SAAA;AAFF,KAAA,MAGO,IAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAJ,SAAI,CAAJ,EAAyB;AAC9B,WAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAgB,SAAhB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2B;AAAA,YAAA,IAAA;;AAAA,QAAA,IAAA,GAAX,SAAW,CAAA,EAAA,CAAA;AAAA,YAAhB,CAAgB,GAAA,IAAA;AACzB,QAAA,SAAS,CAAA,IAAA,EAAA,CAAA,EAAT,MAAS,CAAT;AACD;AAHI,KAAA,MAIA,IAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,SAAI,CAAJ,EAA0B;AAC/B,WAAK,IAAL,MAAA,IAAA,SAAA,EAAgC;AAC9B,YAAM,aAAa,GAAG,KAAK,CAAL,MAAK,CAAL,CAAA,GAAA,CAAkB,UAAA,CAAA,EAAA;AAAA,iBAAA,GAAA,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA;AAAxC,SAAsB,CAAtB;AAEA,QAAA,SAAS,CAAA,aAAA,EAAgB,SAAS,CAAzB,MAAyB,CAAzB,EAAT,MAAS,CAAT;AACD;AACF;;AAED,WAAA,MAAA;AACD;;AAED,WAAA,KAAA,CAAA,IAAA,EAA8B;AAC5B,WAAO,IAAI,CAAJ,IAAA,GAAA,KAAA,CAAP,IAAO,CAAP;AACD;;;;;;;;;;sBClDc,SAAA,QAAA,CAAA,CAAA,EAAA,CAAA,EAAA;AAAA,WAA0B,IAAI,CAAJ,IAAA,CAAU,CAAC,GAAD,CAAA,GAAQ,CAAC,GAA7C,CAA0B,CAA1B;;;;;;;;;;;;ACAf,WAAA,aAAA,CAAA,IAAA,EAAA,MAAA,EAAwD;AACtD,SAAK,IAAL,IAAA,IAAA,MAAA,EAA2B;AACzB,UAAM,eAAe,GAAG,aAAa,CAArC,eAAA;AACA,UAAI,UAAU,GAFW,KAEzB,CAFyB,CAAA;;AAKzB,WAAK,IAAL,MAAA,IAAA,eAAA,EAAsC;AACpC,YAAI,IAAI,CAAJ,OAAA,CAAA,MAAA,MAAA,CAAA,IAA8B,eAAe,CAAf,MAAe,CAAf,CAAA,IAAA,CAAlC,IAAkC,CAAlC,EAAsE;AACpE,UAAA,UAAU,GAAV,IAAA;AACA;AACD;AACF;;AAED,UAAI,CAAA,UAAA,IAAe,OAAO,MAAM,CAAb,IAAa,CAAb,KAAnB,UAAA,EAAuD;AACrD,QAAA,IAAI,CAAJ,IAAI,CAAJ,GAAa,MAAM,CAAnB,IAAmB,CAAnB;AACD;AACF;;AACD,WAAA,IAAA;AACD;;AAED,EAAA,aAAa,CAAb,eAAA,GAAgC;AAC9B,IAAA,MAAM,EADwB,gDAAA;AAE9B,IAAA,GAAG,EAAE;AAFyB,GAAhC;sBAKe,a;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBf;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;AAEO,WAAA,UAAA,CAAA,IAAA,EAAA,GAAA,EAAkE;AACvE,IAAA,IAAI,CAAJ,IAAA,GAAY,IAAI,CAAJ,IAAA,IAAZ,EAAA;AACA,IAAA,IAAI,CAAJ,IAAA,CAAA,CAAA,GAAc,GAAG,CAAH,IAAA,CAAd,CAAA;AACA,IAAA,IAAI,CAAJ,IAAA,CAAA,CAAA,GAAc,GAAG,CAAH,IAAA,CAAd,CAAA;AAEA,IAAA,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAJ,MAAA,IAAd,EAAA;AACA,IAAA,IAAI,CAAJ,MAAA,CAAA,CAAA,GAAgB,GAAG,CAAH,MAAA,CAAhB,CAAA;AACA,IAAA,IAAI,CAAJ,MAAA,CAAA,CAAA,GAAgB,GAAG,CAAH,MAAA,CAAhB,CAAA;AAEA,IAAA,IAAI,CAAJ,SAAA,GAAiB,GAAG,CAApB,SAAA;AACD;;AAEM,WAAA,cAAA,CAAA,SAAA,EAAA,IAAA,EAAA,GAAA,EAAkG;AACvG,IAAA,SAAS,CAAT,IAAA,CAAA,CAAA,GAAmB,GAAG,CAAH,IAAA,CAAA,CAAA,GAAa,IAAI,CAAJ,IAAA,CAAhC,CAAA;AACA,IAAA,SAAS,CAAT,IAAA,CAAA,CAAA,GAAmB,GAAG,CAAH,IAAA,CAAA,CAAA,GAAa,IAAI,CAAJ,IAAA,CAAhC,CAAA;AACA,IAAA,SAAS,CAAT,MAAA,CAAA,CAAA,GAAqB,GAAG,CAAH,MAAA,CAAA,CAAA,GAAe,IAAI,CAAJ,MAAA,CAApC,CAAA;AACA,IAAA,SAAS,CAAT,MAAA,CAAA,CAAA,GAAqB,GAAG,CAAH,MAAA,CAAA,CAAA,GAAe,IAAI,CAAJ,MAAA,CAApC,CAAA;AACA,IAAA,SAAS,CAAT,SAAA,GAAsB,GAAG,CAAH,SAAA,GAAgB,IAAI,CAA1C,SAAA;AACD;;AAEM,WAAA,gBAAA,CAAA,SAAA,EAAA,KAAA,EAA+E;AACpF,QAAM,EAAE,GAAG,IAAI,CAAJ,GAAA,CAAS,KAAK,CAAL,SAAA,GAAT,IAAA,EAAX,KAAW,CAAX;AAEA,IAAA,SAAS,CAAT,IAAA,CAAA,CAAA,GAAmB,KAAK,CAAL,IAAA,CAAA,CAAA,GAAnB,EAAA;AACA,IAAA,SAAS,CAAT,IAAA,CAAA,CAAA,GAAmB,KAAK,CAAL,IAAA,CAAA,CAAA,GAAnB,EAAA;AACA,IAAA,SAAS,CAAT,MAAA,CAAA,CAAA,GAAqB,KAAK,CAAL,MAAA,CAAA,CAAA,GAArB,EAAA;AACA,IAAA,SAAS,CAAT,MAAA,CAAA,CAAA,GAAqB,KAAK,CAAL,MAAA,CAAA,CAAA,GAArB,EAAA;AACA,IAAA,SAAS,CAAT,SAAA,GAAA,EAAA;AACD;;AAEM,WAAA,aAAA,CAAA,SAAA,EAAoD;AACzD,IAAA,SAAS,CAAT,IAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,SAAS,CAAT,IAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,SAAS,CAAT,MAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,SAAS,CAAT,MAAA,CAAA,CAAA,GAAA,CAAA;AACD;;AAEM,WAAA,eAAA,CAAA,OAAA,EAAwC;AAC7C,WAAO,OAAO,YAAY,eAAA,CAAA,OAAA,CAAnB,KAAA,IAAgC,OAAO,YAAY,eAAA,CAAA,OAAA,CAA1D,KAAA;GdhDF,C;;;AcoDO,WAAA,KAAA,CAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAA+E;AACpF,IAAA,EAAE,GAAG,EAAE,IAAP,EAAA;AACA,IAAA,IAAI,GAAG,IAAI,IAAX,MAAA;AAEA,IAAA,EAAE,CAAF,CAAA,GAAO,OAAO,CAAE,IAAI,GAApB,GAAc,CAAd;AACA,IAAA,EAAE,CAAF,CAAA,GAAO,OAAO,CAAE,IAAI,GAApB,GAAc,CAAd;AAEA,WAAA,EAAA;AACD;;AAEM,WAAA,SAAA,CAAA,OAAA,EAAA,IAAA,EAAwE;AAC7E,IAAA,IAAI,GAAG,IAAI,IAAI;AAAE,MAAA,CAAC,EAAH,CAAA;AAAQ,MAAA,CAAC,EAAE;AAAX,KAAf,CAD6E,CAAA;;AAI7E,QAAI,YAAA,CAAA,OAAA,CAAA,aAAA,IAAyB,eAAe,CAA5C,OAA4C,CAA5C,EAAuD;AACrD,MAAA,KAAK,CAAA,QAAA,EAAA,OAAA,EAAL,IAAK,CAAL;AAEA,MAAA,IAAI,CAAJ,CAAA,IAAU,MAAM,CAAhB,OAAA;AACA,MAAA,IAAI,CAAJ,CAAA,IAAU,MAAM,CAAhB,OAAA;AAJF,KAAA,MAKO;AACL,MAAA,KAAK,CAAA,MAAA,EAAA,OAAA,EAAL,IAAK,CAAL;AACD;;AAED,WAAA,IAAA;AACD;;AAEM,WAAA,WAAA,CAAA,OAAA,EAAA,MAAA,EAA2D;AAChE,IAAA,MAAM,GAAG,MAAM,IAAf,EAAA;;AAEA,QAAI,YAAA,CAAA,OAAA,CAAA,aAAA,IAAyB,eAAe,CAA5C,OAA4C,CAA5C,EAAuD;;AAErD,MAAA,KAAK,CAAA,QAAA,EAAA,OAAA,EAAL,MAAK,CAAL;AAFF,KAAA,MAGO;AACL,MAAA,KAAK,CAAA,QAAA,EAAA,OAAA,EAAL,MAAK,CAAL;AACD;;AAED,WAAA,MAAA;AACD;;AAEM,WAAA,YAAA,CAAA,OAAA,EAA4F;AACjG,WAAO,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,OAAO,CAAjB,SAAA,IAA+B,OAAO,CAAtC,SAAA,GAAoD,OAAO,CAAlE,UAAA;AACD;;AAEM,WAAA,SAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAA+E;AACpF,QAAM,OAAO,GAAG,QAAQ,CAAR,MAAA,GAAA,CAAA,GAAsB,cAAc,CAApC,QAAoC,CAApC,GAAiD,QAAQ,CAAzE,CAAyE,CAAzE;AAEA,IAAA,SAAS,CAAA,OAAA,EAAU,IAAI,CAAvB,IAAS,CAAT;AACA,IAAA,WAAW,CAAA,OAAA,EAAU,IAAI,CAAzB,MAAW,CAAX;AAEA,IAAA,IAAI,CAAJ,SAAA,GAAA,SAAA;AACD;;AAEM,WAAA,YAAA,CAAA,KAAA,EAA0D;AAC/D,QAAM,OAAsB,GADmC,EAC/D,CAD+D,CAAA;;AAI/D,QAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAJ,KAAI,CAAJ,EAAqB;AACnB,MAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAlB,CAAkB,CAAlB;AACA,MAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAlB,CAAkB,CAAlB;AAFF,KAAA,CAAA;AAAA,SAKK;AACH,YAAI,KAAK,CAAL,IAAA,KAAJ,UAAA,EAA+B;AAC7B,cAAI,KAAK,CAAL,OAAA,CAAA,MAAA,KAAJ,CAAA,EAAgC;AAC9B,YAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAL,OAAA,CAAb,CAAa,CAAb;AACA,YAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAL,cAAA,CAAb,CAAa,CAAb;AAFF,WAAA,MAGO,IAAI,KAAK,CAAL,OAAA,CAAA,MAAA,KAAJ,CAAA,EAAgC;AACrC,YAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAL,cAAA,CAAb,CAAa,CAAb;AACA,YAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAL,cAAA,CAAb,CAAa,CAAb;AACD;AAPH,SAAA,MAQO;AACL,UAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAL,OAAA,CAAb,CAAa,CAAb;AACA,UAAA,OAAO,CAAP,CAAO,CAAP,GAAa,KAAK,CAAL,OAAA,CAAb,CAAa,CAAb;AACD;AACF;;AAED,WAAA,OAAA;AACD;;AAEM,WAAA,cAAA,CAAA,QAAA,EAAkD;AACvD,QAAM,OAAO,GAAG;AACd,MAAA,KAAK,EADS,CAAA;AAEd,MAAA,KAAK,EAFS,CAAA;AAGd,MAAA,OAAO,EAHO,CAAA;AAId,MAAA,OAAO,EAJO,CAAA;AAKd,MAAA,OAAO,EALO,CAAA;AAMd,MAAA,OAAO,EAAE;AANK,KAAhB;;AAWA,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAsB,QAAtB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAgC;AAAA,UAAA,IAAA;;AAAA,MAAA,IAAA,GAAV,QAAU,CAAA,EAAA,CAAA;AAAA,UAArB,OAAqB,GAAA,IAAA;;AAC9B,WAAK,IAAL,KAAA,IAAA,OAAA,EAA4B;AAC1B,QAAA,OAAO,CAAP,KAAO,CAAP,IAA8B,OAAO,CAArC,KAAqC,CAArC;AACD;AACF;;AACD,SAAK,IAAL,IAAA,IAAA,OAAA,EAA4B;AAC1B,MAAA,OAAO,CAAP,IAAO,CAAP,IAA8B,QAAQ,CAAtC,MAAA;AACD;;AAED,WAAA,OAAA;AACD;;AAEM,WAAA,SAAA,CAAA,KAAA,EAA0C;AAC/C,QAAI,CAAC,KAAK,CAAV,MAAA,EAAmB;AACjB,aAAA,IAAA;AACD;;AAED,QAAM,OAAO,GAAG,YAAY,CAA5B,KAA4B,CAA5B;AACA,QAAM,IAAI,GAAG,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAP,CAAO,CAAP,CAAT,KAAA,EAA2B,OAAO,CAAP,CAAO,CAAP,CAAxC,KAAa,CAAb;AACA,QAAM,IAAI,GAAG,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAP,CAAO,CAAP,CAAT,KAAA,EAA2B,OAAO,CAAP,CAAO,CAAP,CAAxC,KAAa,CAAb;AACA,QAAM,IAAI,GAAG,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAP,CAAO,CAAP,CAAT,KAAA,EAA2B,OAAO,CAAP,CAAO,CAAP,CAAxC,KAAa,CAAb;AACA,QAAM,IAAI,GAAG,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAP,CAAO,CAAP,CAAT,KAAA,EAA2B,OAAO,CAAP,CAAO,CAAP,CAAxC,KAAa,CAAb;AAEA,WAAO;AACL,MAAA,CAAC,EADI,IAAA;AAEL,MAAA,CAAC,EAFI,IAAA;AAGL,MAAA,IAAI,EAHC,IAAA;AAIL,MAAA,GAAG,EAJE,IAAA;AAKL,MAAA,KAAK,EALA,IAAA;AAML,MAAA,MAAM,EAND,IAAA;AAOL,MAAA,KAAK,EAAE,IAAI,GAPN,IAAA;AAQL,MAAA,MAAM,EAAE,IAAI,GAAG;AARV,KAAP;AAUD;;AAEM,WAAA,aAAA,CAAA,KAAA,EAAA,WAAA,EAAgF;AACrF,QAAM,OAAO,GAAI,WAAW,GAA5B,GAAA;AACA,QAAM,OAAO,GAAI,WAAW,GAA5B,GAAA;AACA,QAAM,OAAO,GAAG,YAAY,CAA5B,KAA4B,CAA5B;AAEA,QAAM,EAAE,GAAG,OAAO,CAAP,CAAO,CAAP,CAAA,OAAA,IAAsB,OAAO,CAAP,CAAO,CAAP,CAAjC,OAAiC,CAAjC;AACA,QAAM,EAAE,GAAG,OAAO,CAAP,CAAO,CAAP,CAAA,OAAA,IAAsB,OAAO,CAAP,CAAO,CAAP,CAAjC,OAAiC,CAAjC;AAEA,WAAO,CAAA,GAAA,UAAA,CAAA,OAAA,EAAA,EAAA,EAAP,EAAO,CAAP;AACD;;AAEM,WAAA,UAAA,CAAA,KAAA,EAAA,WAAA,EAA6E;AAClF,QAAM,OAAO,GAAI,WAAW,GAA5B,GAAA;AACA,QAAM,OAAO,GAAI,WAAW,GAA5B,GAAA;AACA,QAAM,OAAO,GAAG,YAAY,CAA5B,KAA4B,CAA5B;AACA,QAAM,EAAE,GAAG,OAAO,CAAP,CAAO,CAAP,CAAA,OAAA,IAAsB,OAAO,CAAP,CAAO,CAAP,CAAjC,OAAiC,CAAjC;AACA,QAAM,EAAE,GAAG,OAAO,CAAP,CAAO,CAAP,CAAA,OAAA,IAAsB,OAAO,CAAP,CAAO,CAAP,CAAjC,OAAiC,CAAjC;AACA,QAAM,KAAK,GAAI,MAAM,IAAI,CAAJ,KAAA,CAAA,EAAA,EAAP,EAAO,CAAN,GAA4B,IAAI,CAA/C,EAAA;AAEA,WAAA,KAAA;AACD;;AAEM,WAAA,cAAA,CAAA,OAAA,EAAgG;AACrG,WAAO,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,OAAO,CAAjB,WAAA,IACH,OAAO,CADJ,WAAA,GAEH,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,OAAO,CAAjB,WAAA,IACE,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAgD,OAAO,CADzD,WACE,CADF,GAAA;;AAIA,YAAA,IAAA,CAAa,OAAO,CAAP,IAAA,IAAb,EAAA,KAAoC,OAAO,YAAY,eAAA,CAAA,OAAA,CAAvD,KAAA,GAAA,OAAA,GANJ,OAAA;GdzMF,C;;;AcqNO,WAAA,eAAA,CAAA,KAAA,EAAwC;AAC7C,QAAM,IAAI,GAAG,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,KAAK,CAAb,YAAA,IACR,KAAK,CADG,YACR,EADQ,GAEP,KAAF,CAFJ,IAAA;AAIA,WAAO,CACL,aAAQ,CAAR,gBAAA,CAA0B,IAAI,GAAG,IAAI,CAAP,CAAO,CAAP,GAAc,KAAK,CAD5C,MACL,CADK,EAEL,aAAQ,CAAR,gBAAA,CAA0B,KAAK,CAFjC,aAEE,CAFK,CAAP;AAID;;AAEM,WAAA,SAAA,GAAuC;AAC5C,WAAO;AACL,MAAA,IAAI,EAAE;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX,OADD;AAEL,MAAA,MAAM,EAAE;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX,OAFH;AAGL,MAAA,SAAS,EAAE;AAHN,KAAP;AAKD;;AAEM,WAAA,aAAA,CAAA,MAAA,EAA4C;AACjD,QAAM,KAAK,GAAG;AACZ,MAAA,MAAM,EADM,MAAA;;AAEZ,UAAA,IAAA,GAAY;AACV,eAAO,KAAA,MAAA,CAAP,IAAA;AAHU,OAAA;;AAKZ,UAAA,MAAA,GAAc;AACZ,eAAO,KAAA,MAAA,CAAP,MAAA;AANU,OAAA;;AAQZ,UAAA,SAAA,GAAiB;AACf,eAAO,KAAA,MAAA,CAAP,SAAA;AATU,OAAA;;AAWZ,UAAA,KAAA,GAAa;AACX,eAAO,KAAA,MAAA,CAAA,IAAA,CAAP,CAAA;AAZU,OAAA;;AAcZ,UAAA,KAAA,GAAa;AACX,eAAO,KAAA,MAAA,CAAA,IAAA,CAAP,CAAA;AAfU,OAAA;;AAiBZ,UAAA,OAAA,GAAe;AACb,eAAO,KAAA,MAAA,CAAA,MAAA,CAAP,CAAA;AAlBU,OAAA;;AAoBZ,UAAA,OAAA,GAAe;AACb,eAAO,KAAA,MAAA,CAAA,MAAA,CAAP,CAAA;AArBU,OAAA;;AAuBZ,UAAA,SAAA,GAAiB;AACf,eAAO,KAAA,MAAA,CAAP,SAAA;AAxBU,OAAA;;AA0BZ,UAAA,MAAA,GAAc;AACZ,eAAO,KAAA,MAAA,CAAP,MAAA;AA3BU,OAAA;;AA6BZ,UAAA,IAAA,GAAY;AACV,eAAO,KAAA,MAAA,CAAP,IAAA;AA9BU,OAAA;;AAgCZ,UAAA,WAAA,GAAmB;AACjB,eAAO,KAAA,MAAA,CAAP,WAAA;AAjCU,OAAA;;AAmCZ,UAAA,OAAA,GAAe;AACb,eAAO,KAAA,MAAA,CAAP,OAAA;AApCU,OAAA;;AAsCZ,MAAA,cAtCY,EAAA,SAAA,cAAA,GAsCM,CAAE;AAtCR,KAAd;AAyCA,WAAA,KAAA;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC/QY,SAAA,GAAA,aAAA,YAAA;AAUX,aAAA,SAAA,CAAA,WAAA,EAA0C;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,6BAAA,EAHZ,KAGY,CAAA;;AAAA,MAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAFrB,KAEqB,CAAA;;AACxC,WAAA,YAAA,GAAA,WAAA;AACD;;;;aAED,SAAA,cAAA,GAAkB,CAAE;;;;;;;aAKpB,SAAA,eAAA,GAAmB;AACjB,aAAA,kBAAA,GAAA,IAAA;AACD;;;;;;;aAKD,SAAA,wBAAA,GAA4B;AAC1B,aAAA,2BAAA,GAAmC,KAAA,kBAAA,GAAnC,IAAA;AACD;;;;GA5BU,E,CfJb,C;;;;uCAAA,C;;;Ae2CA,EAAA,MAAM,CAAN,cAAA,CAAsB,SAAS,CAA/B,SAAA,EAAA,aAAA,EAA0D;AACxD,IAAA,GADwD,EAAA,SAAA,GAAA,GAClC;AACpB,aAAO,KAAA,YAAA,CAAP,MAAA;AAFsD,KAAA;AAIxD,IAAA,GAJwD,EAAA,SAAA,GAAA,GAIlC,CAAE;AAJgC,GAA1D;;;;;;;;;ACzCO,MAAM,QAAQ,GAAG,SAAX,QAAW,CAAA,KAAA,EAAA,MAAA,EAAA;AAAA,WAA8B,KAAK,CAAL,OAAA,CAAA,MAAA,MAA0B,CAAxD,CAAA;AAAjB,GAAA;;;;AAEA,MAAM,MAAM,GAAG,SAAT,MAAS,CAAA,KAAA,EAAA,MAAA,EAAA;AAAA,WAA8B,KAAK,CAAL,MAAA,CAAa,KAAK,CAAL,OAAA,CAAb,MAAa,CAAb,EAA9B,CAA8B,CAA9B;AAAf,GAAA;;;;AAEA,MAAM,KAAK,GAAG,SAAR,KAAQ,CAAA,MAAA,EAAA,MAAA,EAA6C;AAChE,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAmB,MAAnB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2B;AAAA,UAAA,IAAA;;AAAA,MAAA,IAAA,GAAR,MAAQ,CAAA,EAAA,CAAA;AAAA,UAAhB,IAAgB,GAAA,IAAA;AACzB,MAAA,MAAM,CAAN,IAAA,CAAA,IAAA;AACD;;AAED,WAAA,MAAA;AALK,GAAA;;;;AAQA,MAAM,IAAI,GAAG,SAAP,IAAO,CAAA,MAAA,EAAA;AAAA,WAAmC,KAAK,CAAA,EAAA,EAAxC,MAAwC,CAAxC;AAAb,GAAA;;;;AAEA,MAAM,SAAS,GAAG,SAAZ,SAAY,CAAA,KAAA,EAAA,IAAA,EAAoC;AAC3D,SAAK,IAAI,CAAC,GAAV,CAAA,EAAgB,CAAC,GAAG,KAAK,CAAzB,MAAA,EAAkC,CAAlC,EAAA,EAAuC;AACrC,UAAI,IAAI,CAAC,KAAK,CAAN,CAAM,CAAN,EAAA,CAAA,EAAR,KAAQ,CAAR,EAA8B;AAC5B,eAAA,CAAA;AACD;AACF;;AAED,WAAO,CAAP,CAAA;AAPK,GAAA;;;;AAUA,MAAM,IAAI,GAAG,SAAP,IAAO,CAAA,KAAA,EAAA,IAAA,EAAA;AAAA,WAA0C,KAAK,CAAC,SAAS,CAAA,KAAA,EAAzD,IAAyD,CAAV,CAA/C;AAAb,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BP;;AAAA;AAIA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIa,SAAA,GAAA,aAAA,UAAA,UAAA,EAAA;;;;;;;;;AAaX,aAAA,SAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAmF;AAAA,UAAA,KAAA;;AAAA,MAAA,mBAAA,CAAA,IAAA,EAAA,SAAA,CAAA;;AACjF,MAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,SAAS,CAAf,YAAA,CAAA;;AADiF,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,oBAAA,EAN9D,KAM8D,CAAA;;AAAA,MAAA,mBAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,6BAAA,EALrD,KAKqD,CAAA;;AAAA,UAAA,IAAA,GAGnD,IAAI,KAAJ,WAAA,GAAuB,SAAS,CAAhC,IAAA,GAAwC,SAAS,CAHE,GAAA;AAAA,UAGzE,OAHyE,GAAA,IAAA,CAAA,OAAA;AAAA,UAGhE,QAHgE,GAAA,IAAA,CAAA,QAAA;;AAKjF,MAAA,KAAA,CAAA,IAAA,GAAA,IAAA;AACA,MAAA,KAAA,CAAA,MAAA,GAAA,OAAA;AACA,MAAA,KAAA,CAAA,aAAA,GAAA,OAAA;AACA,MAAA,KAAA,CAAA,QAAA,GAAA,QAAA;AACA,MAAA,KAAA,CAAA,SAAA,GAAA,SAAA;AACA,MAAA,KAAA,CAAA,aAAA,GAAqB,SAAS,CAA9B,MAAA;AACA,MAAA,KAAA,CAAA,SAAA,GAAiB,SAAS,CAA1B,YAAA;AACA,MAAA,KAAA,CAAA,SAAA,GAAiB,SAAS,CAA1B,SAAA;AAZiF,aAAA,KAAA;AAalF;;;;;;;;;;;;aASD,SAAA,MAAA,GAAU;AAAA,YAAA,MAAA,GAAA,IAAA;;AAAA,YACA,SADA,GACc,KADd,YACc,CADd,SAAA;;AAGR,YACE,KAAA,IAAA,KAAA,cAAA,KACC,CAAC,KAAD,QAAA,IAAkB,SAAS,CAAT,GAAA,CAAA,QAAA,KAA2B,KAA7C,QAAA,IAA8D,SAAS,CAAT,GAAA,CAAA,OAAA,KAA0B,KAF3F,MACE,CADF,EAGE;AACA;AACD;;AAED,QAAA,SAAS,CAAT,IAAA,CAAA,QAAA,GAA0B,KAA1B,QAAA;AACA,QAAA,SAAS,CAAT,IAAA,CAAA,OAAA,GAAyB,KAAzB,MAAA;AAEA,QAAA,SAAS,CAAT,QAAA,GAAA,IAAA;AACA,QAAA,SAAS,CAAT,MAAA,CAAA,KAAA,GAAA,IAAA;AAEA,aAAA,wBAAA;;AAEA,YAAI,KAAA,IAAA,KAAJ,cAAA,EAAkC;AAChC,cAAM,WAAW,GAAG,SAAS,CAA7B,WAAA;;AACA,cAAM,KAAK,GAAG,QAAG,CAAH,SAAA,CAAA,WAAA,EAEZ,UAAA,KAAA,EAAA;AAAA,gBAAG,QAAH,GAAA,KAAA,CAAA,QAAA;AAAA,gBAAa,OAAb,GAAA,KAAA,CAAA,OAAA;AAAA,mBAA2B,QAAQ,KAAK,MAAI,CAAjB,QAAA,IAA8B,OAAO,KAAK,MAAI,CAAzE,MAAA;AAFF,WAAc,CAAd;;AAKA,UAAA,SAAS,CAAT,WAAA,CAAA,MAAA,CAAA,KAAA,EAAA,CAAA;AAEA,cAAM,eAAe,GAAG,IAAA,SAAA,CAAA,SAAA,EAAyB,KAAzB,SAAA,EAAxB,gBAAwB,CAAxB;AAEA,UAAA,eAAe,CAAf,QAAA,GAA2B,KAA3B,QAAA;AACA,UAAA,eAAe,CAAf,MAAA,GAAyB,KAAzB,MAAA;AAEA,eAAA,QAAA,CAAA,IAAA,CAAA,eAAA;AAdF,SAAA,MAeO;AACL,eAAA,QAAA,CAAA,IAAA,CAAmB,IAAA,SAAA,CAAA,SAAA,EAAyB,KAAzB,SAAA,EAAnB,WAAmB,CAAnB;AACD;AACF;;;aAED,SAAA,cAAA,GAAkB,CAAE;;;aAEpB,SAAA,eAAA,GAAmB;AACjB,aAAA,kBAAA,GAAA,IAAA;AACD;;;aAED,SAAA,wBAAA,GAA4B;AAC1B,aAAA,2BAAA,GAAmC,KAAA,kBAAA,GAAnC,IAAA;AACD;;;;GAjFU,CAAkB,cAAA,CAAA,SAAlB,C;;;;;;;;;;ACHb;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAGA;;AAAA;AAEA;;AAAA;;AA+FA,WAAA,WAAA,CAAA,KAAA,EAAgC;AAAA,QAE5B,OAF4B,GAQ1B,KAR0B,CAAA,OAAA;AAAA,QAIZ,QAJY,GAQ1B,KAR0B,CAAA,cAAA;AAAA,QAM5B,YAN4B,GAQ1B,KAR0B,CAAA,YAAA;AAAA,QAO5B,QAP4B,GAQ1B,KAR0B,CAAA,QAAA;AAU9B,IAAA,KAAK,CAAL,SAAA,CAAgB,UAAA,CAAhB,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,IAAA,YAAY,CAAZ,SAAA,CAAA,QAAA,GAAkC,UAAA,OAAA,EAAmE;AACnG,aAAO,cAAc,CAAA,IAAA,EAArB,OAAqB,CAArB;AADF,KAAA;;;;;;;;;;;;;;;;;;AAmBA,IAAA,YAAY,CAAZ,SAAA,CAAA,SAAA,GAAmC,UAAA,SAAA,EAAA,KAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,IAAA,EAQjC;AACA,aAAO,eAAe,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAtB,IAAsB,CAAtB;AATF,KAAA;;;;;;;;;;;AAoBA,IAAA,QAAQ,CAAR,WAAA,GAAuB,UAAA,QAAA,EAA8B;AACnD,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,QAAI,CAAJ,EAAuB;;;;AAKrB,QAAA,KAAK,CAAL,WAAA,GAAA,QAAA;AAEA,eAAA,QAAA;AACD;;AACD,aAAO,KAAK,CAAZ,WAAA;AAVF,KAAA;;AAaA,KAAA,GAAA,WAAA,CAAA,OAAA,EAAO,OAAO,CAAd,cAAA,EAA+B;AAC7B,MAAA,SAAS,EADoB,IAAA;AAE7B,MAAA,SAAS,EAFoB,IAAA;AAG7B,MAAA,YAAY,EAHiB,IAAA;AAI7B,MAAA,cAAc,EAJe,IAAA;AAK7B,MAAA,QAAQ,EALqB,IAAA;AAM7B,MAAA,IAAI,EAAE;AANuB,KAA/B;AAQA,IAAA,OAAO,CAAP,UAAA,CAAA,IAAA,GAAA,UAAA;AAEA,IAAA,KAAK,CAAL,WAAA,GAAA,KAAA;AAEA,IAAA,QAAQ,CAAR,OAAA,CAAA,IAAA,GAAwB,IAAI,CAA5B,QAAA;AACD;;AAED,WAAA,YAAA,CAAA,IAAA,EAAA,gBAAA,EAA4E;AAAA,QAAnD,aAAmD,GAAA,IAAA,CAAnD,aAAmD;AAC1E,QAAM,KAAmB,GADiD,EAC1E,CAD0E,CAAA;;AAI1E,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,aAAa,CAApC,IAAuB,CAAvB,MAAA,EAAA,EAAA,EAAA,EAA2C;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAApB,aAAa,CAAC,IAAd,CAAoB,EAApB,CAAoB;AAAA,UAAhC,QAAgC,GAAA,KAAA;;AACzC,UAAI,CAAC,QAAQ,CAAR,OAAA,CAAA,IAAA,CAAL,OAAA,EAAoC;AAClC;AACD;;AAED,UAAM,MAAM,GAAG,QAAQ,CAAR,OAAA,CAAA,IAAA,CAL0B,MAKzC,CALyC,CAAA;;AAQzC,UACG,OAAA,CAAA,OAAA,CAAA,OAAA,CAAA,MAAA,KAAsB,MAAM,KAA7B,gBAAC,IACA,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,KAAqB,CAAC,aAAQ,CAAR,eAAA,CAAA,gBAAA,EADvB,MACuB,CADtB,IAEA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,MAAA,KAAmB,CAAC,MAAM,CAAC;AAAE,QAAA,QAAQ,EAAV,QAAA;AAAY,QAAA,gBAAgB,EAAhB;AAAZ,OAAD,CAH7B,EAIE;AACA;AAbuC,OAAA,CAAA;;;AAiBzC,UAAM,YAAY,GAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,QAAQ,CAAlB,MAAA,IAClB,QAAQ,CAAR,QAAA,CAAA,gBAAA,CAAmC,QAAQ,CADzB,MAClB,CADkB,GAElB,OAAA,CAAA,OAAA,CAAA,KAAA,CAAS,QAAQ,CAAjB,MAAA,IACE,QAAQ,CADV,MAAA,GAEE,CAAC,QAAQ,CAJf,MAIM,CAJN;;AAMA,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA8B,YAA9B,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAAd,YAAc,CAAA,GAAA,CAAA;AAAA,YAAjC,eAAiC,GAAA,KAAA;;AAC1C,YAAI,eAAe,KAAnB,gBAAA,EAA0C;AACxC,UAAA,KAAK,CAAL,IAAA,CAAW;AACT,YAAA,QAAQ,EADC,QAAA;AAET,YAAA,OAAO,EAFE,eAAA;AAGT,YAAA,IAAI,EAAE,QAAQ,CAAR,OAAA,CAAA,eAAA;AAHG,WAAX;AAKD;AACF;AACF;;AAED,WAAA,KAAA;AACD;;AAED,WAAA,oBAAA,CAAA,WAAA,EAAA,KAAA,EAA4E;;AAE1E,SAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoC,WAAW,CAA/C,KAAoC,GAApC,MAAA,EAAA,GAAA,EAAA,EAAyD;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAArB,WAAW,CAAX,KAAA,GAAqB,GAArB,CAAqB;AAAA,UAAA,KAAA,GAAA,KAAA;AAAA,UAA5C,QAA4C,GAAA,KAAA,CAA5C,QAA4C;AAAA,UAAlC,OAAkC,GAAA,KAAA,CAAlC,OAAkC;AACvD,MAAA,KAAK,CAAL,QAAA,GADuD,QACvD,CADuD,CAAA;;AAIvD,MAAA,KAAK,CAAL,MAAA,GAAA,OAAA;AACA,MAAA,QAAQ,CAAR,IAAA,CAAA,KAAA;AACA,MAAA,KAAK,CAAL,kBAAA,GAA2B,KAAK,CAAL,2BAAA,GAA3B,KAAA;AACD;GlBvRH,C;;;;;AkB6RA,WAAA,cAAA,CAAA,KAAA,EAAA,WAAA,EAA6D;;AAE3D,QAAM,WAAW,GAAG,YAAY,CAAA,KAAA,EAAhC,WAAgC,CAAhC;;AAEA,SAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAyB,WAAzB,CAAA,MAAA,EAAA,GAAA,EAAA,EAAsC;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAAb,WAAa,CAAA,GAAA,CAAA;AAAA,UAA3B,UAA2B,GAAA,KAAA;AACpC,MAAA,UAAU,CAAV,IAAA,GAAkB,UAAU,CAAV,QAAA,CAAA,OAAA,CAA4B,UAAU,CAAxD,OAAkB,CAAlB;AACD;;AAED,WAAA,WAAA;AACD;;AAED,WAAA,OAAA,CAAA,KAAA,EAAA,SAAA,EAAA,YAAA,EAIE;AAAA,QAHE,SAGF,GAAA,KAAA,CAHE,SAGF;AAAA,QAH2B,SAG3B,GAAA,KAAA,CAHa,YAGb;AAAA,QAH+C,WAG/C,GAAA,KAAA,CAHsC,OAGtC;AACA,QAAM,UAAU,GADhB,EACA,CADA,CAAA;;AAIA,SAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA2D,SAAS,CAApE,WAA2D,CAA3D,MAAA,EAAA,GAAA,EAAA,EAAkF;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAAvB,SAAS,CAAC,WAAV,CAAuB,GAAvB,CAAuB;AAAA,UAAA,KAAA,GAAA,KAAA;AAAA,UAArE,QAAqE,GAAA,KAAA,CAArE,QAAqE;AAAA,UAAlD,eAAkD,GAAA,KAAA,CAA3D,OAA2D;AAAA,UAAjC,KAAiC,GAAA,KAAA,CAAjC,IAAiC;AAChF,MAAA,UAAU,CAAV,IAAA,CACE,QAAQ,CAAR,SAAA,CAAA,SAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,KAAA,IAAA,eAAA,GADF,IAAA;AALF,KAAA,CAAA;;;AAaA,QAAM,SAAS,GAAG,aAAQ,CAAR,qBAAA,CAAlB,UAAkB,CAAlB;;AAEA,WAAO,SAAS,CAAT,WAAA,CAAA,SAAA,KAAP,IAAA;AACD;;AAED,WAAA,aAAA,CAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAuF;AAAA,QAC7E,SAD6E,GAC/D,WAD+D,CAAA,SAAA;AAErF,QAAM,UAAU,GAAG;AACjB,MAAA,KAAK,EADY,IAAA;AAEjB,MAAA,KAAK,EAFY,IAAA;AAGjB,MAAA,QAAQ,EAHS,IAAA;AAIjB,MAAA,UAAU,EAJO,IAAA;AAKjB,MAAA,IAAI,EALa,IAAA;AAMjB,MAAA,IAAI,EAAE;AANW,KAAnB;;AASA,QAAI,SAAS,CAAT,IAAA,KAAJ,WAAA,EAAoC;AAClC,MAAA,UAAU,CAAV,QAAA,GAAsB,IAAI,aAAA,CAAJ,SAAA,CAAA,SAAA,EAAA,SAAA,EAAtB,cAAsB,CAAtB;AAEA,MAAA,UAAU,CAAV,QAAA,CAAA,MAAA,GAAA,IAAA;AACA,MAAA,UAAU,CAAV,QAAA,CAAA,QAAA,GAAA,IAAA;AACD;;AACD,QAAI,SAAS,CAAT,IAAA,KAAJ,SAAA,EAAkC;AAChC,MAAA,UAAU,CAAV,UAAA,GAAwB,IAAI,aAAA,CAAJ,SAAA,CAAA,SAAA,EAAA,SAAA,EAAxB,gBAAwB,CAAxB;AAEA,MAAA,UAAU,CAAV,UAAA,CAAA,MAAA,GAAA,IAAA;AACA,MAAA,UAAU,CAAV,UAAA,CAAA,QAAA,GAAA,IAAA;AACD;;AAED,QAAI,SAAS,CAAb,QAAA,EAAwB;AACtB,aAAA,UAAA;AACD;;AAED,QAAI,SAAS,CAAT,GAAA,CAAA,OAAA,KAA0B,SAAS,CAAT,IAAA,CAA9B,OAAA,EAAsD;;AAEpD,UAAI,SAAS,CAAT,IAAA,CAAJ,QAAA,EAA6B;AAC3B,QAAA,UAAU,CAAV,KAAA,GAAmB,IAAI,aAAA,CAAJ,SAAA,CAAA,SAAA,EAAA,SAAA,EAAnB,WAAmB,CAAnB;AAEA,QAAA,SAAS,CAAT,SAAA,GAAsB,UAAU,CAAV,KAAA,CAAA,MAAA,GAA0B,SAAS,CAAT,IAAA,CAAhD,OAAA;AACA,QAAA,SAAS,CAAT,YAAA,GAAyB,UAAU,CAAV,KAAA,CAAA,QAAA,GAA4B,SAAS,CAAT,IAAA,CAArD,QAAA;AANkD,OAAA,CAAA;;;AASpD,UAAI,SAAS,CAAT,GAAA,CAAJ,QAAA,EAA4B;AAC1B,QAAA,UAAU,CAAV,KAAA,GAAmB,IAAI,aAAA,CAAJ,SAAA,CAAA,SAAA,EAAA,SAAA,EAAnB,WAAmB,CAAnB;AAEA,QAAA,SAAS,CAAT,SAAA,GAAsB,SAAS,CAAT,GAAA,CAAtB,OAAA;AACA,QAAA,SAAS,CAAT,QAAA,GAAqB,SAAS,CAAT,GAAA,CAArB,QAAA;AACD;AACF;;AAED,QAAI,SAAS,CAAT,IAAA,KAAA,SAAA,IAAgC,SAAS,CAAT,GAAA,CAApC,QAAA,EAA4D;AAC1D,MAAA,UAAU,CAAV,IAAA,GAAkB,IAAI,aAAA,CAAJ,SAAA,CAAA,SAAA,EAAA,SAAA,EAAlB,MAAkB,CAAlB;AAEA,MAAA,SAAS,CAAT,QAAA,GAAqB,SAAS,CAAT,GAAA,CAArB,QAAA;AACA,MAAA,SAAS,CAAT,aAAA,GAA0B,SAAS,CAAT,GAAA,CAA1B,OAAA;AACD;;AACD,QAAI,SAAS,CAAT,IAAA,KAAA,UAAA,IAAiC,SAAS,CAAT,GAAA,CAArC,QAAA,EAA6D;AAC3D,MAAA,UAAU,CAAV,IAAA,GAAkB,IAAI,aAAA,CAAJ,SAAA,CAAA,SAAA,EAAA,SAAA,EAAlB,UAAkB,CAAlB;AAEA,MAAA,UAAU,CAAV,IAAA,CAAA,QAAA,GAAA,SAAA;AACA,MAAA,SAAS,CAAT,QAAA,GAAqB,SAAS,CAAT,GAAA,CAArB,QAAA;AACD;;AAED,WAAA,UAAA;AACD;;AAMD,WAAA,cAAA,CAAA,WAAA,EAAA,MAAA,EAA4E;AAAA,QAClE,SADkE,GACpD,WADoD,CAAA,SAAA;AAAA,QAElE,WAFkE,GAEvC,SAFuC,CAAA,WAAA;AAAA,QAErD,GAFqD,GAEvC,SAFuC,CAAA,GAAA;AAAA,QAEhD,IAFgD,GAEvC,SAFuC,CAAA,IAAA;;AAI1E,QAAI,MAAM,CAAV,KAAA,EAAkB;AAChB,MAAA,IAAI,CAAJ,QAAA,CAAA,IAAA,CAAmB,MAAM,CAAzB,KAAA;AACD;;AACD,QAAI,MAAM,CAAV,KAAA,EAAkB;AAChB,MAAA,GAAG,CAAH,QAAA,CAAA,IAAA,CAAkB,MAAM,CAAxB,KAAA;AACD;;AACD,QAAI,MAAM,CAAV,IAAA,EAAiB;AACf,MAAA,GAAG,CAAH,QAAA,CAAA,IAAA,CAAkB,MAAM,CAAxB,IAAA;AACD;;AACD,QAAI,MAAM,CAAV,IAAA,EAAiB;AACf,MAAA,GAAG,CAAH,QAAA,CAAA,IAAA,CAAkB,MAAM,CAAxB,IAAA;AACD;;AAED,QAAI,MAAM,CAAV,UAAA,EAAuB;AACrB,MAAA,oBAAoB,CAAA,WAAA,EAAc,MAAM,CAAxC,UAAoB,CAApB;AACD;;AAED,IAAA,SAAS,CAAT,IAAA,CAAA,QAAA,GAA0B,GAAG,CAA7B,QAAA;AACA,IAAA,SAAS,CAAT,IAAA,CAAA,OAAA,GAAyB,GAAG,CAA5B,OAAA;AACD;;AAED,WAAA,cAAA,CAAA,MAAA,EAAA,KAAA,EAAuG;AAAA,QAA5E,WAA4E,GAAA,MAAA,CAA5E,WAA4E;AAAA,QAA/D,MAA+D,GAAA,MAAA,CAA/D,MAA+D;AAAA,QAAvD,KAAuD,GAAA,MAAA,CAAvD,KAAuD;;AACrG,QAAI,MAAM,CAAN,IAAA,KAAA,UAAA,IAA8B,MAAM,CAAN,IAAA,KAAlC,SAAA,EAA6D;AAC3D;AACD;;AAHoG,QAK7F,SAL6F,GAK/E,WAL+E,CAAA,SAAA;;AAOrG,QAAI,KAAK,CAAT,WAAA,EAAuB;AACrB,MAAA,SAAS,CAAT,WAAA,GAAwB,cAAc,CAAA,KAAA,EAAQ,WAAW,CAAzD,OAAsC,CAAtC;AACD;;AAED,QAAM,SAAS,GAAf,MAAA;AACA,QAAM,UAAU,GAAG,OAAO,CAAA,WAAA,EAAA,SAAA,EAZ2E,KAY3E,CAA1B,CAZqG,CAAA;;AAerG,IAAA,SAAS,CAAT,QAAA,GACE,SAAS,CAAT,QAAA,IACA,CAAC,CADD,UAAA,IAEA,UAAU,CAAV,QAAA,KAAwB,SAAS,CAAT,GAAA,CAFxB,QAAA,IAGA,UAAU,CAAV,OAAA,KAAuB,SAAS,CAAT,GAAA,CAJzB,OAAA;AAMA,IAAA,SAAS,CAAT,GAAA,CAAA,QAAA,GAAyB,UAAU,IAAI,UAAU,CAAjD,QAAA;AACA,IAAA,SAAS,CAAT,GAAA,CAAA,OAAA,GAAwB,UAAU,IAAI,UAAU,CAAhD,OAAA;AAEA,IAAA,SAAS,CAAT,MAAA,GAAmB,aAAa,CAAA,WAAA,EAAA,KAAA,EAAhC,SAAgC,CAAhC;AACD;;AAID,WAAA,cAAA,CAAA,YAAA,EAAA,OAAA,EAA0F;AACxF,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,OAAI,CAAJ,EAAwB;AACtB,MAAA,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,GAAoC,OAAO,CAAP,OAAA,KAApC,KAAA;;AAEA,UAAI,OAAO,CAAX,SAAA,EAAuB;AACrB,YAAM,UAAU,GAAG,CAAA,GAAA,uBAAA,CAAA,OAAA,EAAmB,OAAO,CADxB,SACF,CAAnB,CADqB,CAAA;;AAGrB,YAAM,SAAS,GAAG,MAAM,CAAN,IAAA,CAAA,UAAA,EAAA,MAAA,CAA+B,UAAA,GAAA,EAAA,IAAA,EAAe;AAC9D,cAAM,aAAa,GAAG,iBAAA,IAAA,CAAA,IAAA,IAAA,OAAA,MAAA,CAAA,IAAA,CAAA,GAElB,8BAAA,IAAA,CAAA,IAAA,IAAA,OAAA,MAAA,CAAA,IAAA,CAAA,GAFJ,IAAA;AAMA,UAAA,GAAG,CAAH,aAAG,CAAH,GAAqB,UAAU,CAA/B,IAA+B,CAA/B;AAEA,iBAAA,GAAA;AATgB,SAAA,EAAlB,EAAkB,CAAlB;AAYA,QAAA,YAAY,CAAZ,GAAA,CAAiB,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAjB,SAAA;AACA,QAAA,YAAY,CAAZ,EAAA,CAAA,SAAA;AACA,QAAA,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AACD;;AAED,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,MAAI,CAAJ,EAA6B;AAC3B,QAAA,YAAY,CAAZ,EAAA,CAAA,MAAA,EAAwB,OAAO,CAA/B,MAAA;AACD;;AACD,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,cAAI,CAAJ,EAAqC;AACnC,QAAA,YAAY,CAAZ,EAAA,CAAA,cAAA,EAAgC,OAAO,CAAvC,cAAA;AACD;;AACD,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,gBAAI,CAAJ,EAAuC;AACrC,QAAA,YAAY,CAAZ,EAAA,CAAA,gBAAA,EAAkC,OAAO,CAAzC,gBAAA;AACD;;AACD,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,WAAI,CAAJ,EAAkC;AAChC,QAAA,YAAY,CAAZ,EAAA,CAAA,WAAA,EAA6B,OAAO,CAApC,WAAA;AACD;;AACD,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,WAAI,CAAJ,EAAkC;AAChC,QAAA,YAAY,CAAZ,EAAA,CAAA,WAAA,EAA6B,OAAO,CAApC,WAAA;AACD;;AACD,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,UAAI,CAAJ,EAAiC;AAC/B,QAAA,YAAY,CAAZ,EAAA,CAAA,UAAA,EAA4B,OAAO,CAAnC,UAAA;AACD;;AAED,UAAI,qBAAA,IAAA,CAA0B,OAAO,CAArC,OAAI,CAAJ,EAA0D;AACxD,QAAA,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,GAAoC,OAAO,CAA3C,OAAA;AADF,OAAA,MAEO,IAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,OAAO,CAArB,OAAI,CAAJ,EAAgC;AACrC,QAAA,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,GAAoC,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,GAAA,CAAA,CAAA,EAAY,OAAO,CAA5B,OAAS,CAAT,EAApC,CAAoC,CAApC;AACD;;AACD,UAAI,YAAJ,OAAA,EAAyB;AACvB,QAAA,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,MAAA,GAAmC,OAAO,CAA1C,MAAA;AACD;;AACD,UAAI,aAAJ,OAAA,EAA0B;AACxB,QAAA,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,GAAoC,OAAO,CAA3C,OAAA;AACD;;AAED,aAAA,YAAA;AACD;;AAED,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,OAAI,CAAJ,EAAsB;AACpB,MAAA,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEA,aAAA,YAAA;AACD;;AAED,WAAO,YAAY,CAAZ,OAAA,CAAP,IAAA;AACD;;AAED,WAAA,eAAA,CAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,IAAA,EAQE;AACA,QAAI,OAAO,GADX,KACA,CADA,CAAA;;;AAKA,QAAI,EAAE,IAAI,GAAG,IAAI,IAAI,YAAY,CAAZ,OAAA,CAArB,WAAqB,CAAjB,CAAJ,EAAyD;AACvD,aAAO,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,GACH,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,CAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EADG,gBACH,CADG,GAAP,KAAA;AAWD;;AAED,QAAM,WAAW,GAAG,YAAY,CAAZ,OAAA,CAAA,IAAA,CAApB,OAAA;;AAEA,QAAI,WAAW,KAAf,SAAA,EAA+B;AAC7B,UAAM,MAAM,GAAG,CAAA,GAAA,gBAAA,CAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAf,MAAe,CAAf;;AACA,UAAM,IAAI,GAAG,iBAAY,CAAZ,SAAA,CAAb,SAAa,CAAb;;AAEA,MAAA,IAAI,CAAJ,CAAA,IAAU,MAAM,CAAhB,CAAA;AACA,MAAA,IAAI,CAAJ,CAAA,IAAU,MAAM,CAAhB,CAAA;AAEA,UAAM,UAAU,GAAG,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAb,IAAA,IAAsB,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAtD,KAAA;AACA,UAAM,QAAQ,GAAG,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAb,GAAA,IAAqB,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAnD,MAAA;AAEA,MAAA,OAAO,GAAG,UAAU,IAApB,QAAA;AACD;;AAED,QAAM,QAAQ,GAAG,SAAS,CAAT,OAAA,CAAjB,gBAAiB,CAAjB;;AAEA,QAAI,QAAQ,IAAI,WAAW,KAA3B,QAAA,EAA0C;AACxC,UAAM,EAAE,GAAG,QAAQ,CAAR,IAAA,GAAgB,QAAQ,CAAR,KAAA,GAA3B,CAAA;AACA,UAAM,EAAE,GAAG,QAAQ,CAAR,GAAA,GAAe,QAAQ,CAAR,MAAA,GAA1B,CAAA;AAEA,MAAA,OAAO,GAAG,EAAE,IAAI,IAAI,CAAV,IAAA,IAAmB,EAAE,IAAI,IAAI,CAA7B,KAAA,IAAuC,EAAE,IAAI,IAAI,CAAjD,GAAA,IAAyD,EAAE,IAAI,IAAI,CAA7E,MAAA;AACD;;AAED,QAAI,QAAQ,IAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAhB,WAAgB,CAAhB,EAAwC;AACtC,UAAM,WAAW,GACf,IAAI,CAAJ,GAAA,CAAA,CAAA,EAAY,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAb,KAAA,EAAqB,QAAQ,CAA7B,KAAA,IAAuC,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAb,IAAA,EAAoB,QAAQ,CAA/E,IAAmD,CAAnD,IACA,IAAI,CAAJ,GAAA,CAAA,CAAA,EAAY,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAb,MAAA,EAAsB,QAAQ,CAA9B,MAAA,IAAyC,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAb,GAAA,EAAmB,QAAQ,CAFlF,GAEuD,CAArD,CAFF;AAIA,UAAM,YAAY,GAAG,WAAW,IAAI,QAAQ,CAAR,KAAA,GAAiB,QAAQ,CAA7D,MAAgC,CAAhC;AAEA,MAAA,OAAO,GAAG,YAAY,IAAtB,WAAA;AACD;;AAED,QAAI,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAJ,OAAA,EAAuC;AACrC,MAAA,OAAO,GAAG,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAA,OAAA,CAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAV,gBAAU,CAAV;AASD;;AAED,WAAA,OAAA;AACD;;AAED,MAAM,IAAY,GAAG;AACnB,IAAA,EAAE,EADiB,cAAA;AAEnB,IAAA,OAAO,EAFY,WAAA;AAGnB,IAAA,SAAS,EAAE;AACT,0CAAoC,SAAA,6BAAA,CAAA,MAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,MAAA,CAAlB,WAAkB;;AACvD,YAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,MAAA,EAA0C;AACxC;AACD;;AAED,QAAA,WAAW,CAAX,SAAA,GAAwB;AACtB,UAAA,GAAG,EAAE;AACH,YAAA,QAAQ,EADL,IAAA;AAEH,YAAA,OAAO,EAAE;AAFN,WADiB;AAKtB,UAAA,IAAI,EAAE;AACJ,YAAA,QAAQ,EADJ,IAAA;AAEJ,YAAA,OAAO,EAAE;AAFL,WALgB;AAStB,UAAA,QAAQ,EATc,IAAA;AAUtB,UAAA,MAAM,EAVgB,IAAA;AAWtB,UAAA,WAAW,EAAE;AAXS,SAAxB;AANO,OAAA;AAqBT,yCAAmC,SAAA,4BAAA,CAAA,MAAA,EAAA,KAAA,EAG9B;AAAA,YAFD,WAEC,GAAA,MAAA,CAFD,WAEC;AAAA,YAFY,KAEZ,GAAA,MAAA,CAFY,KAEZ;AAAA,YAF2B,SAE3B,GAAA,MAAA,CAFmB,MAEnB;;AACH,YAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,MAAA,EAA0C;AACxC;AACD;;AAHE,YAKK,SALL,GAKmB,WALnB,CAAA,SAAA,CAAA,CAAA;;AAQH,QAAA,SAAS,CAAT,WAAA,GAAA,IAAA;AACA,QAAA,SAAS,CAAT,MAAA,GAAA,IAAA;AACA,QAAA,SAAS,CAAT,WAAA,GAAwB,cAAc,CAAA,KAAA,EAAQ,WAAW,CAAzD,OAAsC,CAAtC;AACA,QAAA,SAAS,CAAT,MAAA,GAAmB,aAAa,CAAA,WAAA,EAAA,KAAA,EAAhC,SAAgC,CAAhC;;AAEA,YAAI,SAAS,CAAT,MAAA,CAAJ,QAAA,EAA+B;AAC7B,UAAA,oBAAoB,CAAC,SAAS,CAAV,WAAA,EAAwB,SAAS,CAAT,MAAA,CAA5C,QAAoB,CAApB;AACA,UAAA,KAAK,CAAL,IAAA,CAAA,oBAAA,EAAiC;AAAE,YAAA,WAAW,EAAb,WAAA;AAAe,YAAA,SAAS,EAAT;AAAf,WAAjC;AACD;AAxCM,OAAA;AA2CT,kCA3CS,cAAA;AA6CT,wCAAkC,SAAA,2BAAA,CAAA,MAAA,EAAA,KAAA,EAG7B;AAAA,YAFD,WAEC,GAAA,MAAA,CAFD,WAEC;AAAA,YAFoB,SAEpB,GAAA,MAAA,CAFY,MAEZ;;AACH,YAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,MAAA,EAA0C;AACxC;AACD;;AAED,QAAA,cAAc,CAAA,WAAA,EAAc,WAAW,CAAX,SAAA,CAA5B,MAAc,CAAd;AAEA,QAAA,KAAK,CAAL,IAAA,CAAA,mBAAA,EAAgC;AAAE,UAAA,WAAW,EAAb,WAAA;AAAe,UAAA,SAAS,EAAT;AAAf,SAAhC;AACA,QAAA,WAAW,CAAX,SAAA,CAAA,MAAA,GAAA,EAAA;AAxDO,OAAA;AA2DT,iCAA2B,SAAA,qBAAA,CAAA,GAAA,EAAA,KAAA,EAAgD;AACzE,YAAI,GAAG,CAAH,WAAA,CAAA,QAAA,CAAA,IAAA,KAAJ,MAAA,EAA8C;AAC5C;AACD;;AAHwE,YAKjE,WALiE,GAK9B,GAL8B,CAAA,WAAA;AAAA,YAK5C,SAL4C,GAK9B,GAL8B,CAAA,MAAA;AAOzE,QAAA,cAAc,CAAA,GAAA,EAAd,KAAc,CAAd;AACA,QAAA,cAAc,CAAA,WAAA,EAAc,WAAW,CAAX,SAAA,CAA5B,MAAc,CAAd;AACA,QAAA,KAAK,CAAL,IAAA,CAAA,kBAAA,EAA+B;AAAE,UAAA,WAAW,EAAb,WAAA;AAAe,UAAA,SAAS,EAAT;AAAf,SAA/B;AApEO,OAAA;AAuET,2BAAqB,SAAA,gBAAA,CAAA,MAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,MAAA,CAAlB,WAAkB;;AACxC,YAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,MAAA,EAA0C;AACxC;AACD;;AAHuC,YAKhC,SALgC,GAKlB,WALkB,CAAA,SAAA;;AAOxC,YAAA,SAAA,EAAe;AACb,UAAA,SAAS,CAAT,WAAA,GAAA,IAAA;AACA,UAAA,SAAS,CAAT,MAAA,GAAA,IAAA;AACA,UAAA,SAAS,CAAT,GAAA,CAAA,QAAA,GAAA,IAAA;AACA,UAAA,SAAS,CAAT,GAAA,CAAA,OAAA,GAAA,IAAA;AACA,UAAA,SAAS,CAAT,IAAA,CAAA,QAAA,GAAA,IAAA;AACA,UAAA,SAAS,CAAT,IAAA,CAAA,OAAA,GAAA,IAAA;AACA,UAAA,SAAS,CAAT,QAAA,GAAA,KAAA;AACD;AACF;AAvFQ,KAHQ;AA4FnB,IAAA,cAAc,EA5FK,cAAA;AA6FnB,IAAA,OAAO,EA7FY,OAAA;AA8FnB,IAAA,aAAa,EA9FM,aAAA;AA+FnB,IAAA,cAAc,EA/FK,cAAA;AAgGnB,IAAA,QAAQ,EAAE;AACR,MAAA,OAAO,EADC,KAAA;AAER,MAAA,MAAM,EAFE,IAAA;AAGR,MAAA,OAAO,EAAE;AAHD;AAhGS,GAArB;qBAuGe,I;;;;;;;;;ACtqBf;;AAAA;AACA;;AAAA;;AAiDA,WAAA,WAAA,CAAA,KAAA,EAAgC;AAAA,QACtB,OADsB,GACc,KADd,CAAA,OAAA;AAAA,QACb,YADa,GACc,KADd,CAAA,YAAA;AAAA,QACC,QADD,GACc,KADd,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;AA0B9B,IAAA,YAAY,CAAZ,SAAA,CAAA,UAAA,GAAoC,UAAA,OAAA,EAGlC;AACA,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,OAAI,CAAJ,EAAwB;AACtB,aAAA,OAAA,CAAA,OAAA,CAAA,OAAA,GAA+B,OAAO,CAAP,OAAA,KAA/B,KAAA;AACA,aAAA,YAAA,CAAA,SAAA,EAAA,OAAA;AACA,aAAA,WAAA,CAAA,SAAA,EAAA,OAAA;AAEA,eAAA,IAAA;AACD;;AAED,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,OAAI,CAAJ,EAAsB;AACpB,aAAA,OAAA,CAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAEA,eAAA,IAAA;AACD;;AAED,aAAO,KAAA,OAAA,CAAP,OAAA;AAlBF,KAAA;;AAqBA,IAAA,OAAO,CAAP,GAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,OAAO,CAAP,UAAA,CAAA,OAAA,GAAA,YAAA;AAEA,IAAA,QAAQ,CAAR,OAAA,CAAA,OAAA,GAA2B,OAAO,CAAlC,QAAA;AACD;;AAED,WAAA,kBAAA,CAAA,IAAA,EAA+E;AAAA,QAAhD,WAAgD,GAAA,IAAA,CAAhD,WAAgD;AAAA,QAAnC,MAAmC,GAAA,IAAA,CAAnC,MAAmC;AAAA,QAA3B,KAA2B,GAAA,IAAA,CAA3B,KAA2B;AAC7E,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,SAAA,EAA6C;AAE7C,QAAM,QAAQ,GAAG,WAAW,CAAX,QAAA,CAAA,GAAA,CAAyB,UAAA,CAAA,EAAA;AAAA,aAAO,CAAC,CAAR,OAAA;AAA1C,KAAiB,CAAjB;AACA,QAAM,QAAQ,GAAG,KAAK,KAAtB,OAAA;AACA,QAAM,MAAM,GAAG,KAAK,KAApB,KAAA;AACA,QAAM,WAAW,GAAG,WAAW,CAAX,YAAA,CAAA,OAAA,CAApB,WAAA;AAEA,IAAA,MAAM,CAAN,OAAA,GAAiB,CAAC,QAAQ,CAAT,CAAS,CAAT,EAAc,QAAQ,CAAvC,CAAuC,CAAtB,CAAjB;;AAEA,QAAA,QAAA,EAAc;AACZ,MAAA,MAAM,CAAN,QAAA,GAAkB,iBAAY,CAAZ,aAAA,CAAA,QAAA,EAAlB,WAAkB,CAAlB;AACA,MAAA,MAAM,CAAN,GAAA,GAAa,iBAAY,CAAZ,SAAA,CAAb,QAAa,CAAb;AACA,MAAA,MAAM,CAAN,KAAA,GAAA,CAAA;AACA,MAAA,MAAM,CAAN,EAAA,GAAA,CAAA;AACA,MAAA,MAAM,CAAN,KAAA,GAAe,iBAAY,CAAZ,UAAA,CAAA,QAAA,EAAf,WAAe,CAAf;AACA,MAAA,MAAM,CAAN,EAAA,GAAA,CAAA;AAEA,MAAA,WAAW,CAAX,OAAA,CAAA,aAAA,GAAoC,MAAM,CAA1C,QAAA;AACA,MAAA,WAAW,CAAX,OAAA,CAAA,UAAA,GAAiC,MAAM,CAAvC,KAAA;AATF,KAAA,MAUO,IAAA,MAAA,EAAY;AACjB,UAAM,SAAS,GAAG,WAAW,CAA7B,SAAA;AAEA,MAAA,MAAM,CAAN,QAAA,GAAkB,SAAS,CAA3B,QAAA;AACA,MAAA,MAAM,CAAN,GAAA,GAAa,SAAS,CAAtB,GAAA;AACA,MAAA,MAAM,CAAN,KAAA,GAAe,SAAS,CAAxB,KAAA;AACA,MAAA,MAAM,CAAN,EAAA,GAAA,CAAA;AACA,MAAA,MAAM,CAAN,KAAA,GAAe,SAAS,CAAxB,KAAA;AACA,MAAA,MAAM,CAAN,EAAA,GAAA,CAAA;AARK,KAAA,MASA;AACL,MAAA,MAAM,CAAN,QAAA,GAAkB,iBAAY,CAAZ,aAAA,CAAA,QAAA,EAAlB,WAAkB,CAAlB;AACA,MAAA,MAAM,CAAN,GAAA,GAAa,iBAAY,CAAZ,SAAA,CAAb,QAAa,CAAb;AACA,MAAA,MAAM,CAAN,KAAA,GAAe,MAAM,CAAN,QAAA,GAAkB,WAAW,CAAX,OAAA,CAAjC,aAAA;AACA,MAAA,MAAM,CAAN,KAAA,GAAe,iBAAY,CAAZ,UAAA,CAAA,QAAA,EAAf,WAAe,CAAf;AAEA,MAAA,MAAM,CAAN,EAAA,GAAY,MAAM,CAAN,KAAA,GAAe,WAAW,CAAX,OAAA,CAA3B,KAAA;AACA,MAAA,MAAM,CAAN,EAAA,GAAY,MAAM,CAAN,KAAA,GAAe,WAAW,CAAX,OAAA,CAA3B,KAAA;AACD;;AAED,IAAA,WAAW,CAAX,OAAA,CAAA,QAAA,GAA+B,MAAM,CAArC,QAAA;AACA,IAAA,WAAW,CAAX,OAAA,CAAA,KAAA,GAA4B,MAAM,CAAlC,KAAA;;AAEA,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,MAAM,CAAhB,KAAA,KAA2B,MAAM,CAAN,KAAA,KAA3B,QAAA,IAAwD,CAAC,KAAK,CAAC,MAAM,CAAzE,KAAkE,CAAlE,EAAkF;AAChF,MAAA,WAAW,CAAX,OAAA,CAAA,KAAA,GAA4B,MAAM,CAAlC,KAAA;AACD;AACF;;AAED,MAAM,OAAe,GAAG;AACtB,IAAA,EAAE,EADoB,iBAAA;AAEtB,IAAA,MAAM,EAAE,CAAA,cAAA,EAFc,gBAEd,CAFc;AAGtB,IAAA,OAAO,EAHe,WAAA;AAItB,IAAA,SAAS,EAAE;AACT,mCADS,kBAAA;AAET,kCAFS,kBAAA;AAGT,iCAHS,kBAAA;AAKT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AACvC,QAAA,WAAW,CAAX,OAAA,GAAsB;AACpB,UAAA,KAAK,EADe,CAAA;AAEpB,UAAA,QAAQ,EAFY,CAAA;AAGpB,UAAA,KAAK,EAHe,CAAA;AAIpB,UAAA,UAAU,EAJU,CAAA;AAKpB,UAAA,aAAa,EAAE;AALK,SAAtB;AANO,OAAA;AAeT,0BAAoB,SAAA,cAAA,CAAA,GAAA,EAAS;AAC3B,YAAI,GAAG,CAAH,WAAA,CAAA,QAAA,CAAA,MAAA,GAAJ,CAAA,EAAyC;AACvC,iBAAA,SAAA;AACD;;AAED,YAAM,cAAc,GAAG,GAAG,CAAH,YAAA,CAAA,OAAA,CAAvB,OAAA;;AAEA,YAAI,EAAE,cAAc,IAAI,cAAc,CAAtC,OAAI,CAAJ,EAAiD;AAC/C,iBAAA,SAAA;AACD;;AAED,QAAA,GAAG,CAAH,MAAA,GAAa;AAAE,UAAA,IAAI,EAAE;AAAR,SAAb;AAEA,eAAA,KAAA;AACD;AA7BQ,KAJW;AAoCtB,IAAA,QAAQ,EApCc,EAAA;AAsCtB,IAAA,SAtCsB,EAAA,SAAA,SAAA,GAsCT;AACX,aAAA,EAAA;AACD;AAxCqB,GAAxB;qBA2Ce,O;;;;;;;;;AC1Lf;;AAAA;AACA;;AAAA;AACA;;AAAA;;AAoCA,WAAA,WAAA,CAAA,KAAA,EAAgC;AAAA,QAE5B,OAF4B,GAO1B,KAP0B,CAAA,OAAA;AAAA,QAG5B,OAH4B,GAO1B,KAP0B,CAAA,OAAA;AAAA,QAK5B,YAL4B,GAO1B,KAP0B,CAAA,YAAA;AAAA,QAM5B,QAN4B,GAO1B,KAP0B,CAAA,QAAA,CAAA,CAAA;;AAW9B,IAAA,MAAM,CAAN,OAAA,GAAiB,WAAW,CAA5B,OAA4B,CAA5B;AACA,IAAA,MAAM,CAAN,aAAA,GAAuB,OAAO,CAAP,aAAA,IAAyB,OAAO,CAAhC,oBAAA,GAAA,EAAA,GAAvB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,IAAA,YAAY,CAAZ,SAAA,CAAA,SAAA,GAAmC,UAAA,OAAA,EAAmE;AACpG,aAAO,SAAS,CAAA,IAAA,EAAA,OAAA,EAAhB,KAAgB,CAAhB;AADF,KAAA;;AAIA,IAAA,OAAO,CAAP,GAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,OAAO,CAAP,UAAA,CAAA,MAAA,GAAA,WAAA;AAEA,IAAA,QAAQ,CAAR,OAAA,CAAA,MAAA,GAA0B,MAAM,CAAhC,QAAA;AACD;;AAED,WAAA,aAAA,CAAA,GAAA,EAA6B;AAAA,QACnB,WADmB,GACmC,GADnC,CAAA,WAAA;AAAA,QACN,YADM,GACmC,GADnC,CAAA,YAAA;AAAA,QACQ,OADR,GACmC,GADnC,CAAA,OAAA;AAAA,QACiB,IADjB,GACmC,GADnC,CAAA,IAAA;AAAA,QACuB,OADvB,GACmC,GADnC,CAAA,OAAA;;AAG3B,QAAI,CAAJ,IAAA,EAAW;AACT,aAAA,SAAA;AACD;;AAED,QAAM,IAAI,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,WAAW,CAAX,MAAA,CAAA,GAAA,CAAxB,IAAa,CAAb;AACA,QAAM,aAAa,GAAG,YAAY,CAAZ,OAAA,CAAtB,MAAA;;AAEA,QACE,EAAE,aAAa,IAAI,aAAa,CAAhC,OAAA,KAAA;AAEC,IAAA,WAAW,CAAX,aAAA,IACC,gBAAA,IAAA,CAAqB,WAAW,CADjC,WACC,CADD,IAEC,CAAC,OAAO,GAAG,aAAa,CAAxB,YAAA,MALJ,CAAA,EAME;AACA,aAAA,SAAA;AAjByB,KAAA,CAAA;;;AAqB3B,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,aAAa,CAA3B,KAAI,CAAJ,EAAoC;AAClC,UAAM,WAAW,GAAG;AAClB,QAAA,IAAI,EADc,KAAA;AAElB,QAAA,KAAK,EAFa,KAAA;AAGlB,QAAA,GAAG,EAHe,KAAA;AAIlB,QAAA,MAAM,EAAE;AAJU,OAApB;;AAOA,WAAK,IAAL,IAAA,IAAA,WAAA,EAAgC;AAC9B,QAAA,WAAW,CAAX,IAAW,CAAX,GAAoB,eAAe,CAAA,IAAA,EAEjC,aAAa,CAAb,KAAA,CAFiC,IAEjC,CAFiC,EAAA,IAAA,EAIjC,WAAW,CAAX,cAAA,CAJiC,WAAA,EAAA,OAAA,EAAA,IAAA,EAOjC,aAAa,CAAb,MAAA,IAAwB,MAAM,CAPhC,aAAmC,CAAnC;AASD;;AAED,MAAA,WAAW,CAAX,IAAA,GAAmB,WAAW,CAAX,IAAA,IAAoB,CAAC,WAAW,CAAnD,KAAA;AACA,MAAA,WAAW,CAAX,GAAA,GAAkB,WAAW,CAAX,GAAA,IAAmB,CAAC,WAAW,CAAjD,MAAA;;AAEA,UAAI,WAAW,CAAX,IAAA,IAAoB,WAAW,CAA/B,KAAA,IAAyC,WAAW,CAApD,GAAA,IAA4D,WAAW,CAA3E,MAAA,EAAoF;AAClF,QAAA,GAAG,CAAH,MAAA,GAAa;AACX,UAAA,IAAI,EADO,QAAA;AAEX,UAAA,KAAK,EAAE;AAFI,SAAb;AAID;AA5BH,KAAA,MA6BO;AACL,UAAM,KAAK,GAAG,aAAa,CAAb,IAAA,KAAA,GAAA,IAA8B,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAJ,KAAA,GAAa,MAAM,CAAxE,aAAA;AACA,UAAM,MAAM,GAAG,aAAa,CAAb,IAAA,KAAA,GAAA,IAA8B,IAAI,CAAJ,CAAA,GAAS,IAAI,CAAJ,MAAA,GAAc,MAAM,CAA1E,aAAA;;AAEA,UAAI,KAAK,IAAT,MAAA,EAAqB;AACnB,QAAA,GAAG,CAAH,MAAA,GAAa;AACX,UAAA,IAAI,EADO,QAAA;AAEX,UAAA,IAAI,EAAE,CAAC,KAAK,GAAA,GAAA,GAAN,EAAA,KAAsB,MAAM,GAAA,GAAA,GAA5B,EAAA;AAFK,SAAb;AAID;AACF;;AAED,WAAO,GAAG,CAAH,MAAA,GAAA,KAAA,GAAP,SAAA;AACD;;AAED,WAAA,SAAA,CAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAA8G;AAC5G,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,OAAI,CAAJ,EAAwB;AACtB,MAAA,YAAY,CAAZ,OAAA,CAAA,MAAA,CAAA,OAAA,GAAsC,OAAO,CAAP,OAAA,KAAtC,KAAA;AACA,MAAA,YAAY,CAAZ,YAAA,CAAA,QAAA,EAAA,OAAA;AACA,MAAA,YAAY,CAAZ,WAAA,CAAA,QAAA,EAAA,OAAA;;AAEA,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,OAAO,CAAjB,IAAA,KAA2B,eAAA,IAAA,CAAoB,OAAO,CAA1D,IAA+B,CAA/B,EAAkE;AAChE,QAAA,YAAY,CAAZ,OAAA,CAAA,MAAA,CAAA,IAAA,GAAmC,OAAO,CAA1C,IAAA;AADF,OAAA,MAEO,IAAI,OAAO,CAAP,IAAA,KAAJ,IAAA,EAA2B;AAChC,QAAA,YAAY,CAAZ,OAAA,CAAA,MAAA,CAAA,IAAA,GAAmC,KAAK,CAAL,QAAA,CAAA,OAAA,CAAA,MAAA,CAAnC,IAAA;AACD;;AAED,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,mBAAI,CAAJ,EAA0C;AACxC,QAAA,YAAY,CAAZ,OAAA,CAAA,MAAA,CAAA,mBAAA,GAAkD,OAAO,CAAzD,mBAAA;AADF,OAAA,MAEO,IAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,OAAO,CAAnB,MAAI,CAAJ,EAA6B;AAClC,QAAA,YAAY,CAAZ,OAAA,CAAA,MAAA,CAAA,MAAA,GAAqC,OAAO,CAA5C,MAAA;AACD;;AAED,aAAA,YAAA;AACD;;AACD,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,OAAI,CAAJ,EAAsB;AACpB,MAAA,YAAY,CAAZ,OAAA,CAAA,MAAA,CAAA,OAAA,GAAA,OAAA;AAEA,aAAA,YAAA;AACD;;AACD,WAAO,YAAY,CAAZ,OAAA,CAAP,MAAA;AACD;;AAED,WAAA,eAAA,CAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,MAAA,EAQE;;AAEA,QAAI,CAAJ,KAAA,EAAY;AACV,aAAA,KAAA;AAHF,KAAA,CAAA;;;AAOA,QAAI,KAAK,KAAT,IAAA,EAAoB;;AAElB,UAAM,KAAK,GAAG,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,IAAI,CAAd,KAAA,IAAwB,IAAI,CAA5B,KAAA,GAAqC,IAAI,CAAJ,KAAA,GAAa,IAAI,CAApE,IAAA;AACA,UAAM,MAAM,GAAG,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,IAAI,CAAd,MAAA,IAAyB,IAAI,CAA7B,MAAA,GAAuC,IAAI,CAAJ,MAAA,GAAc,IAAI,CAHtD,GAGlB,CAHkB,CAAA;;AAMlB,MAAA,MAAM,GAAG,IAAI,CAAJ,GAAA,CAAA,MAAA,EAAiB,IAAI,CAAJ,GAAA,CAAS,CAAC,IAAI,KAAJ,MAAA,IAAmB,IAAI,KAAvB,OAAA,GAAA,KAAA,GAAD,MAAA,IAAnC,CAA0B,CAAjB,CAAT;;AAEA,UAAI,KAAK,GAAT,CAAA,EAAe;AACb,YAAI,IAAI,KAAR,MAAA,EAAqB;AACnB,UAAA,IAAI,GAAJ,OAAA;AADF,SAAA,MAEO,IAAI,IAAI,KAAR,OAAA,EAAsB;AAC3B,UAAA,IAAI,GAAJ,MAAA;AACD;AACF;;AACD,UAAI,MAAM,GAAV,CAAA,EAAgB;AACd,YAAI,IAAI,KAAR,KAAA,EAAoB;AAClB,UAAA,IAAI,GAAJ,QAAA;AADF,SAAA,MAEO,IAAI,IAAI,KAAR,QAAA,EAAuB;AAC5B,UAAA,IAAI,GAAJ,KAAA;AACD;AACF;;AAED,UAAI,IAAI,KAAR,MAAA,EAAqB;AACnB,eAAO,IAAI,CAAJ,CAAA,GAAS,CAAC,KAAK,IAAL,CAAA,GAAa,IAAI,CAAjB,IAAA,GAAyB,IAAI,CAA9B,KAAA,IAAhB,MAAA;AACD;;AACD,UAAI,IAAI,KAAR,KAAA,EAAoB;AAClB,eAAO,IAAI,CAAJ,CAAA,GAAS,CAAC,MAAM,IAAN,CAAA,GAAc,IAAI,CAAlB,GAAA,GAAyB,IAAI,CAA9B,MAAA,IAAhB,MAAA;AACD;;AAED,UAAI,IAAI,KAAR,OAAA,EAAsB;AACpB,eAAO,IAAI,CAAJ,CAAA,GAAS,CAAC,KAAK,IAAL,CAAA,GAAa,IAAI,CAAjB,KAAA,GAA0B,IAAI,CAA/B,IAAA,IAAhB,MAAA;AACD;;AACD,UAAI,IAAI,KAAR,QAAA,EAAuB;AACrB,eAAO,IAAI,CAAJ,CAAA,GAAS,CAAC,MAAM,IAAN,CAAA,GAAc,IAAI,CAAlB,MAAA,GAA4B,IAAI,CAAjC,GAAA,IAAhB,MAAA;AACD;AA1CH,KAAA,CAAA;;;AA8CA,QAAI,CAAC,OAAA,CAAA,OAAA,CAAA,OAAA,CAAL,OAAK,CAAL,EAA0B;AACxB,aAAA,KAAA;AACD;;AAED,WAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAA,KAAA,IAAA;AAEL,IAAA,KAAK,KAFA,OAAA,GAAA;AAIL,IAAA,aAAG,CAAH,WAAA,CAAA,OAAA,EAAA,KAAA,EAJF,mBAIE,CAJF;AAKD;;;;;AAID,WAAA,WAAA,CAAA,OAAA,EAAmF;AACjF,WAAO,OAAO,CAAP,KAAA,GACH;AACA,MAAA,CAAC,EADD,UAAA;AAEA,MAAA,CAAC,EAFD,UAAA;AAGA,MAAA,EAAE,EAHF,WAAA;AAKA,MAAA,GAAG,EALH,UAAA;AAMA,MAAA,IAAI,EANJ,UAAA;AAOA,MAAA,MAAM,EAPN,UAAA;AAQA,MAAA,KAAK,EARL,UAAA;AASA,MAAA,OAAO,EATP,WAAA;AAUA,MAAA,WAAW,EAVX,WAAA;AAWA,MAAA,QAAQ,EAXR,WAAA;AAYA,MAAA,UAAU,EAAE;AAZZ,KADG,GAeH;AACA,MAAA,CAAC,EADD,WAAA;AAEA,MAAA,CAAC,EAFD,WAAA;AAGA,MAAA,EAAE,EAHF,aAAA;AAKA,MAAA,GAAG,EALH,WAAA;AAMA,MAAA,IAAI,EANJ,WAAA;AAOA,MAAA,MAAM,EAPN,WAAA;AAQA,MAAA,KAAK,EARL,WAAA;AASA,MAAA,OAAO,EATP,aAAA;AAUA,MAAA,WAAW,EAVX,aAAA;AAWA,MAAA,QAAQ,EAXR,aAAA;AAYA,MAAA,UAAU,EAAE;AAZZ,KAfJ;AA6BD;;;;AAGD,WAAA,KAAA,CAAA,IAAA,EAAwG;AAAA,QAAtF,MAAsF,GAAA,IAAA,CAAtF,MAAsF;AAAA,QAA9E,WAA8E,GAAA,IAAA,CAA9E,WAA8E;;AACtG,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAA,QAAA,IAA0C,CAAC,WAAW,CAAX,QAAA,CAA/C,KAAA,EAA2E;AACzE;AACD;;AAED,QAAM,WAAW,GAAjB,MAAA;AACA,QAAM,IAAI,GAAG,WAAW,CAAxB,IAAA;AAEA,IAAA,WAAW,CAAX,MAAA,GAAqB;AACnB,MAAA,KAAK,EAAE,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EADY,IACZ,CADY;AAEnB,MAAA,SAAS,EAAE,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAFQ,IAER,CAFQ;AAGnB,MAAA,QAAQ,EAAE,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAHS,IAGT,CAHS;AAInB,MAAA,KAAK,EAAE;AACL,QAAA,IAAI,EADC,CAAA;AAEL,QAAA,KAAK,EAFA,CAAA;AAGL,QAAA,KAAK,EAHA,CAAA;AAIL,QAAA,GAAG,EAJE,CAAA;AAKL,QAAA,MAAM,EALD,CAAA;AAML,QAAA,MAAM,EAAE;AANH;AAJY,KAArB;AAcA,IAAA,WAAW,CAAX,KAAA,GAAoB,WAAW,CAAX,QAAA,CAApB,KAAA;AACA,IAAA,WAAW,CAAX,IAAA,GAAmB,WAAW,CAAX,MAAA,CAAnB,SAAA;AACA,IAAA,WAAW,CAAX,SAAA,GAAwB,WAAW,CAAX,MAAA,CAAxB,KAAA;AACD;;AAED,WAAA,QAAA,CAAA,KAAA,EAAuG;AAAA,QAAtF,MAAsF,GAAA,KAAA,CAAtF,MAAsF;AAAA,QAA9E,WAA8E,GAAA,KAAA,CAA9E,WAA8E;AACrG,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAA,QAAA,IAA0C,CAAC,WAAW,CAAX,QAAA,CAA/C,KAAA,EAA2E;AAE3E,QAAM,WAAW,GAAjB,MAAA;AACA,QAAM,aAAa,GAAG,WAAW,CAAX,YAAA,CAAA,OAAA,CAAtB,MAAA;AACA,QAAM,MAAM,GAAG,aAAa,CAA5B,MAAA;AACA,QAAM,UAAU,GAAG,MAAM,KAAN,YAAA,IAA2B,MAAM,KAApD,QAAA;AAEA,QAAM,OAAO,GAAG,WAAW,CAA3B,IAAA;AARqG,QAAA,mBAAA,GASjC,WAAW,CATsB,MAAA;AAAA,QAStF,SATsF,GAAA,mBAAA,CAAA,KAAA;AAAA,QAS3E,SAT2E,GAAA,mBAAA,CAAA,SAAA;AAAA,QASzD,SATyD,GAAA,mBAAA,CAAA,KAAA;AAAA,QAS9C,QAT8C,GAAA,mBAAA,CAAA,QAAA;AAWrG,KAAA,GAAA,WAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA;;AAEA,QAAA,UAAA,EAAgB;;AAEd,OAAA,GAAA,WAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA;;AAEA,UAAI,MAAM,KAAV,YAAA,EAA6B;;AAE3B,YAAI,SAAS,CAAT,GAAA,GAAgB,SAAS,CAA7B,MAAA,EAAsC;AACpC,cAAM,IAAI,GAAG,SAAS,CAAtB,GAAA;AAEA,UAAA,SAAS,CAAT,GAAA,GAAgB,SAAS,CAAzB,MAAA;AACA,UAAA,SAAS,CAAT,MAAA,GAAA,IAAA;AACD;;AACD,YAAI,SAAS,CAAT,IAAA,GAAiB,SAAS,CAA9B,KAAA,EAAsC;AACpC,cAAM,KAAI,GAAG,SAAS,CAAtB,IAAA;AAEA,UAAA,SAAS,CAAT,IAAA,GAAiB,SAAS,CAA1B,KAAA;AACA,UAAA,SAAS,CAAT,KAAA,GAAA,KAAA;AACD;AACF;AAlBH,KAAA,MAmBO;;AAEL,MAAA,SAAS,CAAT,GAAA,GAAgB,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAhB,GAAA,EAAsB,SAAS,CAA/C,MAAgB,CAAhB;AACA,MAAA,SAAS,CAAT,MAAA,GAAmB,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAhB,MAAA,EAAyB,SAAS,CAArD,GAAmB,CAAnB;AACA,MAAA,SAAS,CAAT,IAAA,GAAiB,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAhB,IAAA,EAAuB,SAAS,CAAjD,KAAiB,CAAjB;AACA,MAAA,SAAS,CAAT,KAAA,GAAkB,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAhB,KAAA,EAAwB,SAAS,CAAnD,IAAkB,CAAlB;AACD;;AAED,IAAA,SAAS,CAAT,KAAA,GAAkB,SAAS,CAAT,KAAA,GAAkB,SAAS,CAA7C,IAAA;AACA,IAAA,SAAS,CAAT,MAAA,GAAmB,SAAS,CAAT,MAAA,GAAmB,SAAS,CAA/C,GAAA;;AAEA,SAAK,IAAL,IAAA,IAAA,SAAA,EAA8B;AAC5B,MAAA,SAAS,CAAT,IAAS,CAAT,GAAkB,SAAS,CAAT,IAAS,CAAT,GAAkB,QAAQ,CAA5C,IAA4C,CAA5C;AACD;;AAED,IAAA,WAAW,CAAX,KAAA,GAAoB,WAAW,CAAX,QAAA,CAApB,KAAA;AACA,IAAA,WAAW,CAAX,IAAA,GAAA,SAAA;AACA,IAAA,WAAW,CAAX,SAAA,GAAA,SAAA;AACD;;AAED,WAAA,GAAA,CAAA,KAAA,EAAsG;AAAA,QAAtF,MAAsF,GAAA,KAAA,CAAtF,MAAsF;AAAA,QAA9E,WAA8E,GAAA,KAAA,CAA9E,WAA8E;AACpG,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAA,QAAA,IAA0C,CAAC,WAAW,CAAX,QAAA,CAA/C,KAAA,EAA2E;AAE3E,QAAM,WAAW,GAAjB,MAAA;AAEA,IAAA,WAAW,CAAX,KAAA,GAAoB,WAAW,CAAX,QAAA,CAApB,KAAA;AACA,IAAA,WAAW,CAAX,IAAA,GAAmB,WAAW,CAAX,MAAA,CAAnB,SAAA;AACA,IAAA,WAAW,CAAX,SAAA,GAAwB,WAAW,CAAX,MAAA,CAAxB,KAAA;AACD;;AAED,WAAA,eAAA,CAAA,KAAA,EAMG;AAAA,QALD,MAKC,GAAA,KAAA,CALD,MAKC;AAAA,QAJD,WAIC,GAAA,KAAA,CAJD,WAIC;AACD,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAA,QAAA,IAA0C,CAAC,WAAW,CAA1D,UAAA,EAAuE;AAEvE,QAAM,OAAO,GAAG,WAAW,CAAX,YAAA,CAAhB,OAAA;AACA,QAAM,WAAW,GAAjB,MAAA;;AAEA,QAAI,OAAO,CAAP,MAAA,CAAJ,MAAA,EAA2B;AACzB,UAAI,WAAW,CAAX,UAAA,KAAJ,GAAA,EAAoC;AAClC,QAAA,WAAW,CAAX,KAAA,CAAA,CAAA,GAAsB,WAAW,CAAX,KAAA,CAAtB,CAAA;AADF,OAAA,MAEO;AACL,QAAA,WAAW,CAAX,KAAA,CAAA,CAAA,GAAsB,WAAW,CAAX,KAAA,CAAtB,CAAA;AACD;;AACD,MAAA,WAAW,CAAX,IAAA,GAAA,IAAA;AANF,KAAA,MAOO;AACL,MAAA,WAAW,CAAX,IAAA,GAAmB,WAAW,CAA9B,UAAA;;AAEA,UAAI,WAAW,CAAX,UAAA,KAAJ,GAAA,EAAoC;AAClC,QAAA,WAAW,CAAX,KAAA,CAAA,CAAA,GAAA,CAAA;AADF,OAAA,MAEO,IAAI,WAAW,CAAX,UAAA,KAAJ,GAAA,EAAoC;AACzC,QAAA,WAAW,CAAX,KAAA,CAAA,CAAA,GAAA,CAAA;AACD;AACF;AACF;;AAED,MAAM,MAAc,GAAG;AACrB,IAAA,EAAE,EADmB,gBAAA;AAErB,IAAA,MAAM,EAAE,CAFa,cAEb,CAFa;AAGrB,IAAA,OAAO,EAHc,WAAA;AAIrB,IAAA,SAAS,EAAE;AACT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AACvC,QAAA,WAAW,CAAX,UAAA,GAAA,IAAA;AAFO,OAAA;AAKT,mCAA6B,SAAA,uBAAA,CAAA,GAAA,EAAS;AACpC,QAAA,KAAK,CAAL,GAAK,CAAL;AACA,QAAA,eAAe,CAAf,GAAe,CAAf;AAPO,OAAA;AAST,kCAA4B,SAAA,sBAAA,CAAA,GAAA,EAAS;AACnC,QAAA,QAAI,CAAJ,GAAI,CAAJ;;AACA,QAAA,eAAe,CAAf,GAAe,CAAf;AAXO,OAAA;AAaT,iCAbS,GAAA;AAcT,0BAAoB;AAdX,KAJU;AAqBrB,IAAA,QAAQ,EAAE;AACR,MAAA,MAAM,EADE,KAAA;AAER,MAAA,mBAAmB,EAFX,KAAA;AAGR,MAAA,IAAI,EAHI,IAAA;;AAMR,MAAA,MAAM,EANE,GAAA;;;;;AAYR,MAAA,KAAK,EAZG,IAAA;;;;;AAkBR,MAAA,MAAM,EAAE;AAlBA,KArBW;AA0CrB,IAAA,OAAO,EA1Cc,IAAA;AA4CrB,IAAA,SA5CqB,EAAA,SAAA,SAAA,CAAA,KAAA,EA4C0B;AAAA,UAAlC,KAAkC,GAAA,KAAA,CAAlC,KAAkC;AAAA,UAA3B,IAA2B,GAAA,KAAA,CAA3B,IAA2B;AAAA,UAArB,IAAqB,GAAA,KAAA,CAArB,IAAqB;AAC7C,UAAM,OAAO,GAAG,MAAM,CAAtB,OAAA;AACA,UAAI,MAAc,GAAlB,IAAA;;AAEA,UAAA,IAAA,EAAU;AACR,QAAA,MAAM,GAAG,OAAO,CAAC,IAAI,GAArB,IAAgB,CAAhB;AADF,OAAA,MAEO,IAAA,KAAA,EAAW;AAChB,YAAI,SAAS,GAAb,EAAA;AADgB,YAAA,IAAA,GAGG,CAAA,KAAA,EAAA,QAAA,EAAA,MAAA,EAHH,OAGG,CAHH;;AAGhB,aAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAuD;AAAlD,cAAM,IAAI,GAAA,IAAA,CAAV,EAAU,CAAV;;AACH,cAAI,KAAK,CAAT,IAAS,CAAT,EAAiB;AACf,YAAA,SAAS,IAAT,IAAA;AACD;AACF;;AAED,QAAA,MAAM,GAAG,OAAO,CAAhB,SAAgB,CAAhB;AACD;;AAED,aAAA,MAAA;AA9DmB,KAAA;AAiErB,IAAA,aAAa,EAAE;AAjEM,GAAvB;qBAoEe,M;;;;;;;;;ACjff;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;qBAEe;AACb,IAAA,EAAE,EADW,SAAA;AAEb,IAAA,OAFa,EAAA,SAAA,OAAA,CAAA,KAAA,EAEU;AACrB,MAAA,KAAK,CAAL,SAAA,CAAgB,UAAA,CAAhB,OAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,UAAA,CAAhB,OAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,UAAA,CAAhB,OAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,UAAA,CAAhB,OAAA;AACD;AAPY,G;;;;;;;;;ACPf,MAAI,QAAQ,GAAZ,CAAA;;AACA,MAAA,QAAA;;AACA,MAAA,OAAA;;AAEA,WAAA,SAAA,CAAA,MAAA,EAAmD;AACjD,IAAA,QAAO,GAAG,MAAM,CAAhB,qBAAA;AACA,IAAA,OAAM,GAAG,MAAM,CAAf,oBAAA;;AAEA,QAAI,CAAJ,QAAA,EAAc;AACZ,UAAM,OAAO,GAAG,CAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAhB,GAAgB,CAAhB;;AAEA,WAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,OAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA8B;AAAzB,YAAM,MAAM,GAAI,OAAJ,CAAZ,EAAY,CAAZ;AACH,QAAA,QAAO,GAAG,MAAM,CAAA,GAAA,MAAA,CAAA,MAAA,EAAhB,uBAAgB,CAAA,CAAhB;AACA,QAAA,OAAM,GACJ,MAAM,CAAA,GAAA,MAAA,CAAA,MAAA,EAAN,sBAAM,CAAA,CAAN,IACA,MAAM,CAAA,GAAA,MAAA,CAAA,MAAA,EAFR,6BAEQ,CAAA,CAFR;AAGD;AACF;;AAED,IAAA,QAAO,GAAG,QAAO,IAAI,QAAO,CAAP,IAAA,CAArB,MAAqB,CAArB;AACA,IAAA,OAAM,GAAG,OAAM,IAAI,OAAM,CAAN,IAAA,CAAnB,MAAmB,CAAnB;;AAEA,QAAI,CAAJ,QAAA,EAAc;AACZ,MAAA,QAAO,GAAG,SAAA,OAAA,CAAA,QAAA,EAAc;AACtB,YAAM,QAAQ,GAAG,IAAI,CAArB,GAAiB,EAAjB;AACA,YAAM,UAAU,GAAG,IAAI,CAAJ,GAAA,CAAA,CAAA,EAAY,MAAM,QAAQ,GAA7C,QAA+B,CAAZ,CAAnB;AACA,YAAM,KAAK,GAAG,MAAM,CAAN,UAAA,CAAkB,YAAM;;AAEpC,UAAA,QAAQ,CAAC,QAAQ,GAAjB,UAAQ,CAAR;AAFY,SAAA,EAAd,UAAc,CAAd;AAKA,QAAA,QAAQ,GAAG,QAAQ,GAAnB,UAAA;AACA,eAAA,KAAA;AATF,OAAA;;AAYA,MAAA,OAAM,GAAG,SAAA,MAAA,CAAA,KAAA,EAAA;AAAA,eAAW,YAAY,CAAvB,KAAuB,CAAvB;AAAT,OAAA;AACD;AACF;;sBAEc;AACb,IAAA,OAAO,EAAE,SAAA,OAAA,CAAA,QAAA,EAAA;AAAA,aAAoC,QAAO,CAA3C,QAA2C,CAA3C;AADI,KAAA;AAEb,IAAA,MAAM,EAAE,SAAA,MAAA,CAAA,KAAA,EAAA;AAAA,aAAmB,OAAM,CAAzB,KAAyB,CAAzB;AAFK,KAAA;AAGb,IAAA,IAAI,EAAJ;AAHa,G;;;;;;;;;;;;;ACnCf;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;AA6BA,WAAA,WAAA,CAAA,KAAA,EAAgC;AAAA,QACtB,QADsB,GACA,KADA,CAAA,QAAA;AAAA,QACZ,OADY,GACA,KADA,CAAA,OAAA;AAG9B,IAAA,KAAK,CAAL,UAAA,GAAA,UAAA;;AACA,IAAA,UAAU,CAAV,GAAA,GAAiB,YAAA;AAAA,aAAM,KAAK,CAAX,GAAM,EAAN;AAAjB,KAAA;;AAEA,IAAA,OAAO,CAAP,cAAA,CAAA,UAAA,GAAA,IAAA;AACA,IAAA,QAAQ,CAAR,SAAA,CAAA,UAAA,GAAgC,UAAU,CAA1C,QAAA;AACD;;AAED,MAAM,UAAU,GAAG;AACjB,IAAA,QAAQ,EAAE;AACR,MAAA,OAAO,EADC,KAAA;AAER,MAAA,MAAM,EAFE,EAAA;;AAKR,MAAA,SAAS,EALD,IAAA;;AAQR,MAAA,KAAK,EAAE;AARC,KADO;AAYjB,IAAA,GAAG,EAAE,IAAI,CAZQ,GAAA;AAcjB,IAAA,WAAW,EAdM,IAAA;AAejB,IAAA,CAAC,EAfgB,CAAA;;;AAkBjB,IAAA,CAAC,EAlBgB,CAAA;AAmBjB,IAAA,CAAC,EAnBgB,CAAA;AAqBjB,IAAA,WAAW,EArBM,KAAA;AAsBjB,IAAA,QAAQ,EAtBS,CAAA;AAuBjB,IAAA,MAAM,EAvBW,CAAA;AAwBjB,IAAA,KAAK,EAxBY,CAAA;AA0BjB,IAAA,KA1BiB,EAAA,SAAA,KAAA,CAAA,WAAA,EA0BgB;AAC/B,MAAA,UAAU,CAAV,WAAA,GAAA,IAAA;;AACA,MAAA,QAAA,CAAA,OAAA,CAAA,MAAA,CAAW,UAAU,CAArB,CAAA;;AAEA,MAAA,WAAW,CAAX,UAAA,GAAA,UAAA;AACA,MAAA,UAAU,CAAV,WAAA,GAAA,WAAA;AACA,MAAA,UAAU,CAAV,QAAA,GAAsB,UAAU,CAAhC,GAAsB,EAAtB;AACA,MAAA,UAAU,CAAV,CAAA,GAAe,QAAA,CAAA,OAAA,CAAA,OAAA,CAAY,UAAU,CAArC,MAAe,CAAf;AAjCe,KAAA;AAoCjB,IAAA,IApCiB,EAAA,SAAA,IAAA,GAoCT;AACN,MAAA,UAAU,CAAV,WAAA,GAAA,KAAA;;AACA,UAAI,UAAU,CAAd,WAAA,EAA4B;AAC1B,QAAA,UAAU,CAAV,WAAA,CAAA,UAAA,GAAA,IAAA;AACD;;AACD,MAAA,QAAA,CAAA,OAAA,CAAA,MAAA,CAAW,UAAU,CAArB,CAAA;AAzCe,KAAA;;AA6CjB,IAAA,MA7CiB,EAAA,SAAA,MAAA,GA6CP;AAAA,UACA,WADA,GACgB,UADhB,CAAA,WAAA;AAAA,UAEA,YAFA,GAE0B,WAF1B,CAAA,YAAA;AAAA,UAEc,OAFd,GAE0B,WAF1B,CAAA,OAAA;AAGR,UAAM,UAAU,GAAG,WAAW,CAAX,QAAA,CAAnB,IAAA;AACA,UAAM,OAAO,GAAG,YAAY,CAAZ,OAAA,CAAA,UAAA,EAAhB,UAAA;AACA,UAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAR,SAAA,EAAA,YAAA,EAA9B,OAA8B,CAA9B;AACA,UAAM,GAAG,GAAG,UAAU,CANd,GAMI,EAAZ,CANQ,CAAA;;AAQR,UAAM,EAAE,GAAG,CAAC,GAAG,GAAG,UAAU,CAAjB,QAAA,IARH,IAQR,CARQ,CAAA;;AAUR,UAAM,CAAC,GAAG,OAAO,CAAP,KAAA,GAAV,EAAA;;AAEA,UAAI,CAAC,IAAL,CAAA,EAAY;AACV,YAAM,QAAQ,GAAG;AACf,UAAA,CAAC,EAAE,UAAU,CAAV,CAAA,GADY,CAAA;AAEf,UAAA,CAAC,EAAE,UAAU,CAAV,CAAA,GAAe;AAFH,SAAjB;;AAKA,YAAI,QAAQ,CAAR,CAAA,IAAc,QAAQ,CAA1B,CAAA,EAA8B;AAC5B,cAAM,UAAU,GAAG,SAAS,CAA5B,SAA4B,CAA5B;;AAEA,cAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,SAAI,CAAJ,EAA0B;AACxB,YAAA,SAAS,CAAT,QAAA,CAAmB,QAAQ,CAA3B,CAAA,EAA+B,QAAQ,CAAvC,CAAA;AADF,WAAA,MAEO,IAAA,SAAA,EAAe;AACpB,YAAA,SAAS,CAAT,UAAA,IAAwB,QAAQ,CAAhC,CAAA;AACA,YAAA,SAAS,CAAT,SAAA,IAAuB,QAAQ,CAA/B,CAAA;AACD;;AAED,cAAM,SAAS,GAAG,SAAS,CAA3B,SAA2B,CAA3B;AACA,cAAM,KAAK,GAAG;AACZ,YAAA,CAAC,EAAE,SAAS,CAAT,CAAA,GAAc,UAAU,CADf,CAAA;AAEZ,YAAA,CAAC,EAAE,SAAS,CAAT,CAAA,GAAc,UAAU,CAAC;AAFhB,WAAd;;AAKA,cAAI,KAAK,CAAL,CAAA,IAAW,KAAK,CAApB,CAAA,EAAwB;AACtB,YAAA,YAAY,CAAZ,IAAA,CAAkB;AAChB,cAAA,IAAI,EADY,YAAA;AAEhB,cAAA,MAAM,EAFU,OAAA;AAGhB,cAAA,YAAY,EAHI,YAAA;AAIhB,cAAA,KAAK,EAJW,KAAA;AAKhB,cAAA,WAAW,EALK,WAAA;AAMhB,cAAA,SAAS,EAAT;AANgB,aAAlB;AAQD;AACF;;AAED,QAAA,UAAU,CAAV,QAAA,GAAA,GAAA;AACD;;AAED,UAAI,UAAU,CAAd,WAAA,EAA4B;AAC1B,QAAA,QAAA,CAAA,OAAA,CAAA,MAAA,CAAW,UAAU,CAArB,CAAA;;AACA,QAAA,UAAU,CAAV,CAAA,GAAe,QAAA,CAAA,OAAA,CAAA,OAAA,CAAY,UAAU,CAArC,MAAe,CAAf;AACD;AAjGc,KAAA;AAmGjB,IAAA,KAnGiB,EAAA,SAAA,KAAA,CAAA,YAAA,EAAA,UAAA,EAmG0C;AAAA,UAAA,qBAAA;;AACzD,UAAM,OAAO,GAAG,YAAY,CAA5B,OAAA;AAEA,aAAA,CAAA,qBAAA,GAAO,OAAO,CAAP,UAAO,CAAP,CAAP,UAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAO,qBAAA,CAAP,OAAA;AAtGe,KAAA;AAwGjB,IAAA,iBAxGiB,EAAA,SAAA,iBAAA,CAAA,IAAA,EA8Gd;AAAA,UALD,WAKC,GAAA,IAAA,CALD,WAKC;AAAA,UAJD,OAIC,GAAA,IAAA,CAJD,OAIC;;AACD,UACE,EAAE,WAAW,CAAX,WAAA,MAA6B,UAAU,CAAV,KAAA,CAAiB,WAAW,CAA5B,YAAA,EAA2C,WAAW,CAAX,QAAA,CAD5E,IACiC,CAA/B,CADF,EAEE;AACA;AACD;;AAED,UAAI,WAAW,CAAf,UAAA,EAA4B;AAC1B,QAAA,UAAU,CAAV,CAAA,GAAe,UAAU,CAAV,CAAA,GAAf,CAAA;AACA;AACD;;AAED,UAAA,GAAA;AACA,UAAA,KAAA;AACA,UAAA,MAAA;AACA,UAAA,IAAA;AAfC,UAiBO,YAjBP,GAiBiC,WAjBjC,CAAA,YAAA;AAAA,UAiBqB,OAjBrB,GAiBiC,WAjBjC,CAAA,OAAA;AAkBD,UAAM,UAAU,GAAG,WAAW,CAAX,QAAA,CAAnB,IAAA;AACA,UAAM,OAAO,GAAG,YAAY,CAAZ,OAAA,CAAA,UAAA,EAAhB,UAAA;AACA,UAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAR,SAAA,EAAA,YAAA,EAA9B,OAA8B,CAA9B;;AAEA,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,SAAI,CAAJ,EAA0B;AACxB,QAAA,IAAI,GAAG,OAAO,CAAP,OAAA,GAAkB,UAAU,CAAnC,MAAA;AACA,QAAA,GAAG,GAAG,OAAO,CAAP,OAAA,GAAkB,UAAU,CAAlC,MAAA;AACA,QAAA,KAAK,GAAG,OAAO,CAAP,OAAA,GAAkB,SAAS,CAAT,UAAA,GAAuB,UAAU,CAA3D,MAAA;AACA,QAAA,MAAM,GAAG,OAAO,CAAP,OAAA,GAAkB,SAAS,CAAT,WAAA,GAAwB,UAAU,CAA7D,MAAA;AAJF,OAAA,MAKO;AACL,YAAM,IAAI,GAAG,aAAQ,CAAR,oBAAA,CAAb,SAAa,CAAb;;AAEA,QAAA,IAAI,GAAG,OAAO,CAAP,OAAA,GAAkB,IAAI,CAAJ,IAAA,GAAY,UAAU,CAA/C,MAAA;AACA,QAAA,GAAG,GAAG,OAAO,CAAP,OAAA,GAAkB,IAAI,CAAJ,GAAA,GAAW,UAAU,CAA7C,MAAA;AACA,QAAA,KAAK,GAAG,OAAO,CAAP,OAAA,GAAkB,IAAI,CAAJ,KAAA,GAAa,UAAU,CAAjD,MAAA;AACA,QAAA,MAAM,GAAG,OAAO,CAAP,OAAA,GAAkB,IAAI,CAAJ,MAAA,GAAc,UAAU,CAAnD,MAAA;AACD;;AAED,MAAA,UAAU,CAAV,CAAA,GAAe,KAAK,GAAA,CAAA,GAAO,IAAI,GAAG,CAAH,CAAA,GAA/B,CAAA;AACA,MAAA,UAAU,CAAV,CAAA,GAAe,MAAM,GAAA,CAAA,GAAO,GAAG,GAAG,CAAH,CAAA,GAA/B,CAAA;;AAEA,UAAI,CAAC,UAAU,CAAf,WAAA,EAA6B;;AAE3B,QAAA,UAAU,CAAV,MAAA,GAAoB,OAAO,CAA3B,MAAA;AACA,QAAA,UAAU,CAAV,KAAA,GAAmB,OAAO,CAA1B,KAAA;AAEA,QAAA,UAAU,CAAV,KAAA,CAAA,WAAA;AACD;AACF;AA5JgB,GAAnB;;AA+JO,WAAA,YAAA,CAAA,KAAA,EAAA,YAAA,EAAA,OAAA,EAAiF;AACtF,WACE,CAAC,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,IAAmB,CAAA,GAAA,SAAA,CAAA,qBAAA,EAAA,KAAA,EAAA,YAAA,EAAnB,OAAmB,CAAnB,GAAD,KAAA,KAAoF,CAAA,GAAA,WAAA,CAAA,SAAA,EADtF,OACsF,CADtF;AAGD;;AAEM,WAAA,SAAA,CAAA,SAAA,EAAoC;AACzC,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,SAAI,CAAJ,EAA0B;AACxB,MAAA,SAAS,GAAG,MAAM,CAAN,QAAA,CAAZ,IAAA;AACD;;AAED,WAAO;AAAE,MAAA,CAAC,EAAE,SAAS,CAAd,UAAA;AAA2B,MAAA,CAAC,EAAE,SAAS,CAAC;AAAxC,KAAP;AACD;;AAEM,WAAA,aAAA,CAAA,SAAA,EAAwC;AAC7C,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,SAAI,CAAJ,EAA0B;AACxB,MAAA,SAAS,GAAG,MAAM,CAAN,QAAA,CAAZ,IAAA;AACD;;AAED,WAAO;AAAE,MAAA,CAAC,EAAE,SAAS,CAAd,WAAA;AAA4B,MAAA,CAAC,EAAE,SAAS,CAAC;AAAzC,KAAP;AACD;;AAEM,WAAA,kBAAA,CAAA,KAAA,EAAA,IAAA,EASL;AAAA,QAPE,WAOF,GAAA,KAAA,CAPE,WAOF;AAAA,QANE,OAMF,GAAA,KAAA,CANE,OAMF;AACA,QAAM,aAAa,GAAG,WAAW,IAAI,WAAW,CAAX,YAAA,CAAA,OAAA,CAAiC,WAAW,CAAX,QAAA,CAAjC,IAAA,EAArC,UAAA;;AAEA,QAAI,CAAA,aAAA,IAAkB,CAAC,aAAa,CAApC,OAAA,EAA8C;AAC5C,MAAA,IAAI;AACJ,aAAO;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX,OAAP;AACD;;AAED,QAAM,eAAe,GAAG,YAAY,CAAC,aAAa,CAAd,SAAA,EAA0B,WAAW,CAArC,YAAA,EAApC,OAAoC,CAApC;AAEA,QAAM,QAAQ,GAAG,SAAS,CAA1B,eAA0B,CAA1B;AACA,IAAA,IAAI;AACJ,QAAM,OAAO,GAAG,SAAS,CAAzB,eAAyB,CAAzB;AAEA,WAAO;AACL,MAAA,CAAC,EAAE,OAAO,CAAP,CAAA,GAAY,QAAQ,CADlB,CAAA;AAEL,MAAA,CAAC,EAAE,OAAO,CAAP,CAAA,GAAY,QAAQ,CAAC;AAFnB,KAAP;AAID;;AAED,MAAM,gBAAwB,GAAG;AAC/B,IAAA,EAAE,EAD6B,aAAA;AAE/B,IAAA,OAAO,EAFwB,WAAA;AAG/B,IAAA,SAAS,EAAE;AACT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AACvC,QAAA,WAAW,CAAX,UAAA,GAAA,IAAA;AAFO,OAAA;AAKT,8BAAwB,SAAA,mBAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AAC3C,QAAA,WAAW,CAAX,UAAA,GAAA,IAAA;AACA,QAAA,UAAU,CAAV,IAAA;;AACA,YAAI,UAAU,CAAd,WAAA,EAA4B;AAC1B,UAAA,UAAU,CAAV,WAAA,GAAA,IAAA;AACD;AAVM,OAAA;AAaT,2BAAqB,UAAU,CAbtB,IAAA;AAeT,kCAA4B,SAAA,sBAAA,CAAA,GAAA,EAAA;AAAA,eAAc,UAAU,CAAV,iBAAA,CAAd,GAAc,CAAd;AAAA;AAfnB;AAHoB,GAAjC;qBAsBe,gB;;;;;;;;;;;ACpRf;;AAAA;;AAEO,WAAA,QAAA,CAAA,MAAA,EAAA,OAAA,EAAiF;AACtF,QAAI,MAAM,GAAV,KAAA;AAEA,WAAO,YAAmB;AACxB,UAAI,CAAJ,MAAA,EAAa;AACX;;AAAE,QAAA,WAAA,CAAD,MAAC,CAAD,OAAC,CAAD,IAAC,CAAD,OAAC;;AACF,QAAA,MAAM,GAAN,IAAA;AACD;;AAED,aAAO,MAAM,CAAN,KAAA,CAAA,IAAA,EAAP,SAAO,CAAP;AANF,KAAA;AAQD;;AAEM,WAAA,UAAA,CAAA,IAAA,EAAA,GAAA,EAAwF;AAC7F,IAAA,IAAI,CAAJ,IAAA,GAAY,GAAG,CAAf,IAAA;AACA,IAAA,IAAI,CAAJ,IAAA,GAAY,GAAG,CAAf,IAAA;AACA,IAAA,IAAI,CAAJ,KAAA,GAAa,GAAG,CAAhB,KAAA;AAEA,WAAA,IAAA;AACD;;AAEM,MAAM,IAAI,GAAG,SAAP,IAAO,CAAA,CAAA,EAAA;AAAA,WAAgB,CAAC,IAAD,CAAA,GAAA,CAAA,GAAa,CAA7B,CAAA;AAAb,GAAA;;;;;;;;;;ACtBP;;AAAA;AACA;;AAAA;;AAwBA,WAAA,WAAA,CAAA,KAAA,EAAgC;AAAA,QAG5B,YAH4B,GAI1B,KAJ0B,CAAA,YAAA;;AAM9B,IAAA,YAAY,CAAZ,SAAA,CAAA,SAAA,GAAmC,SAAA,SAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAMpB;AACb,UAAM,MAAM,GAAG,oBAAoB,CAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAnC,KAAmC,CAAnC;;AAEA,UAAI,KAAA,OAAA,CAAJ,aAAA,EAAgC;AAC9B,eAAO,KAAA,OAAA,CAAA,aAAA,CAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,OAAA,EAAP,WAAO,CAAP;AACD;;AAED,aAAA,MAAA;AAbF,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,IAAA,YAAY,CAAZ,SAAA,CAAA,UAAA,GAAoC,CAAA,GAAA,SAAA,CAAA,QAAA,EAAS,UAAA,QAAA,EAAwC;AACnF,aAAO,KAAA,iBAAA,CAAA,YAAA,EAAP,QAAO,CAAP;AADkC,KAAA,EAApC,mGAAoC,CAApC;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,YAAY,CAAZ,SAAA,CAAA,SAAA,GAAmC,CAAA,GAAA,SAAA,CAAA,QAAA,EAAS,UAAA,QAAA,EAAwC;AAClF,aAAO,KAAA,iBAAA,CAAA,WAAA,EAAP,QAAO,CAAP;AADiC,KAAA,EAAnC,iGAAmC,CAAnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,IAAA,YAAY,CAAZ,SAAA,CAAA,aAAA,GAAA,aAAA;;;;;;;;;AASA,IAAA,YAAY,CAAZ,SAAA,CAAA,WAAA,GAAA,WAAA;AACD;;AAED,WAAA,oBAAA,CAAA,YAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAME;AACA,QAAM,IAAI,GAAG,YAAY,CAAZ,OAAA,CAAb,OAAa,CAAb;AACA,QAAM,OAAO,GACV,KAAD,CAAA,OAAC,IACD;AACE,SADF,CAAA;AAEE,SAFF,CAAA;AAGE,SAHF,CAAA;AAIE,SAAG;AAJL,MAKG,KAAD,CAPJ,MAEE,CAFF;AAQA,QAAM,GAAG,GAAG;AACV,MAAA,MAAM,EADI,IAAA;AAEV,MAAA,YAAY,EAFF,YAAA;AAGV,MAAA,WAAW,EAHD,WAAA;AAIV,MAAA,OAAO,EAJG,OAAA;AAKV,MAAA,IAAI,EALM,IAAA;AAMV,MAAA,OAAO,EAAP;AANU,KAAZ;AASA,IAAA,KAAK,CAAL,IAAA,CAAA,kBAAA,EAAA,GAAA;AAEA,WAAO,GAAG,CAAV,MAAA;AACD;;AAID,WAAA,WAAA,CAAA,QAAA,EAA8D;AAC5D,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,QAAI,CAAJ,EAAuB;AACrB,WAAA,OAAA,CAAA,WAAA,GAAA,QAAA;AAEA,aAAA,IAAA;AACD;;AAED,QAAI,QAAQ,KAAZ,IAAA,EAAuB;AACrB,aAAO,KAAA,OAAA,CAAP,WAAA;AAEA,aAAA,IAAA;AACD;;AAED,WAAO,KAAA,OAAA,CAAP,WAAA;AACD;;AAED,WAAA,aAAA,CAAA,OAAA,EAA0D;AACxD,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,OAAI,CAAJ,EAAsB;AACpB,WAAA,OAAA,CAAA,aAAA,GAAA,OAAA;AAEA,aAAA,IAAA;AACD;;AAED,QAAI,OAAO,KAAX,IAAA,EAAsB;AACpB,aAAO,KAAA,OAAA,CAAP,aAAA;AAEA,aAAA,IAAA;AACD;;AAED,WAAO,KAAA,OAAA,CAAP,aAAA;AACD;;qBAEc;AACb,IAAA,EAAE,EADW,gCAAA;AAEb,IAAA,OAAO,EAAP;AAFa,G;;;;;;;;;AClNf;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;;AA2DA,WAAA,WAAA,CAAA,KAAA,EAAgC;AAAA,QACN,QADM,GACiB,KADjB,CAAA,cAAA;AAAA,QACI,QADJ,GACiB,KADjB,CAAA,QAAA;AAG9B,IAAA,KAAK,CAAL,SAAA,CAAgB,uBAAA,CAAhB,OAAA;AAEA,IAAA,QAAQ,CAAR,IAAA,CAAA,aAAA,GAAA,IAAA;AACA,IAAA,QAAQ,CAAR,IAAA,CAAA,WAAA,GAAA,IAAA;AAEA,KAAA,GAAA,WAAA,CAAA,OAAA,EAAO,QAAQ,CAAf,SAAA,EAA2B;AACzB,MAAA,WAAW,EADc,KAAA;AAEzB,MAAA,GAAG,EAFsB,QAAA;AAGzB,MAAA,aAAa,EAHY,CAAA;AAIzB,MAAA,SAAS,EAJgB,IAAA;AAKzB,MAAA,UAAU,EALe,IAAA;;;AASzB,MAAA,YAAY,EAAE;AATW,KAA3B;;;;;;;;;;;;;AAuBA,IAAA,QAAQ,CAAR,eAAA,GAA2B,UAAA,QAAA,EAAA;AAAA,aAAsB,eAAe,CAAA,QAAA,EAArC,KAAqC,CAArC;AAA3B,KAAA;;AAEA,IAAA,KAAK,CAAL,SAAA,GAAkB;;AAEhB,MAAA,eAAe,EAFC,QAAA;AAGhB,MAAA,sBAAsB,EAHN,sBAAA;AAIhB,MAAA,aAAa,EAAE;AAJC,KAAlB;AAMD;;AAED,WAAA,aAAA,CAAA,IAAA,EAAA,KAAA,EAGE;AAAA,QAFE,WAEF,GAAA,IAAA,CAFE,WAEF;AAAA,QAFe,OAEf,GAAA,IAAA,CAFe,OAEf;AAAA,QAFwB,KAExB,GAAA,IAAA,CAFwB,KAExB;AAAA,QAF+B,WAE/B,GAAA,IAAA,CAF+B,WAE/B;AACA,QAAI,WAAW,CAAf,WAAI,EAAJ,EAA+B;AAE/B,QAAM,UAAU,GAAG,aAAa,CAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAhC,KAAgC,CAAhC;AACA,IAAA,OAAO,CAAA,WAAA,EAAA,UAAA,EAAP,KAAO,CAAP;AACD;;AAED,WAAA,aAAA,CAAA,KAAA,EAAA,KAAA,EAGE;AAAA,QAFE,WAEF,GAAA,KAAA,CAFE,WAEF;AAAA,QAFe,OAEf,GAAA,KAAA,CAFe,OAEf;AAAA,QAFwB,KAExB,GAAA,KAAA,CAFwB,KAExB;AAAA,QAF+B,WAE/B,GAAA,KAAA,CAF+B,WAE/B;AACA,QAAI,WAAW,CAAX,WAAA,KAAA,OAAA,IAAuC,WAAW,CAAlD,aAAA,IAAoE,WAAW,CAAnF,WAAwE,EAAxE,EAAmG;AAEnG,QAAM,UAAU,GAAG,aAAa,CAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAhC,KAAgC,CAAhC;AACA,IAAA,OAAO,CAAA,WAAA,EAAA,UAAA,EAAP,KAAO,CAAP;AACD;;AAED,WAAA,WAAA,CAAA,GAAA,EAAA,KAAA,EAA0E;AAAA,QAChE,WADgE,GAChD,GADgD,CAAA,WAAA;;AAGxE,QACE,CAAC,WAAW,CAAZ,aAAA,IACA,WAAW,CADX,WACA,EADA,IAEA,CAAC,WAAW,CAFZ,eAAA,IAGA,CAAC,WAAW,CAAX,QAAA,CAJH,IAAA,EAKE;AACA;AACD;;AAED,IAAA,KAAK,CAAL,IAAA,CAAA,wBAAA,EAAA,GAAA;AAZwE,QAchE,YAdgE,GAc/C,WAd+C,CAAA,YAAA;AAexE,QAAM,UAAU,GAAI,WAAD,CAAA,QAAC,CAApB,IAAA;;AAEA,QAAI,UAAU,IAAd,YAAA,EAAgC;;AAE9B,UACE,YAAY,CAAZ,OAAA,CAAA,UAAA,EAAA,WAAA,IACA,CAAC,sBAAsB,CAAA,YAAA,EAAe,WAAW,CAA1B,OAAA,EAAoC,WAAW,CAA/C,QAAA,EAFzB,KAEyB,CAFzB,EAGE;AACA,QAAA,WAAW,CAAX,IAAA;AAJF,OAAA,MAKO;AACL,QAAA,WAAW,CAAX,KAAA,CAAkB,WAAW,CAA7B,QAAA,EAAA,YAAA,EAAsD,WAAW,CAAjE,OAAA;AACA,QAAA,oBAAoB,CAAA,WAAA,EAApB,KAAoB,CAApB;AACD;AACF;AACF;;AAED,WAAA,iBAAA,CAAA,KAAA,EAAA,KAAA,EAAyF;AAAA,QAA3D,WAA2D,GAAA,KAAA,CAA3D,WAA2D;AAAA,QAC/E,YAD+E,GAC9D,WAD8D,CAAA,YAAA;;AAGvF,QAAI,YAAY,IAAI,YAAY,CAAZ,OAAA,CAApB,WAAA,EAAsD;AACpD,MAAA,SAAS,CAAC,WAAW,CAAZ,OAAA,EAAA,EAAA,EAAT,KAAS,CAAT;AACD;G1BrKH,C;;;;A0B0KA,WAAA,cAAA,CAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,KAAA,EAME;AACA,QACE,YAAY,CAAZ,eAAA,CAA6B,YAAY,CAAZ,OAAA,CAAqB,MAAM,CAAxD,IAA6B,CAA7B,EAAA,OAAA,EAAA,WAAA,KACA,YAAY,CAAZ,OAAA,CAAqB,MAAM,CAA3B,IAAA,EADA,OAAA,IAEA,sBAAsB,CAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAHxB,KAGwB,CAHxB,EAIE;AACA,aAAA,MAAA;AACD;;AAED,WAAA,IAAA;AACD;;AAED,WAAA,eAAA,CAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAQE;AACA,SAAK,IAAI,CAAC,GAAL,CAAA,EAAW,GAAG,GAAG,OAAO,CAA7B,MAAA,EAAsC,CAAC,GAAvC,GAAA,EAA+C,CAA/C,EAAA,EAAoD;AAClD,UAAM,KAAK,GAAG,OAAO,CAArB,CAAqB,CAArB;AACA,UAAM,YAAY,GAAG,aAAa,CAAlC,CAAkC,CAAlC;AACA,UAAM,WAAW,GAAG,KAAK,CAAL,SAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAApB,YAAoB,CAApB;;AAEA,UAAI,CAAJ,WAAA,EAAkB;AAChB;AACD;;AAED,UAAM,MAAM,GAAG,cAAc,CAAA,WAAA,EAAA,KAAA,EAAA,YAAA,EAAA,WAAA,EAA7B,KAA6B,CAA7B;;AAEA,UAAA,MAAA,EAAY;AACV,eAAO;AACL,UAAA,MAAM,EADD,MAAA;AAEL,UAAA,YAAY,EAFP,KAAA;AAGL,UAAA,OAAO,EAAE;AAHJ,SAAP;AAKD;AACF;;AAED,WAAO;AAAE,MAAA,MAAM,EAAR,IAAA;AAAgB,MAAA,YAAY,EAA5B,IAAA;AAAoC,MAAA,OAAO,EAAE;AAA7C,KAAP;AACD;;AAED,WAAA,aAAA,CAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAME;AACA,QAAI,OAAuB,GAA3B,EAAA;AACA,QAAI,aAAwB,GAA5B,EAAA;AAEA,QAAI,OAAO,GAAX,WAAA;;AAEA,aAAA,WAAA,CAAA,YAAA,EAAkD;AAChD,MAAA,OAAO,CAAP,IAAA,CAAA,YAAA;AACA,MAAA,aAAa,CAAb,IAAA,CAAA,OAAA;AACD;;AAED,WAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAP,OAAO,CAAP,EAA4B;AAC1B,MAAA,OAAO,GAAP,EAAA;AACA,MAAA,aAAa,GAAb,EAAA;AAEA,MAAA,KAAK,CAAL,aAAA,CAAA,YAAA,CAAA,OAAA,EAAA,WAAA;AAEA,UAAM,UAAU,GAAG,eAAe,CAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAlC,KAAkC,CAAlC;;AAUA,UAAI,UAAU,CAAV,MAAA,IAAqB,CAAC,UAAU,CAAV,YAAA,CAAA,OAAA,CAAgC,UAAU,CAAV,MAAA,CAAhC,IAAA,EAA1B,WAAA,EAA+F;AAC7F,eAAA,UAAA;AACD;;AAED,MAAA,OAAO,GAAG,aAAQ,CAAR,UAAA,CAAV,OAAU,CAAV;AACD;;AAED,WAAO;AAAE,MAAA,MAAM,EAAR,IAAA;AAAgB,MAAA,YAAY,EAA5B,IAAA;AAAoC,MAAA,OAAO,EAAE;AAA7C,KAAP;AACD;;AAED,WAAA,OAAA,CAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAYE;AAAA,QATE,MASF,GAAA,KAAA,CATE,MASF;AAAA,QARE,YAQF,GAAA,KAAA,CARE,YAQF;AAAA,QAPE,OAOF,GAAA,KAAA,CAPE,OAOF;AACA,IAAA,MAAM,GAAG,MAAM,IAAI;AAAE,MAAA,IAAI,EAAE;AAAR,KAAnB;AAEA,IAAA,WAAW,CAAX,YAAA,GAAA,YAAA;AACA,IAAA,WAAW,CAAX,OAAA,GAAA,OAAA;AACA,KAAA,GAAA,SAAA,CAAA,UAAA,EAAW,WAAW,CAAtB,QAAA,EAAA,MAAA;AAEA,IAAA,WAAW,CAAX,IAAA,GAAmB,YAAY,IAAI,MAAM,CAAtB,IAAA,GAA8B,YAAY,CAAZ,OAAA,CAA9B,OAA8B,CAA9B,GAAnB,IAAA;AAEA,IAAA,oBAAoB,CAAA,WAAA,EAApB,KAAoB,CAApB;AAEA,IAAA,KAAK,CAAL,IAAA,CAAA,oBAAA,EAAiC;AAAE,MAAA,WAAW,EAAX;AAAF,KAAjC;AACD;;AAED,WAAA,sBAAA,CAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAKE;AACA,QAAM,OAAO,GAAG,YAAY,CAA5B,OAAA;AACA,QAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAd,IAAO,CAAP,CAAnB,GAAA;AACA,QAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAd,IAAO,CAAP,CAAtB,aAAA;AACA,QAAM,YAAY,GAAG,KAAK,CAAL,SAAA,CAArB,eAAA;AACA,QAAI,kBAAkB,GAAtB,CAAA;AACA,QAAI,iBAAiB,GAArB,CAAA;AACA,QAAI,YAAY,GAPhB,CAOA,CAPA,CAAA;;AAUA,QAAI,EAAE,UAAU,IAAV,aAAA,IAAN,YAAI,CAAJ,EAAoD;AAClD,aAAA,KAAA;AACD;;AAED,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,EAAA,EAAA,EAAmD;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,EAAzB,CAAyB;AAAA,UAAxC,WAAwC,GAAA,KAAA;AACjD,UAAM,WAAW,GAAG,WAAW,CAAX,QAAA,CAApB,IAAA;;AAEA,UAAI,CAAC,WAAW,CAAhB,WAAK,EAAL,EAAgC;AAC9B;AACD;;AAED,MAAA,kBAAkB;;AAElB,UAAI,kBAAkB,IAAtB,YAAA,EAAwC;AACtC,eAAA,KAAA;AACD;;AAED,UAAI,WAAW,CAAX,YAAA,KAAJ,YAAA,EAA+C;AAC7C;AACD;;AAED,MAAA,iBAAiB,IAAI,WAAW,KAAK,MAAM,CAAtB,IAAA,GAAA,CAAA,GAArB,CAAA;;AAEA,UAAI,iBAAiB,IAArB,UAAA,EAAqC;AACnC,eAAA,KAAA;AACD;;AAED,UAAI,WAAW,CAAX,OAAA,KAAJ,OAAA,EAAqC;AACnC,QAAA,YAAY;;AAEZ,YAAI,WAAW,KAAK,MAAM,CAAtB,IAAA,IAA+B,YAAY,IAA/C,aAAA,EAAkE;AAChE,iBAAA,KAAA;AACD;AACF;AACF;;AAED,WAAO,YAAY,GAAnB,CAAA;AACD;;AAED,WAAA,eAAA,CAAA,QAAA,EAAA,KAAA,EAAuD;AACrD,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,QAAI,CAAJ,EAAyB;AACvB,MAAA,KAAK,CAAL,SAAA,CAAA,eAAA,GAAA,QAAA;AAEA,aAAA,IAAA;AACD;;AAED,WAAO,KAAK,CAAL,SAAA,CAAP,eAAA;AACD;;AAED,WAAA,SAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAoE;AAAA,QAC3C,iBAD2C,GACrB,KAAK,CADgB,SACrB,CADqB,aAAA;;AAGlE,QAAI,iBAAiB,IAAI,iBAAiB,KAA1C,OAAA,EAAwD;AACtD,MAAA,iBAAiB,CAAjB,KAAA,CAAA,MAAA,GAAA,EAAA;AACD;;AAED,IAAA,OAAO,CAAP,aAAA,CAAA,eAAA,CAAA,KAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,OAAO,CAAP,KAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,KAAK,CAAL,SAAA,CAAA,aAAA,GAAgC,MAAM,GAAA,OAAA,GAAtC,IAAA;AACD;;AAED,WAAA,oBAAA,CAAA,WAAA,EAAA,KAAA,EAAgG;AAAA,QACtF,YADsF,GAClD,WADkD,CAAA,YAAA;AAAA,QACxE,OADwE,GAClD,WADkD,CAAA,OAAA;AAAA,QAC/D,QAD+D,GAClD,WADkD,CAAA,QAAA;;AAG9F,QAAI,EAAE,WAAW,CAAX,WAAA,KAAA,OAAA,IAAA,YAAA,IAAuD,YAAY,CAAZ,OAAA,CAA7D,WAAI,CAAJ,EAAgG;;AAE9F,UAAI,KAAK,CAAL,SAAA,CAAJ,aAAA,EAAmC;AACjC,QAAA,SAAS,CAAC,KAAK,CAAL,SAAA,CAAD,aAAA,EAAA,EAAA,EAAT,KAAS,CAAT;AACD;;AAED;AACD;;AAED,QAAI,MAAM,GAAV,EAAA;;AAEA,QAAI,QAAQ,CAAZ,IAAA,EAAmB;AACjB,UAAM,aAAa,GAAG,YAAY,CAAZ,OAAA,CAAqB,QAAQ,CAA7B,IAAA,EAAtB,aAAA;;AAEA,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,aAAI,CAAJ,EAA4B;AAC1B,QAAA,MAAM,GAAG,aAAa,CAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAkC,WAAW,CAAnE,YAAsB,CAAtB;AADF,OAAA,MAEO;AACL,QAAA,MAAM,GAAG,KAAK,CAAL,OAAA,CAAA,GAAA,CAAkB,QAAQ,CAA1B,IAAA,EAAA,SAAA,CAAT,QAAS,CAAT;AACD;AACF;;AAED,IAAA,SAAS,CAAC,WAAW,CAAZ,OAAA,EAAsB,MAAM,IAA5B,EAAA,EAAT,KAAS,CAAT;AACD;;AAED,MAAM,SAAiB,GAAG;AACxB,IAAA,EAAE,EADsB,iBAAA;AAExB,IAAA,MAAM,EAAE,CAFgB,SAEhB,CAFgB;AAGxB,IAAA,OAAO,EAHiB,WAAA;AAIxB,IAAA,SAAS,EAAE;AACT,2BADS,aAAA;AAET,2BAAqB,SAAA,gBAAA,CAAA,GAAA,EAAA,KAAA,EAAgB;AACnC,QAAA,aAAa,CAAA,GAAA,EAAb,KAAa,CAAb;AACA,QAAA,WAAW,CAAA,GAAA,EAAX,KAAW,CAAX;AAJO,OAAA;AAMT,2BAAqB;AANZ,KAJa;AAYxB,IAAA,eAAe,EAZS,eAAA;AAaxB,IAAA,sBAAsB,EAbE,sBAAA;AAcxB,IAAA,cAAc,EAAd;AAdwB,GAA1B;qBAiBe,S;;;;;;;;;ACrZf;;AAAA;AACA;;AAAA;AAEA;;AAAA;;AAEA,WAAA,WAAA,CAAA,IAAA,EAAA,KAAA,EAA2G;AAAA,QAAnF,WAAmF,GAAA,IAAA,CAAnF,WAAmF;AAAA,QAAtE,WAAsE,GAAA,IAAA,CAAtE,WAAsE;AAAA,QAAzD,EAAyD,GAAA,IAAA,CAAzD,EAAyD;AAAA,QAArD,EAAqD,GAAA,IAAA,CAArD,EAAqD;AACzG,QAAI,WAAW,CAAX,QAAA,CAAA,IAAA,KAAJ,MAAA,EADyG,OAAA,CAAA;;AAIzG,QAAM,IAAI,GAAG,IAAI,CAAJ,GAAA,CAAb,EAAa,CAAb;AACA,QAAM,IAAI,GAAG,IAAI,CAAJ,GAAA,CAAb,EAAa,CAAb;AACA,QAAM,aAAa,GAAG,WAAW,CAAX,YAAA,CAAA,OAAA,CAAtB,IAAA;AACA,QAAM,SAAS,GAAG,aAAa,CAA/B,SAAA;AACA,QAAM,WAAW,GAAG,IAAI,GAAJ,IAAA,GAAA,GAAA,GAAoB,IAAI,GAAJ,IAAA,GAAA,GAAA,GAAxC,IAAA;AAEA,IAAA,WAAW,CAAX,QAAA,CAAA,IAAA,GACE,aAAa,CAAb,QAAA,KAAA,OAAA,GACK,WAAW,CADhB,CACgB,CADhB,GAAA;AAEI,IAAA,aAAa,CAbsF,QAUzG,CAVyG,CAAA;;AAgBzG,QAAI,WAAW,KAAX,IAAA,IAAwB,SAAS,KAAjC,IAAA,IAA8C,SAAS,KAA3D,WAAA,EAA6E;;AAE3E;AAAE,MAAA,WAAD,CAAA,QAAC,CAAD,IAAC,GAFyE,IAEzE,CAFyE,CAAA;;AAK3E,UAAI,OAAO,GAAX,WAAA;;AAEA,UAAM,YAAY,GAAG,SAAf,YAAe,CAAA,YAAA,EAA2D;AAC9E,YAAI,YAAY,KAAK,WAAW,CAAhC,YAAA,EAA+C;AAE/C,YAAM,OAAO,GAAG,WAAW,CAAX,YAAA,CAAA,OAAA,CAAhB,IAAA;;AAEA,YAAI,CAAC,OAAO,CAAR,WAAA,IAAwB,YAAY,CAAZ,eAAA,CAAA,OAAA,EAAA,OAAA,EAA5B,WAA4B,CAA5B,EAAyF;AACvF,cAAM,MAAM,GAAG,YAAY,CAAZ,SAAA,CACb,WAAW,CADE,WAAA,EAEb,WAAW,CAFE,SAAA,EAAA,WAAA,EAAf,OAAe,CAAf;;AAOA,cACE,MAAM,IACN,MAAM,CAAN,IAAA,KADA,MAAA,IAEA,cAAc,CAAA,WAAA,EAFd,YAEc,CAFd,IAGA,QAAA,CAAA,OAAA,CAAA,cAAA,CAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAJF,KAIE,CAJF,EAKE;AACA,mBAAA,YAAA;AACD;AACF;AA5BwE,OAO3E,CAP2E,CAAA;;;AAgC3E,aAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAP,OAAO,CAAP,EAA4B;AAC1B,YAAM,YAAY,GAAG,KAAK,CAAL,aAAA,CAAA,YAAA,CAAA,OAAA,EAArB,YAAqB,CAArB;;AAEA,YAAA,YAAA,EAAkB;AAChB;AAAE,UAAA,WAAD,CAAA,QAAC,CAAD,IAAC,GAAD,MAAC;AACF,UAAA,WAAW,CAAX,YAAA,GAAA,YAAA;AACA,UAAA,WAAW,CAAX,OAAA,GAAA,OAAA;AACA;AACD;;AAED,QAAA,OAAO,GAAG,CAAA,GAAA,aAAA,CAAA,UAAA,EAAV,OAAU,CAAV;AACD;AACF;AACF;;AAED,WAAA,cAAA,CAAA,SAAA,EAAA,YAAA,EAAwE;AACtE,QAAI,CAAJ,YAAA,EAAmB;AACjB,aAAA,KAAA;AACD;;AAED,QAAM,QAAQ,GAAG,YAAY,CAAZ,OAAA,CAAA,IAAA,CAAjB,SAAA;AAEA,WAAO,SAAS,KAAT,IAAA,IAAsB,QAAQ,KAA9B,IAAA,IAA2C,QAAQ,KAA1D,SAAA;AACD;;sBAEc;AACb,IAAA,EAAE,EADW,qBAAA;AAEb,IAAA,SAAS,EAAE;AAAE,gCAA0B;AAA5B;AAFE,G;;;;;;;;;AC/Ef;;AAAA;;AAeA,WAAA,YAAA,CAAA,KAAA,EAAgC;AAAA,QACtB,QADsB,GACT,KADS,CAAA,QAAA;AAG9B,IAAA,KAAK,CAAL,SAAA,CAAgB,QAAA,CAAhB,OAAA;AAEA,IAAA,QAAQ,CAAR,SAAA,CAAA,IAAA,GAAA,CAAA;AACA,IAAA,QAAQ,CAAR,SAAA,CAAA,KAAA,GAAA,CAAA;AACD;;AAED,WAAA,eAAA,CAAA,WAAA,EAAoD;AAClD,QAAM,UAAU,GAAG,WAAW,CAAX,QAAA,IAAwB,WAAW,CAAX,QAAA,CAA3C,IAAA;;AAEA,QAAI,CAAJ,UAAA,EAAiB;AACf,aAAA,IAAA;AACD;;AAED,QAAM,OAAO,GAAG,WAAW,CAAX,YAAA,CAAhB,OAAA;AAEA,WAAO,OAAO,CAAP,UAAO,CAAP,CAAA,IAAA,IAA4B,OAAO,CAAP,UAAO,CAAP,CAAnC,KAAA;AACD;;AAED,MAAM,IAAY,GAAG;AACnB,IAAA,EAAE,EADiB,iBAAA;AAEnB,IAAA,OAAO,EAFY,YAAA;AAGnB,IAAA,SAAS,EAAE;AACT,0BAAoB,SAAA,eAAA,CAAA,IAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,IAAA,CAAlB,WAAkB;AACvC,QAAA,WAAW,CAAX,kBAAA,GAAA,IAAA;AAFO,OAAA;AAKT,4BAAsB,SAAA,iBAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AACzC,YAAM,IAAI,GAAG,eAAe,CAA5B,WAA4B,CAA5B;;AAEA,YAAI,IAAI,GAAR,CAAA,EAAc;AACZ,UAAA,WAAW,CAAX,kBAAA,GAAiC,UAAU,CAAC,YAAM;AAChD,YAAA,WAAW,CAAX,KAAA,CAAkB,WAAW,CAA7B,QAAA,EAAwC,WAAW,CAAnD,YAAA,EAAkE,WAAW,CAA7E,OAAA;AADyC,WAAA,EAA3C,IAA2C,CAA3C;AAGD;AAZM,OAAA;AAeT,2BAAqB,SAAA,gBAAA,CAAA,KAAA,EAAgC;AAAA,YAA7B,WAA6B,GAAA,KAAA,CAA7B,WAA6B;AAAA,YAAhB,SAAgB,GAAA,KAAA,CAAhB,SAAgB;;AACnD,YAAI,WAAW,CAAX,kBAAA,IAAkC,WAAW,CAA7C,eAAA,IAAiE,CAArE,SAAA,EAAiF;AAC/E,UAAA,YAAY,CAAC,WAAW,CAAxB,kBAAY,CAAZ;AACA,UAAA,WAAW,CAAX,kBAAA,GAAA,IAAA;AACD;AAnBM,OAAA;;AAuBT,gCAA0B,SAAA,oBAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AAC7C,YAAM,YAAY,GAAG,eAAe,CAApC,WAAoC,CAApC;;AAEA,YAAI,YAAY,GAAhB,CAAA,EAAsB;AACpB,UAAA,WAAW,CAAX,QAAA,CAAA,IAAA,GAAA,IAAA;AACD;AACF;AA7BQ,KAHQ;AAkCnB,IAAA,eAAe,EAAf;AAlCmB,GAArB;sBAoCe,I;;;;;;;;;ACzEf;;AAAA;AACA;;AAAA;AACA;;AAAA;sBAEe;AACb,IAAA,EAAE,EADW,YAAA;AAEb,IAAA,OAFa,EAAA,SAAA,OAAA,CAAA,KAAA,EAEU;AACrB,MAAA,KAAK,CAAL,SAAA,CAAgB,QAAA,CAAhB,OAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,SAAA,CAAhB,OAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,aAAA,CAAhB,OAAA;AACD;AANY,G;;;;;;;;;;ACFf;;AAAA;AACA;;AAAA;AACA;;AAAA;;AAYA,WAAA,cAAA,CAAA,QAAA,EAA6E;AAC3E,QAAI,wBAAA,IAAA,CAAJ,QAAI,CAAJ,EAA4C;AAC1C,WAAA,OAAA,CAAA,cAAA,GAAA,QAAA;AACA,aAAA,IAAA;AACD;;AAED,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,QAAI,CAAJ,EAAuB;AACrB,WAAA,OAAA,CAAA,cAAA,GAA8B,QAAQ,GAAA,QAAA,GAAtC,OAAA;AACA,aAAA,IAAA;AACD;;AAED,WAAO,KAAA,OAAA,CAAP,cAAA;AACD;;AAED,WAAA,sBAAA,CAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAyF;AACvF,QAAM,OAAO,GAAG,YAAY,CAAZ,OAAA,CAAhB,cAAA;AAEA,QAAI,OAAO,KAAX,OAAA,EAAyB;;AAEzB,QAAI,OAAO,KAAX,QAAA,EAA0B;AACxB,MAAA,KAAK,CAAL,cAAA;AACA;AAPqF,KAAA,CAAA;;;;;;AAevF,QAAI,KAAK,CAAL,MAAA,CAAA,eAAA,IAAgC,sBAAA,IAAA,CAA2B,KAAK,CAApE,IAAoC,CAApC,EAA4E;AAC1E,UAAM,GAAG,GAAG,CAAA,GAAA,WAAA,CAAA,SAAA,EAAU,KAAK,CAAf,MAAA,EAAZ,QAAA;AACA,UAAM,UAAU,GAAG,KAAK,CAAL,aAAA,CAAnB,GAAmB,CAAnB;;AAEA,UAAI,EAAE,UAAU,IAAI,UAAU,CAA1B,MAAA,KAAsC,UAAU,CAAV,MAAA,CAAA,OAAA,KAA1C,KAAA,EAA+E;AAC7E;AACD;AArBoF,KAAA,CAAA;;;AAyBvF,QAAI,uCAAA,IAAA,CAA4C,KAAK,CAArD,IAAI,CAAJ,EAA6D;AAC3D;AA1BqF,KAAA,CAAA;;;AA8BvF,QACE,OAAA,CAAA,OAAA,CAAA,OAAA,CAAW,KAAK,CAAhB,MAAA,KACA,CAAA,GAAA,aAAA,CAAA,eAAA,EAAgB,KAAK,CAArB,MAAA,EAFF,uEAEE,CAFF,EAGE;AACA;AACD;;AAED,IAAA,KAAK,CAAL,cAAA;AACD;;AAED,WAAA,kBAAA,CAAA,IAAA,EAA4G;AAAA,QAA7E,WAA6E,GAAA,IAAA,CAA7E,WAA6E;AAAA,QAAhE,KAAgE,GAAA,IAAA,CAAhE,KAAgE;;AAC1G,QAAI,WAAW,CAAf,YAAA,EAA8B;AAC5B,MAAA,WAAW,CAAX,YAAA,CAAA,sBAAA,CAAA,KAAA;AACD;AACF;;AAEM,WAAA,YAAA,CAAA,KAAA,EAAgC;;AAAA,QAE7B,YAF6B,GAEZ,KAFY,CAAA,YAAA;;;;;;;;;;;;AAcrC,IAAA,YAAY,CAAZ,SAAA,CAAA,cAAA,GAAA,cAAA;;AAEA,IAAA,YAAY,CAAZ,SAAA,CAAA,sBAAA,GAAgD,UAAA,KAAA,EAAiB;AAC/D,aAAO,sBAAsB,CAAA,IAAA,EAAA,KAAA,EAA7B,KAA6B,CAA7B;AAjBmC,KAgBrC,CAhBqC,CAAA;;;AAqBrC,IAAA,KAAK,CAAL,YAAA,CAAA,SAAA,CAAA,IAAA,CAAkC;AAChC,MAAA,IAAI,EAD4B,WAAA;AAEhC,MAAA,QAFgC,EAAA,SAAA,QAAA,CAAA,KAAA,EAEf;AACf,aAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,EAAA,EAAA,EAAmD;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,EAAzB,CAAyB;AAAA,cAAxC,WAAwC,GAAA,KAAA;;AACjD,cACE,WAAW,CAAX,OAAA,KACC,WAAW,CAAX,OAAA,KAAwB,KAAK,CAA7B,MAAA,IAAwC,CAAA,GAAA,aAAA,CAAA,YAAA,EAAa,WAAW,CAAxB,OAAA,EAAkC,KAAK,CAFlF,MAE2C,CADzC,CADF,EAGE;AACA,YAAA,WAAW,CAAX,YAAA,CAAA,sBAAA,CAAA,KAAA;AACA;AACD;AACF;AACF;AAZ+B,KAAlC;AAcD;;sBAEc;AACb,IAAA,EAAE,EADW,iCAAA;AAEb,IAAA,OAAO,EAFM,YAAA;AAGb,IAAA,SAAS,EAAE,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,QAAA,EAAA,MAAA,CAAwC,UAAA,GAAA,EAAA,SAAA,EAAoB;AACrE,MAAA,GAAG,CAAA,gBAAA,MAAA,CAAH,SAAG,CAAA,CAAH,GAAA,kBAAA;AACA,aAAA,GAAA;AAFS,KAAA,EAAA,EAAA;AAHE,G;;;;;;;;;sBCnHA,E;;;;;;;;;ACEf;;AAAA;AAEA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2CK,S;;aAAA,S,EAAA;AAAA,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAAA;AAAA,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAAA,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAAA;KAAA,SAAA,KAAA,SAAA,GAAA,EAAA,C;;AAML,MAAM,MAAM,GAAZ,gBAAA;AACA,MAAM,KAAK,GAAG;AACZ,IAAA,WAAW,EADC,+DAAA;AAEZ,IAAA,SAAS,EAAE;AAFC,GAAd,ChC1DA,CgC0DA;;AAMA,MAAM,YAAY,GAAG,kBAArB,YAAA;;AAEA,WAAA,YAAA,CAAA,KAAA,EAAsE;AAAA,QAAA,IAAA,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAJ,EAAI;AAAA,QAApC,MAAoC,GAAA,IAAA,CAApC,MAAoC;;AAAA,QAC5D,YAD4D,GACjC,KADiC,CAAA,YAAA;AAAA,QAC9C,QAD8C,GACjC,KADiC,CAAA,QAAA;AAGpE,IAAA,KAAK,CAAL,MAAA,GAAe,MAAM,IAArB,OAAA;AAEA,IAAA,QAAQ,CAAR,IAAA,CAAA,QAAA,GAAyB;AACvB,MAAA,MAAM,EAAE;AADe,KAAzB;;AAIA,IAAA,YAAY,CAAZ,SAAA,CAAA,QAAA,GAAkC,UAAA,OAAA,EAA4B;AAC5D,UAAA,OAAA,EAAa;AACX,SAAA,GAAA,WAAA,CAAA,OAAA,EAAO,KAAA,OAAA,CAAP,QAAA,EAAA,OAAA;AACA,eAAA,IAAA;AACD;;AAED,aAAO,KAAA,OAAA,CAAP,QAAA;AANF,KAAA;;AASA,IAAA,KAAK,CAAL,SAAA,CAAgB,WAAA,CAAhB,OAAA;AACD;;AAED,MAAM,MAAe,GAAG,CACtB;AACE,IAAA,IAAI,EAAE,SAAS,CADjB,WAAA;AAEE,IAAA,OAFF,EAAA,SAAA,OAAA,CAAA,KAAA,EAEwB;AAAA,UAAX,OAAW,GAAA,KAAA,CAAX,OAAW;AACpB,aAAO,CAAC,cAAc,CAAA,OAAA,EAAA,aAAA,EAAtB,iBAAsB,CAAtB;AAHJ,KAAA;AAKE,IAAA,OALF,EAAA,SAAA,OAAA,CAAA,KAAA,EAKwB;AAAA,UAAX,OAAW,GAAA,KAAA,CAAX,OAAW;AACpB,aAAO,CAAA,OAAA,EAAU,KAAK,CAAtB,WAAO,CAAP;AANJ,KAAA;AAQE,IAAA,IAAI,EAAE;AARR,GADsB,EAYtB;AACE,IAAA,IAAI,EAAE,SAAS,CADjB,SAAA;AAEE,IAAA,OAFF,EAAA,SAAA,OAAA,CAAA,WAAA,EAEwB;AAAA,UACZ,OADY,GACA,WADA,CAAA,OAAA;AAGpB,aACE,WAAW,CAAX,QAAA,CAAA,IAAA,KAAA,QAAA,IACA,OAAO,YAAY,eAAA,CAAA,OAAA,CADnB,WAAA,IAEA,CAAC,QAAQ,CAAA,OAAA,EAAA,WAAA,EAHX,YAGW,CAHX;AALJ,KAAA;AAWE,IAAA,IAAI,EAXN,wEAAA;AAYE,IAAA,OAZF,EAAA,SAAA,OAAA,CAAA,KAAA,EAYwB;AAAA,UAAX,OAAW,GAAA,KAAA,CAAX,OAAW;AACpB,aAAO,CAAA,OAAA,EAAU,KAAK,CAAtB,SAAO,CAAP;AACD;AAdH,GAZsB,EA6BtB;AACE,IAAA,IAAI,EAAE,SAAS,CADjB,WAAA;AAEE,IAAA,OAFF,EAAA,SAAA,OAAA,CAAA,WAAA,EAEwB;AACpB,UAAM,UAAU,GAAG,WAAW,CAAX,QAAA,CAAnB,IAAA;AACA,UAAM,aAAa,GAAG,WAAW,CAAX,YAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,UAAA,EAAA,MAAA,CAAA,KAAtB,EAAA;AAEA,aAAO,CAAC,aAAa,CAArB,MAAA;AANJ,KAAA;AAQE,IAAA,OARF,EAAA,SAAA,OAAA,CAAA,WAAA,EAQwB;AACpB,aAAO,CAAC,WAAW,CAAX,QAAA,CAAD,IAAA,EAA4B,WAAW,CAA9C,YAAO,CAAP;AATJ,KAAA;AAWE,IAAA,IAAI,EAAE;AAXR,GA7BsB,CAAxB;;AA4CA,WAAA,QAAA,CAAA,OAAA,EAAA,IAAA,EAAA,OAAA,EAA2F;AACzF,QAAM,KAAK,GAAG,OAAO,CAAP,KAAA,CAAA,IAAA,KAAuB,WAAG,CAAH,MAAA,CAAA,gBAAA,CAAA,OAAA,EAArC,IAAqC,CAArC;;AACA,WAAO,OAAO,CAAP,IAAA,CAAa,CAAC,KAAK,IAAN,EAAA,EAApB,QAAoB,EAAb,CAAP;AACD;;AAED,WAAA,cAAA,CAAA,OAAA,EAAA,IAAA,EAAA,OAAA,EAA6F;AAC3F,QAAI,MAAM,GAAV,OAAA;;AAEA,WAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAP,MAAO,CAAP,EAA2B;AACzB,UAAI,QAAQ,CAAA,MAAA,EAAA,IAAA,EAAZ,OAAY,CAAZ,EAAqC;AACnC,eAAA,IAAA;AACD;;AAED,MAAA,MAAM,GAAG,CAAA,GAAA,aAAA,CAAA,UAAA,EAAT,MAAS,CAAT;AACD;;AAED,WAAA,KAAA;AACD;;AAED,MAAM,EAAE,GAAR,WAAA;AACA,MAAM,aAAqB,GAAG,YAAY,GACtC;AAAE,IAAA,EAAE,EAAJ,EAAA;AAAM,IAAA,OAAO,EAAE,SAAA,OAAA,GAAM,CAAE;AAAvB,GADsC,GAEtC;AACA,IAAA,EAAE,EADF,EAAA;AAEA,IAAA,OAAO,EAFP,YAAA;AAGA,IAAA,SAAS,EAAE;AACT,mCAA6B,SAAA,uBAAA,CAAA,KAAA,EAAA,KAAA,EAA4B;AAAA,YAAzB,WAAyB,GAAA,KAAA,CAAzB,WAAyB;;AACvD,aAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA4B;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAR,MAAQ,CAAA,EAAA,CAAA;AAAA,cAAjB,KAAiB,GAAA,KAAA;AAC1B,cAAM,OAAO,GAAG,WAAW,CAAX,YAAA,IAA4B,WAAW,CAAX,YAAA,CAA5C,OAAA;;AAEA,cACE,EAAE,OAAO,IAAI,OAAO,CAAlB,QAAA,IAA+B,OAAO,CAAP,QAAA,CAAA,MAAA,CAAwB,KAAK,CAA9D,IAAiC,CAAjC,KACE,KAAK,CAAL,OAAA,CAFJ,WAEI,CAFJ,EAGE;AAAA,gBAAA,aAAA;;AACA,aAAA,aAAA,GAAA,KAAK,CAAL,MAAA,EAAA,IAAA,CAAA,KAAA,CAAA,aAAA,EAAA,CAAkB,MAAM,GAAG,KAAK,CAAhC,IAAA,EAAA,MAAA,CAAA,uBAAA,CAA0C,KAAK,CAAL,OAAA,CAA1C,WAA0C,CAA1C,CAAA,CAAA;AACD;AACF;AACF;AAZQ,KAHX;AAiBA,IAAA,MAAM,EAjBN,MAAA;AAkBA,IAAA,SAAS,EAlBT,SAAA;AAmBA,IAAA,KAAK,EAnBL,KAAA;AAoBA,IAAA,MAAM,EAAN;AApBA,GAFJ;sBAyBe,a;;;;;;;;;AChLf;;AAAA;AACA;;AAAA,GjCDA,C;;AiCIe,WAAA,KAAA,CAAA,MAAA,EAAyD;AACtE,QAAM,IAAI,GAAV,EAAA;;AAEA,SAAK,IAAL,IAAA,IAAA,MAAA,EAA2B;AACzB,UAAM,KAAK,GAAG,MAAM,CAApB,IAAoB,CAApB;;AAEA,UAAI,OAAA,CAAA,OAAA,CAAA,WAAA,CAAJ,KAAI,CAAJ,EAA2B;AACzB,QAAA,IAAI,CAAJ,IAAI,CAAJ,GAAa,KAAK,CAAlB,KAAkB,CAAlB;AADF,OAAA,MAEO,IAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAJ,KAAI,CAAJ,EAAqB;AAC1B,QAAA,IAAI,CAAJ,IAAI,CAAJ,GAAa,QAAG,CAAH,IAAA,CAAb,KAAa,CAAb;AADK,OAAA,MAEA;AACL,QAAA,IAAI,CAAJ,IAAI,CAAJ,GAAA,KAAA;AACD;AACF;;AAED,WAAA,IAAA;AACD;;;;;;;;;;ACjBD;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsBqB,YAAA,GAAA,aAAA,YAAA;AASnB,aAAA,YAAA,CAAA,WAAA,EAAuC;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EARb,EAQa,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAPnB;AAAE,QAAA,IAAI,EAAN,CAAA;AAAW,QAAA,KAAK,EAAhB,CAAA;AAAqB,QAAA,GAAG,EAAxB,CAAA;AAA6B,QAAA,MAAM,EAAE;AAArC,OAOmB,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;AACrC,WAAA,WAAA,GAAA,WAAA;AACA,WAAA,MAAA,GAAc,YAAd,EAAA;AACD;;;;aAED,SAAA,KAAA,CAAA,IAAA,EAAA,UAAA,EAA4D;AAAA,YAAnD,KAAmD,GAAA,IAAA,CAAnD,KAAmD;AAAA,YAClD,WADkD,GAAA,KAAA,WAAA;AAE1D,YAAM,YAAY,GAAG,eAAe,CAApC,WAAoC,CAApC;AACA,aAAA,aAAA,CAAA,YAAA;AAEA,aAAA,KAAA,GAAa,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,WAAW,CAAnC,KAAa,CAAb;AACA,aAAA,WAAA,GAAmB,aAAa,CAAC,WAAW,CAAZ,IAAA,EAAhC,UAAgC,CAAhC;AACA,aAAA,UAAA,GAAkB;AAAE,UAAA,CAAC,EAAH,CAAA;AAAQ,UAAA,CAAC,EAAE;AAAX,SAAlB;AAEA,YAAM,GAAG,GAAG,KAAA,OAAA,CAAa;AACvB,UAAA,KAAK,EADkB,KAAA;AAEvB,UAAA,UAAU,EAFa,UAAA;AAGvB,UAAA,MAAM,EAAE;AAHe,SAAb,CAAZ;AAMA,aAAA,MAAA,GAAc,YAAd,EAAA;AACA,aAAA,QAAA,CAAA,GAAA;AAEA,YAAM,MAAM,GAAI,KAAA,MAAA,GAAc,KAAA,MAAA,CAA9B,GAA8B,CAA9B;AAEA,eAAA,MAAA;AACD;;;aAED,SAAA,OAAA,CAAA,GAAA,EAAoC;AAAA,YAC1B,WAD0B,GAAA,KAAA,WAAA;AAGlC,QAAA,GAAG,CAAH,WAAA,GAAA,WAAA;AACA,QAAA,GAAG,CAAH,YAAA,GAAmB,WAAW,CAA9B,YAAA;AACA,QAAA,GAAG,CAAH,OAAA,GAAc,WAAW,CAAzB,OAAA;AACA,QAAA,GAAG,CAAH,IAAA,GAAW,GAAG,CAAH,IAAA,IAAY,WAAW,CAAlC,IAAA;AACA,QAAA,GAAG,CAAH,KAAA,GAAY,KAAZ,KAAA;AACA,QAAA,GAAG,CAAH,WAAA,GAAkB,KAAlB,WAAA;AAEA,eAAA,GAAA;AACD;;;aAED,SAAA,QAAA,CAAA,GAAA,EAAiD;AAC/C,aAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAoB,KAApB,MAAoB,CAApB,MAAA,EAAA,EAAA,EAAA,EAAiC;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAb,KAAK,MAAL,CAAa,EAAb,CAAa;AAAA,cAAtB,KAAsB,GAAA,KAAA;;AAC/B,cAAI,KAAK,CAAL,OAAA,CAAJ,KAAA,EAAyB;AACvB,YAAA,GAAG,CAAH,KAAA,GAAA,KAAA;AACA,YAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,GAAA;AACD;AACF;AACF;;;aAED,SAAA,MAAA,CAAA,GAAA,EAAmE;AAAA,YACzD,KADyD,GACF,GADE,CAAA,KAAA;AAAA,YAClD,MADkD,GACF,GADE,CAAA,MAAA;AAAA,YAC1C,aAD0C,GACF,GADE,CAAA,aAAA;AAAA,YACrB,cADqB,GACF,GADE,CAAA,IAAA;AAGjE,QAAA,GAAG,CAAH,MAAA,GAAa,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,GAAG,CAA3B,UAAa,CAAb;AACA,QAAA,GAAG,CAAH,IAAA,GAAW,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAX,cAAW,CAAX;AAEA,YAAM,MAAM,GAAG,aAAa,GAAG,KAAA,MAAA,CAAA,KAAA,CAAH,aAAG,CAAH,GAAsC,KAAlE,MAAA;AAEA,YAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAJ,MAAA,EAAa,GAAG,CAA9C,IAA8B,CAA9B;;AAEA,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;AAAA,cAAA,cAAA;;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA;AAAA,cAAjB,KAAiB,GAAA,KAAA;AAAA,cAClB,OADkB,GACN,KADM,CAAA,OAAA;AAE1B,cAAM,kBAAkB,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,GAAG,CAAzC,MAA2B,CAA3B;AACA,cAAI,WAAW,GAAf,IAAA;;AAEA,cAAI,CAAA,cAAA,GAAA,KAAK,CAAL,OAAA,KAAA,IAAA,IAAA,cAAA,CAAA,GAAA,IAAsB,KAAA,QAAA,CAAA,OAAA,EAAA,MAAA,EAA1B,KAA0B,CAA1B,EAAiE;AAC/D,YAAA,GAAG,CAAH,KAAA,GAAA,KAAA;AACA,YAAA,WAAW,GAAG,KAAK,CAAL,OAAA,CAAA,GAAA,CAAd,GAAc,CAAd;;AAEA,YAAA,SAAS,CAAT,QAAA,CAAmB,KAAA,WAAA,CAAnB,KAAA,EAA2C,GAAG,CAA9C,IAAA,EAAqD;AACnD,cAAA,CAAC,EAAE,GAAG,CAAH,MAAA,CAAA,CAAA,GAAe,kBAAkB,CADe,CAAA;AAEnD,cAAA,CAAC,EAAE,GAAG,CAAH,MAAA,CAAA,CAAA,GAAe,kBAAkB,CAAC;AAFc,aAArD;AAID;;AAED,UAAA,SAAS,CAAT,UAAA,CAAA,IAAA,CAAA,WAAA;AACD;;AAED,QAAA,SAAS,CAAT,KAAA,CAAA,CAAA,GAAoB,GAAG,CAAH,MAAA,CAAA,CAAA,GAAe,GAAG,CAAH,UAAA,CAAnC,CAAA;AACA,QAAA,SAAS,CAAT,KAAA,CAAA,CAAA,GAAoB,GAAG,CAAH,MAAA,CAAA,CAAA,GAAe,GAAG,CAAH,UAAA,CAAnC,CAAA;AAEA,QAAA,SAAS,CAAT,SAAA,CAAA,IAAA,GAA2B,GAAG,CAAH,IAAA,CAAA,IAAA,GAAgB,cAAc,CAAzD,IAAA;AACA,QAAA,SAAS,CAAT,SAAA,CAAA,KAAA,GAA4B,GAAG,CAAH,IAAA,CAAA,KAAA,GAAiB,cAAc,CAA3D,KAAA;AACA,QAAA,SAAS,CAAT,SAAA,CAAA,GAAA,GAA0B,GAAG,CAAH,IAAA,CAAA,GAAA,GAAe,cAAc,CAAvD,GAAA;AACA,QAAA,SAAS,CAAT,SAAA,CAAA,MAAA,GAA6B,GAAG,CAAH,IAAA,CAAA,MAAA,GAAkB,cAAc,CAA7D,MAAA;AAEA,YAAM,UAAU,GAAG,KAAA,MAAA,CAAnB,MAAA;AACA,YAAM,QAAQ,GAAG,KAAA,MAAA,CAAjB,IAAA;;AAEA,YAAI,UAAU,IAAd,QAAA,EAA4B;AAC1B,cAAM,WAAW,GACf,SAAS,CAAT,IAAA,CAAA,IAAA,KAAwB,QAAQ,CAAhC,IAAA,IACA,SAAS,CAAT,IAAA,CAAA,KAAA,KAAyB,QAAQ,CADjC,KAAA,IAEA,SAAS,CAAT,IAAA,CAAA,GAAA,KAAuB,QAAQ,CAF/B,GAAA,IAGA,SAAS,CAAT,IAAA,CAAA,MAAA,KAA0B,QAAQ,CAJpC,MAAA;AAMA,UAAA,SAAS,CAAT,OAAA,GACE,WAAW,IAAI,UAAU,CAAV,CAAA,KAAiB,SAAS,CAAT,MAAA,CAAhC,CAAA,IAAsD,UAAU,CAAV,CAAA,KAAiB,SAAS,CAAT,MAAA,CADzE,CAAA;AAED;;AAED,eAAA,SAAA;AACD;;;aAED,SAAA,kBAAA,CAAA,GAAA,EAA6D;AAAA,YACnD,WADmD,GAAA,KAAA,WAAA;AAAA,YAEnD,KAFmD,GAEzC,GAFyC,CAAA,KAAA;AAG3D,YAAM,SAAS,GAAG,WAAW,CAAX,MAAA,CAAlB,GAAA;AACA,YAAM,WAAW,GAAG,WAAW,CAAX,MAAA,CAApB,KAAA;AAJ2D,YAKnD,MALmD,GAAA,KAAA,MAAA;AAAA,YAK3C,UAL2C,GAAA,KAAA,UAAA;AAM3D,YAAM,QAAQ,GAAG,MAAM,CAAvB,KAAA;;AAEA,YAAI,KAAK,KAAT,OAAA,EAAuB;AACrB,WAAA,GAAA,WAAA,CAAA,OAAA,EAAO,KAAP,UAAA,EAAwB,MAAM,CAA9B,KAAA;AACD;;AAED,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAiC,CAC/B,CAAA,WAAA,EAD+B,UAC/B,CAD+B,EAE/B,CAAA,SAAA,EAFF,QAEE,CAF+B,EAAjC,MAAA,EAAA,GAAA,EAAA,EAGY;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAHqB,CAC/B,CAAA,WAAA,EAD+B,UAC/B,CAD+B,EAE/B,CAAA,SAAA,EAF+B,QAE/B,CAF+B,EAGrB,GAHqB,CAGrB;;AAAA,cAAA,KAAA,GAAA,KAAA;AAAA,cAAA,KAAA,GAAA,cAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,cAHA,SAGA,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,cAHW,KAGX,GAAA,KAAA,CAAA,CAAA,CAAA;;AACV,UAAA,SAAS,CAAT,IAAA,CAAA,CAAA,IAAoB,KAAK,CAAzB,CAAA;AACA,UAAA,SAAS,CAAT,IAAA,CAAA,CAAA,IAAoB,KAAK,CAAzB,CAAA;AACA,UAAA,SAAS,CAAT,MAAA,CAAA,CAAA,IAAsB,KAAK,CAA3B,CAAA;AACA,UAAA,SAAS,CAAT,MAAA,CAAA,CAAA,IAAsB,KAAK,CAA3B,CAAA;AACD;;AApB0D,YAsBnD,SAtBmD,GAsBrC,KAtBqC,MAsBrC,CAtBqC,SAAA;AAuB3D,YAAM,IAAI,GAAG,GAAG,CAAH,IAAA,IAAY,WAAW,CAApC,IAAA;AAEA,QAAA,IAAI,CAAJ,IAAA,IAAa,SAAS,CAAtB,IAAA;AACA,QAAA,IAAI,CAAJ,KAAA,IAAc,SAAS,CAAvB,KAAA;AACA,QAAA,IAAI,CAAJ,GAAA,IAAY,SAAS,CAArB,GAAA;AACA,QAAA,IAAI,CAAJ,MAAA,IAAe,SAAS,CAAxB,MAAA;AAEA,QAAA,IAAI,CAAJ,KAAA,GAAa,IAAI,CAAJ,KAAA,GAAa,IAAI,CAA9B,IAAA;AACA,QAAA,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAhC,GAAA;AACD;;;aAED,SAAA,WAAA,CAAA,GAAA,EAOgB;AAAA,YACN,WADM,GAAA,KAAA,WAAA;AAAA,YAEN,KAFM,GAE2B,GAF3B,CAAA,KAAA;AAAA,YAEC,MAFD,GAE2B,GAF3B,CAAA,MAAA;AAAA,YAES,aAFT,GAE2B,GAF3B,CAAA,aAAA;AAId,YAAM,MAAM,GAAG,KAAA,MAAA,CACb,KAAA,OAAA,CAAa;AACX,UAAA,MAAM,EADK,MAAA;AAEX,UAAA,KAAK,EAFM,KAAA;AAGX,UAAA,UAAU,EAAE,GAAG,CAAH,cAAA,IAAsB,WAAW,CAAX,MAAA,CAAA,GAAA,CAAuB;AAH9C,SAAb,CADa,CAAf;AAQA,aAAA,MAAA,GAZc,MAYd,CAZc,CAAA;;;AAgBd,YACE,CAAC,MAAM,CAAP,OAAA,KACC,CAAA,aAAA,IAAkB,aAAa,GAAG,KAAA,MAAA,CADnC,MAAA,KAEA,WAAW,CAHb,WAGE,EAHF,EAIE;AACA,iBAAA,KAAA;AACD;;AAED,YAAI,GAAG,CAAP,cAAA,EAAwB;AAAA,cACd,IADc,GACL,WAAW,CAAX,MAAA,CADK,GACL,CADK,IAAA;AAEtB,cAAM,UAAU,GAAG;AACjB,YAAA,CAAC,EAAE,GAAG,CAAH,cAAA,CAAA,CAAA,GAAuB,IAAI,CADb,CAAA;AAEjB,YAAA,CAAC,EAAE,GAAG,CAAH,cAAA,CAAA,CAAA,GAAuB,IAAI,CAAC;AAFd,WAAnB;AAKA,UAAA,MAAM,CAAN,MAAA,CAAA,CAAA,IAAmB,UAAU,CAA7B,CAAA;AACA,UAAA,MAAM,CAAN,MAAA,CAAA,CAAA,IAAmB,UAAU,CAA7B,CAAA;AACA,UAAA,MAAM,CAAN,KAAA,CAAA,CAAA,IAAkB,UAAU,CAA5B,CAAA;AACA,UAAA,MAAM,CAAN,KAAA,CAAA,CAAA,IAAkB,UAAU,CAA5B,CAAA;AACD;;AAED,aAAA,kBAAA,CAAA,GAAA;AACD;;;aAED,SAAA,SAAA,CAAA,GAAA,EAAyF;AAAA,YAC/E,WAD+E,GACxD,GADwD,CAAA,WAAA;AAAA,YAClE,KADkE,GACxD,GADwD,CAAA,KAAA;AAEvF,YAAM,MAAM,GAAG,KAAf,MAAA;;AAEA,YAAI,CAAA,MAAA,IAAW,CAAC,MAAM,CAAtB,MAAA,EAA+B;AAC7B;AACD;;AAED,YAAI,QAAQ,GAAZ,KAAA;;AAEA,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA;AAAA,cAAjB,KAAiB,GAAA,KAAA;AAC1B,UAAA,GAAG,CAAH,KAAA,GAAA,KAAA;AAD0B,cAElB,OAFkB,GAEG,KAFH,CAAA,OAAA;AAAA,cAET,OAFS,GAEG,KAFH,CAAA,OAAA;AAI1B,cAAM,WAAW,GAAG,OAAO,CAAP,SAAA,IAAqB,OAAO,CAAP,SAAA,CAAzC,GAAyC,CAAzC;;AAEA,cAAA,WAAA,EAAiB;AACf,iBAAA,SAAA,GAAA,WAAA;AACA,mBAAA,KAAA;AACD;;AAED,UAAA,QAAQ,GAAG,QAAQ,IAAK,CAAA,QAAA,IAAa,KAAA,QAAA,CAAA,OAAA,EAAA,IAAA,EAA6B,GAAG,CAAhC,KAAA,EAArC,IAAqC,CAArC;AACD;;AAED,YAAA,QAAA,EAAc;;AAEZ,UAAA,WAAW,CAAX,IAAA,CAAiB;AAAE,YAAA,KAAK,EAAP,KAAA;AAAS,YAAA,MAAM,EAAE;AAAjB,WAAjB;AACD;AACF;;;aAED,SAAA,IAAA,CAAA,GAAA,EAAyC;AAAA,YAC/B,WAD+B,GACf,GADe,CAAA,WAAA;;AAGvC,YAAI,CAAC,KAAD,MAAA,IAAgB,CAAC,KAAA,MAAA,CAArB,MAAA,EAAyC;AACvC;AACD;;AAED,YAAM,WAAiC,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EACxC;AACE,UAAA,MAAM,EAAE,KADV,MAAA;AAEE,UAAA,YAAY,EAAE,WAAW,CAF3B,YAAA;AAGE,UAAA,OAAO,EAAE,WAAW,CAHtB,OAAA;AAIE,UAAA,IAAI,EAAE;AAJR,SADwC,EAA1C,GAA0C,CAA1C;AAUA,aAAA,OAAA,CAAA,WAAA;;AAEA,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,KAApB,MAAoB,CAApB,MAAA,EAAA,GAAA,EAAA,EAAiC;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAb,KAAK,MAAL,CAAa,GAAb,CAAa;AAAA,cAAtB,KAAsB,GAAA,KAAA;AAC/B,UAAA,WAAW,CAAX,KAAA,GAAA,KAAA;;AAEA,cAAI,KAAK,CAAL,OAAA,CAAJ,IAAA,EAAwB;AACtB,YAAA,KAAK,CAAL,OAAA,CAAA,IAAA,CAAA,WAAA;AACD;AACF;;AAED,aAAA,MAAA,GAAA,IAAA;AACA,aAAA,SAAA,GAAA,IAAA;AACD;;;aAED,SAAA,aAAA,CAAA,YAAA,EAAyC;AACvC,aAAA,MAAA,GAAA,EAAA;;AAEA,aAAK,IAAI,KAAK,GAAd,CAAA,EAAoB,KAAK,GAAG,YAAY,CAAxC,MAAA,EAAiD,KAAjD,EAAA,EAA0D;AAAA,cAAA,mBAAA,GACrB,YAAY,CADS,KACT,CADS;AAAA,cAChD,OADgD,GAAA,mBAAA,CAAA,OAAA;AAAA,cACvC,OADuC,GAAA,mBAAA,CAAA,OAAA;AAAA,cAC9B,IAD8B,GAAA,mBAAA,CAAA,IAAA;AAGxD,eAAA,MAAA,CAAA,IAAA,CAAiB;AACf,YAAA,OAAO,EADQ,OAAA;AAEf,YAAA,OAAO,EAFQ,OAAA;AAGf,YAAA,KAAK,EAHU,KAAA;AAIf,YAAA,IAAI,EAAJ;AAJe,WAAjB;AAMD;;AAED,eAAO,KAAP,MAAA;AACD;;;aAED,SAAA,wBAAA,CAAA,KAAA,EAAyG;AAAA,YAAA,iBAAA,GAAA,KAAA,CAA7E,WAA6E;AAAA,YAA9D,MAA8D,GAAA,iBAAA,CAA9D,MAA8D;AAAA,YAAtD,IAAsD,GAAA,iBAAA,CAAtD,IAAsD;AAAA,YAAhD,YAAgD,GAAA,iBAAA,CAAhD,YAAgD;AACvG,YAAI,CAAC,YAAY,CAAjB,MAAA,EAA0B;AAD6E,YAG/F,UAH+F,GAGhF,YAHgF,CAAA,UAAA;AAAA,YAAA,oBAAA,GAIhE,YAAY,CAJoD,MAAA;AAAA,YAIxF,QAJwF,GAAA,oBAAA,CAAA,KAAA;AAAA,YAI9E,SAJ8E,GAAA,oBAAA,CAAA,SAAA;AAMvG,YAAM,eAAe,GAAG,CACtB,CAAC,MAAM,CAAP,KAAA,EADsB,UACtB,CADsB,EAEtB,CAAC,MAAM,CAAP,GAAA,EAFF,QAEE,CAFsB,CAAxB;;AAKA,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAiC,eAAjC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAyD;AAAA,cAAA,MAAA;;AAAA,UAAA,MAAA,GAAxB,eAAwB,CAAA,GAAA,CAAA;;AAAA,cAAA,MAAA,GAAA,MAAA;AAAA,cAAA,MAAA,GAAA,cAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AAAA,cAA7C,SAA6C,GAAA,MAAA,CAAA,CAAA,CAAA;AAAA,cAAlC,KAAkC,GAAA,MAAA,CAAA,CAAA,CAAA;;AACvD,UAAA,SAAS,CAAT,IAAA,CAAA,CAAA,IAAoB,KAAK,CAAzB,CAAA;AACA,UAAA,SAAS,CAAT,IAAA,CAAA,CAAA,IAAoB,KAAK,CAAzB,CAAA;AACA,UAAA,SAAS,CAAT,MAAA,CAAA,CAAA,IAAsB,KAAK,CAA3B,CAAA;AACA,UAAA,SAAS,CAAT,MAAA,CAAA,CAAA,IAAsB,KAAK,CAA3B,CAAA;AACD;;AAED,QAAA,IAAI,CAAJ,IAAA,IAAa,SAAS,CAAtB,IAAA;AACA,QAAA,IAAI,CAAJ,KAAA,IAAc,SAAS,CAAvB,KAAA;AACA,QAAA,IAAI,CAAJ,GAAA,IAAY,SAAS,CAArB,GAAA;AACA,QAAA,IAAI,CAAJ,MAAA,IAAe,SAAS,CAAxB,MAAA;AACD;;;aAED,SAAA,QAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,cAAA,EAA+E;AAC7E,aAAA;AAEE,SAAA,OAAA,IACA,OAAO,CAAP,OAAA,KADA,KAAA,IAAA;AAGC,QAAA,cAAc,IAAI,CAAC,OAAO,CAH3B,OAAA,IAAA;AAKC,QAAA,OAAO,CAAP,OAAA,IAAmB,CALpB,MAAA,IAAA;AAOC,QAAA,KAAK,KAAL,OAAA,IAAqB,CAAC,OAAO,CAThC,QAAA,EAUE;AACA,iBAAA,KAAA;AACD;;AAED,eAAA,IAAA;AACD;;;aAED,SAAA,QAAA,CAAA,KAAA,EAA+B;AAC7B,aAAA,WAAA,GAAmB,KAAK,CAAxB,WAAA;AACA,aAAA,UAAA,GAAkB,KAAK,CAAvB,UAAA;AACA,aAAA,KAAA,GAAa,KAAK,CAAlB,KAAA;AACA,aAAA,MAAA,GAAc,KAAK,CAAL,MAAA,CAAA,GAAA,CAAiB,UAAA,CAAA,EAAA;AAAA,iBAAO,CAAA,GAAA,UAAA,CAAA,OAAA,EAAP,CAAO,CAAP;AAA/B,SAAc,CAAd;AACA,aAAA,MAAA,GAAc,YAAY,CAAC,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,KAAK,CAAL,MAAA,CAAZ,MAAC,CAAD,EAAkC,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,KAAK,CAAL,MAAA,CAAvE,IAA4D,CAAlC,CAA1B;AACD;;;aAED,SAAA,OAAA,GAAW;AACT,aAAK,IAAL,IAAA,IAAA,IAAA,EAAyB;AACvB,eAAA,IAAA,IAAA,IAAA;AACD;AACF;;;;GArUkB,E;;;;AAwUrB,WAAA,YAAA,CAAA,MAAA,EAAA,IAAA,EAA4E;AAC1E,WAAO;AACL,MAAA,IAAI,EADC,IAAA;AAEL,MAAA,MAAM,EAFD,MAAA;AAGL,MAAA,KAAK,EAAE;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX,OAHF;AAIL,MAAA,SAAS,EAAE;AACT,QAAA,IAAI,EADK,CAAA;AAET,QAAA,KAAK,EAFI,CAAA;AAGT,QAAA,GAAG,EAHM,CAAA;AAIT,QAAA,MAAM,EAAE;AAJC,OAJN;AAUL,MAAA,UAAU,EAVL,EAAA;AAWL,MAAA,OAAO,EAAE;AAXJ,KAAP;AAaD;;AAED,WAAA,eAAA,CAAA,WAAA,EAAuC;AACrC,QAAM,aAAa,GAAG,WAAW,CAAX,YAAA,CAAA,OAAA,CAAiC,WAAW,CAAX,QAAA,CAAvD,IAAsB,CAAtB;AACA,QAAM,eAAe,GAAG,aAAa,CAArC,SAAA;;AAEA,QAAI,eAAe,IAAI,eAAe,CAAtC,MAAA,EAA+C;AAC7C,aAAA,eAAA;AACD;;AAED,WAAO,CAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,GAAA,CACA,UAAA,IAAA,EAAU;AACb,UAAM,OAAO,GAAG,aAAa,CAA7B,IAA6B,CAA7B;AAEA,aACE,OAAO,IACP,OAAO,CADP,OAAA,IACmB;AACjB,QAAA,OAAO,EADU,OAAA;AAEjB,QAAA,OAAO,EAAE,OAAO,CAAC;AAFA,OAFrB;AAJG,KAAA,EAAA,MAAA,CAYG,UAAA,CAAA,EAAA;AAAA,aAAO,CAAC,CAAR,CAAA;AAZV,KAAO,CAAP;AAaD;;AAEM,WAAA,aAAA,CAAA,IAAA,EAAA,MAAA,EAAsC;AAC3C,WAAO,IAAI,GACP;AACA,MAAA,IAAI,EAAE,MAAM,CAAN,CAAA,GAAW,IAAI,CADrB,IAAA;AAEA,MAAA,GAAG,EAAE,MAAM,CAAN,CAAA,GAAW,IAAI,CAFpB,GAAA;AAGA,MAAA,KAAK,EAAE,IAAI,CAAJ,KAAA,GAAa,MAAM,CAH1B,CAAA;AAIA,MAAA,MAAM,EAAE,IAAI,CAAJ,MAAA,GAAc,MAAM,CAAC;AAJ7B,KADO,GAOP;AACA,MAAA,IAAI,EADJ,CAAA;AAEA,MAAA,GAAG,EAFH,CAAA;AAGA,MAAA,KAAK,EAHL,CAAA;AAIA,MAAA,MAAM,EAAE;AAJR,KAPJ;AAaD;;;;;;;;;;;AClZD;;AAAA;;AAsFO,WAAA,YAAA,CAAA,MAAA,EAAA,IAAA,EAK0D;AAAA,QACvD,QADuD,GAC1C,MAD0C,CAAA,QAAA;AAE/D,QAAM,OAAO,GAAG;AACd,MAAA,KAAK,EAAE,MAAM,CADC,KAAA;AAEd,MAAA,GAAG,EAAE,MAAM,CAFG,GAAA;AAGd,MAAA,SAAS,EAAE,MAAM,CAHH,SAAA;AAId,MAAA,IAAI,EAAE,MAAM,CAAC;AAJC,KAAhB;;AAOA,QAAM,QAAQ,GAAG,SAAX,QAAW,CAAA,QAAA,EAAkC;AACjD,UAAM,OAAO,GAAI,QAAQ,IAAzB,EAAA;AAEA,MAAA,OAAO,CAAP,OAAA,GAAkB,OAAO,CAAP,OAAA,KAH+B,KAGjD,CAHiD,CAAA;;AAMjD,WAAK,IAAL,IAAA,IAAA,QAAA,EAA6B;AAC3B,YAAI,EAAE,IAAI,IAAV,OAAI,CAAJ,EAAwB;AACtB;AAAE,UAAA,OAAD,CAAA,IAAA,CAAC,GAAwB,QAAQ,CAAjC,IAAiC,CAAhC;AACH;AACF;;AAED,UAAM,CAA0C,GAAG;AACjD,QAAA,OAAO,EAD0C,OAAA;AAEjD,QAAA,OAAO,EAF0C,OAAA;AAGjD,QAAA,IAAI,EAH6C,IAAA;AAIjD,QAAA,MAAM,EAAE,SAAA,MAAA,GAAM;AACZ,UAAA,OAAO,CAAP,OAAA,GAAA,IAAA;AACA,iBAAA,CAAA;AAN+C,SAAA;AAQjD,QAAA,OAAO,EAAE,SAAA,OAAA,GAAM;AACb,UAAA,OAAO,CAAP,OAAA,GAAA,KAAA;AACA,iBAAA,CAAA;AACD;AAXgD,OAAnD;AAcA,aAAA,CAAA;AA1BF,KAAA;;AA6BA,QAAI,IAAI,IAAI,OAAA,IAAA,KAAZ,QAAA,EAAsC;;AAEpC,MAAA,QAAQ,CAAR,SAAA,GAAA,QAAA;AACA,MAAA,QAAQ,CAAR,QAAA,GAAA,OAAA;AACD;;AAED,WAAA,QAAA;AACD;;AAEM,WAAA,iBAAA,CAAA,IAAA,EAMJ;AAAA,QALD,MAKC,GAAA,IAAA,CALD,MAKC;AAAA,QAJD,WAIC,GAAA,IAAA,CAJD,WAIC;AACD,QAAM,MAAM,GAAG,WAAW,CAAX,YAAA,CAAf,MAAA;;AAEA,QAAA,MAAA,EAAY;AACV,MAAA,MAAM,CAAN,SAAA,GAAmB,MAAM,CAAzB,UAAA;AACD;AACF;;AAED,MAAM,aAAqB,GAAG;AAC5B,IAAA,EAAE,EAD0B,gBAAA;AAE5B,IAAA,MAAM,EAAE,CAFoB,SAEpB,CAFoB;AAG5B,IAAA,OAAO,EAAE,SAAA,OAAA,CAAA,KAAA,EAAW;AAClB,MAAA,KAAK,CAAL,QAAA,CAAA,SAAA,CAAA,SAAA,GAAA,EAAA;AAJ0B,KAAA;AAM5B,IAAA,SAAS,EAAE;AACT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AACvC,QAAA,WAAW,CAAX,YAAA,GAA2B,IAAI,iBAAA,CAAJ,OAAA,CAA3B,WAA2B,CAA3B;AAFO,OAAA;AAKT,0CAAoC,SAAA,6BAAA,CAAA,GAAA,EAAS;AAC3C,YAAM,YAAY,GAAG,GAAG,CAAH,WAAA,CAArB,YAAA;AAEA,QAAA,YAAY,CAAZ,KAAA,CAAA,GAAA,EAAwB,GAAG,CAAH,WAAA,CAAA,MAAA,CAAA,KAAA,CAAxB,IAAA;AACA,QAAA,GAAG,CAAH,WAAA,CAAA,KAAA,GAAwB,YAAY,CAApC,KAAA;AACA,QAAA,YAAY,CAAZ,kBAAA,CAAA,GAAA;AAVO,OAAA;AAaT,yCAAmC,SAAA,4BAAA,CAAA,GAAA,EAAA;AAAA,eAAS,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,WAAA,CAAT,GAAS,CAAT;AAb1B,OAAA;AAeT,wCAAkC,SAAA,2BAAA,CAAA,GAAA,EAAA;AAAA,eAAS,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,SAAA,CAAT,GAAS,CAAT;AAfzB,OAAA;AAiBT,mCAjBS,iBAAA;AAkBT,kCAlBS,iBAAA;AAmBT,iCAnBS,iBAAA;AAqBT,yCAAmC,SAAA,4BAAA,CAAA,GAAA,EAAA;AAAA,eAAS,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,wBAAA,CAAT,GAAS,CAAT;AArB1B,OAAA;AAsBT,wCAAkC,SAAA,2BAAA,CAAA,GAAA,EAAA;AAAA,eAAS,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,wBAAA,CAAT,GAAS,CAAT;AAtBzB,OAAA;AAwBT,2BAAqB,SAAA,gBAAA,CAAA,GAAA,EAAA;AAAA,eAAS,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,IAAA,CAAT,GAAS,CAAT;AAAA;AAxBZ;AANiB,GAA9B;sBAkCe,a;;;;;;;;iCnChMf,C;;;AoCmCO,MAAM,QAAkB,GAAG;AAChC,IAAA,IAAI,EAAE;AACJ,MAAA,cAAc,EADV,MAAA;AAEJ,MAAA,WAAW,EAAE;AAFT,KAD0B;AAMhC,IAAA,SAAS,EAAE;AACT,MAAA,OAAO,EADE,KAAA;AAET,MAAA,MAAM,EAAE;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX;AAFC,KANqB;AAWhC,IAAA,OAAO,EAAE;AAXuB,GAA3B;;;;;;;;;;;;;;;;;;;;;;;;;ACjCP;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;AAEA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0Ba,aAAA,GAAA,aAAA,UAAA,UAAA,EAAA;;;kDAAA,C;;;;;AAmCX,aAAA,aAAA,CAAA,WAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAQE;AAAA,UAAA,KAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,CAAA;;AACA,MAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAA,WAAA,CAAA;;AADA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EArC8B,IAqC9B,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAGA,MAAA,OAAO,GAAG,OAAO,IAAI,WAAW,CAAhC,OAAA;AAEA,UAAM,MAAM,GAAG,WAAW,CAA1B,YAAA;AACA,UAAM,WAAW,GAAG,CAAG,MAAM,IAAI,MAAM,CAAjB,OAAC,IAA6B,YAAA,CAAhC,QAAA,EAApB,WAAA;AACA,UAAM,MAAM,GAAG,CAAA,GAAA,gBAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAf,UAAe,CAAf;AACA,UAAM,QAAQ,GAAG,KAAK,KAAtB,OAAA;AACA,UAAM,MAAM,GAAG,KAAK,KAApB,KAAA;AACA,UAAM,SAAS,GAAG,QAAQ,GAAA,2BAAA,CAAA,KAAA,CAAA,GAAU,WAAW,CAA/C,SAAA;AACA,UAAM,MAAM,GAAG,QAAQ,GACnB,WAAW,CAAX,MAAA,CADmB,KAAA,GAEnB,MAAM,GACJ;AAAE,QAAA,IAAI,EAAE,SAAS,CAAjB,IAAA;AAAwB,QAAA,MAAM,EAAE,SAAS,CAAzC,MAAA;AAAkD,QAAA,SAAS,EAAE,WAAW,CAAX,MAAA,CAAA,GAAA,CAAuB;AAApF,OADI,GAEJ,WAAW,CAAX,MAAA,CAJN,GAAA;AAMA,MAAA,KAAA,CAAA,IAAA,GAAY,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,MAAM,CAA7B,IAAY,CAAZ;AACA,MAAA,KAAA,CAAA,MAAA,GAAc,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,MAAM,CAA/B,MAAc,CAAd;AACA,MAAA,KAAA,CAAA,IAAA,GAAY,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,WAAW,CAAlC,IAAY,CAAZ;AACA,MAAA,KAAA,CAAA,SAAA,GAAiB,MAAM,CAAvB,SAAA;;AAEA,UAAI,CAAJ,MAAA,EAAa;AACX,QAAA,KAAA,CAAA,IAAA,CAAA,CAAA,IAAe,MAAM,CAArB,CAAA;AACA,QAAA,KAAA,CAAA,IAAA,CAAA,CAAA,IAAe,MAAM,CAArB,CAAA;AAEA,QAAA,KAAA,CAAA,MAAA,CAAA,CAAA,IAAiB,MAAM,CAAvB,CAAA;AACA,QAAA,KAAA,CAAA,MAAA,CAAA,CAAA,IAAiB,MAAM,CAAvB,CAAA;AACD;;AAED,MAAA,KAAA,CAAA,OAAA,GAAe,KAAK,CAApB,OAAA;AACA,MAAA,KAAA,CAAA,MAAA,GAAc,KAAK,CAAnB,MAAA;AACA,MAAA,KAAA,CAAA,QAAA,GAAgB,KAAK,CAArB,QAAA;AACA,MAAA,KAAA,CAAA,OAAA,GAAe,KAAK,CAApB,OAAA;AACA,MAAA,KAAA,CAAA,MAAA,GAAe,KAAD,CAAd,MAAA;AACA,MAAA,KAAA,CAAA,OAAA,GAAgB,KAAD,CAAf,OAAA;AACA,MAAA,KAAA,CAAA,MAAA,GAAA,OAAA;AACA,MAAA,KAAA,CAAA,aAAA,GAAA,OAAA;AACA,MAAA,KAAA,CAAA,MAAA,GAAA,MAAA;AACA,MAAA,KAAA,CAAA,IAAA,GAAY,IAAI,IAAI,UAAU,IAAI,KAAK,IAAvC,EAA8B,CAA9B;AACA,MAAA,KAAA,CAAA,YAAA,GAAA,MAAA;AAEA,MAAA,KAAA,CAAA,EAAA,GAAU,QAAQ,GAAG,WAAW,CAAX,QAAA,CAAqB,WAAW,CAAX,QAAA,CAAA,MAAA,GAArB,CAAA,EAAH,QAAA,GAAoE,SAAS,CAA/F,EAAA;AAEA,MAAA,KAAA,CAAA,EAAA,GAAU,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,GAAkC,MAAM,CAAlD,CAAA;AACA,MAAA,KAAA,CAAA,EAAA,GAAU,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,GAAkC,MAAM,CAAlD,CAAA;AACA,MAAA,KAAA,CAAA,QAAA,GAAgB,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,GAAoC,MAAM,CAA1D,CAAA;AACA,MAAA,KAAA,CAAA,QAAA,GAAgB,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,GAAoC,MAAM,CAA1D,CAAA;;AAEA,UAAI,QAAQ,IAAZ,MAAA,EAAwB;AACtB,QAAA,KAAA,CAAA,KAAA,GAAa;AAAE,UAAA,CAAC,EAAH,CAAA;AAAQ,UAAA,CAAC,EAAE;AAAX,SAAb;AADF,OAAA,MAEO;AACL,QAAA,KAAA,CAAA,KAAA,GAAa;AACX,UAAA,CAAC,EAAE,KAAA,CAAA,WAAA,CAAA,CAAA,CAAA,GAAsB,SAAS,CAAT,WAAS,CAAT,CADd,CAAA;AAEX,UAAA,CAAC,EAAE,KAAA,CAAA,WAAA,CAAA,CAAA,CAAA,GAAsB,SAAS,CAAT,WAAS,CAAT,CAAuB;AAFrC,SAAb;AAID;;AAED,MAAA,KAAA,CAAA,EAAA,GAAU,WAAW,CAAX,MAAA,CAAA,KAAA,CAAV,SAAA;AACA,MAAA,KAAA,CAAA,QAAA,GAAgB,KAAA,CAAA,SAAA,GAAiB,KAAA,CA3DjC,EA2DA,CA3DA,CAAA;;AA8DA,MAAA,KAAA,CAAA,QAAA,GAAgB,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,WAAW,CAAX,MAAA,CAAA,QAAA,CAA3B,WAA2B,CAAX,CAAhB;AACA,MAAA,KAAA,CAAA,KAAA,GAAa,CAAA,GAAA,UAAA,CAAA,OAAA,EAAM,KAAA,CAAA,QAAA,CAAN,CAAA,EAAuB,KAAA,CAAA,QAAA,CAApC,CAAa,CAAb;AAEA,MAAA,KAAA,CAAA,KAAA,GAAa,MAAM,IAAI,KAAK,KAAf,cAAA,GAAqC,KAAA,CAArC,QAAqC,EAArC,GAAb,IAAA;AAjEA,aAAA,KAAA;AAkED;;;;aAED,SAAA,QAAA,GAAY;AACV,YAAM,WAAW,GAAG,KAApB,YAAA;;AAEA,YAAI,WAAW,CAAX,SAAA,CAAA,KAAA,GAAA,GAAA,IAAqC,KAAA,SAAA,GAAiB,WAAW,CAAX,SAAA,CAAjB,SAAA,GAAzC,GAAA,EAAiG;AAC/F,iBAAA,IAAA;AACD;;AAED,YAAI,KAAK,GAAI,MAAM,IAAI,CAAJ,KAAA,CAAW,WAAW,CAAX,SAAA,CAAX,SAAA,EAA4C,WAAW,CAAX,SAAA,CAAnD,SAAO,CAAN,GAAsF,IAAI,CAAvG,EAAA;AACA,YAAM,OAAO,GAAb,IAAA;;AAEA,YAAI,KAAK,GAAT,CAAA,EAAe;AACb,UAAA,KAAK,IAAL,GAAA;AACD;;AAED,YAAM,IAAI,GAAG,MAAA,OAAA,IAAA,KAAA,IAA0B,KAAK,GAAG,MAA/C,OAAA;AACA,YAAM,EAAE,GAAG,MAAA,OAAA,IAAA,KAAA,IAA0B,KAAK,GAAG,MAA7C,OAAA;AAEA,YAAM,KAAK,GAAG,CAAA,IAAA,KAAU,MAAA,OAAA,IAAA,KAAA,IAA0B,KAAK,GAAG,KAA1D,OAAc,CAAd;AACA,YAAM,IAAI,GAAG,CAAA,EAAA,IAAO,KAAA,OAAA,IAAP,KAAA,IAAgC,KAAK,GAAG,MAArD,OAAA;AAEA,eAAO;AACL,UAAA,EAAE,EADG,EAAA;AAEL,UAAA,IAAI,EAFC,IAAA;AAGL,UAAA,IAAI,EAHC,IAAA;AAIL,UAAA,KAAK,EAJA,KAAA;AAKL,UAAA,KAAK,EALA,KAAA;AAML,UAAA,KAAK,EAAE,WAAW,CAAX,SAAA,CANF,KAAA;AAOL,UAAA,QAAQ,EAAE;AACR,YAAA,CAAC,EAAE,WAAW,CAAX,SAAA,CADK,SAAA;AAER,YAAA,CAAC,EAAE,WAAW,CAAX,SAAA,CAAsB;AAFjB;AAPL,SAAP;AAYD;;;aAED,SAAA,cAAA,GAAkB,CAAE;;;;;;;aAKpB,SAAA,wBAAA,GAA4B;AAC1B,aAAA,2BAAA,GAAmC,KAAA,kBAAA,GAAnC,IAAA;AACD;;;;;;;aAKD,SAAA,eAAA,GAAmB;AACjB,aAAA,kBAAA,GAAA,IAAA;AACD;;;;GA/JU,CAGH,cAAA,CAAA,SAHG,C,CrClCb,CqCqCU;;;;;AAiKV,EAAA,MAAM,CAAN,gBAAA,CAAwB,aAAa,CAArC,SAAA,EAAiD;AAC/C,IAAA,KAAK,EAAE;AACL,MAAA,GADK,EAAA,SAAA,GAAA,GACE;AACL,eAAO,KAAA,IAAA,CAAP,CAAA;AAFG,OAAA;AAIL,MAAA,GAJK,EAAA,SAAA,GAAA,CAAA,KAAA,EAIO;AACV,aAAA,IAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANI,KADwC;AAS/C,IAAA,KAAK,EAAE;AACL,MAAA,GADK,EAAA,SAAA,GAAA,GACE;AACL,eAAO,KAAA,IAAA,CAAP,CAAA;AAFG,OAAA;AAIL,MAAA,GAJK,EAAA,SAAA,GAAA,CAAA,KAAA,EAIO;AACV,aAAA,IAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANI,KATwC;AAkB/C,IAAA,OAAO,EAAE;AACP,MAAA,GADO,EAAA,SAAA,GAAA,GACA;AACL,eAAO,KAAA,MAAA,CAAP,CAAA;AAFK,OAAA;AAIP,MAAA,GAJO,EAAA,SAAA,GAAA,CAAA,KAAA,EAIK;AACV,aAAA,MAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANM,KAlBsC;AA0B/C,IAAA,OAAO,EAAE;AACP,MAAA,GADO,EAAA,SAAA,GAAA,GACA;AACL,eAAO,KAAA,MAAA,CAAP,CAAA;AAFK,OAAA;AAIP,MAAA,GAJO,EAAA,SAAA,GAAA,CAAA,KAAA,EAIK;AACV,aAAA,MAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANM,KA1BsC;AAmC/C,IAAA,EAAE,EAAE;AACF,MAAA,GADE,EAAA,SAAA,GAAA,GACK;AACL,eAAO,KAAA,KAAA,CAAP,CAAA;AAFA,OAAA;AAIF,MAAA,GAJE,EAAA,SAAA,GAAA,CAAA,KAAA,EAIU;AACV,aAAA,KAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANC,KAnC2C;AA2C/C,IAAA,EAAE,EAAE;AACF,MAAA,GADE,EAAA,SAAA,GAAA,GACK;AACL,eAAO,KAAA,KAAA,CAAP,CAAA;AAFA,OAAA;AAIF,MAAA,GAJE,EAAA,SAAA,GAAA,CAAA,KAAA,EAIU;AACV,aAAA,KAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANC,KA3C2C;AAoD/C,IAAA,SAAS,EAAE;AACT,MAAA,GADS,EAAA,SAAA,GAAA,GACF;AACL,eAAO,KAAA,QAAA,CAAP,CAAA;AAFO,OAAA;AAIT,MAAA,GAJS,EAAA,SAAA,GAAA,CAAA,KAAA,EAIG;AACV,aAAA,QAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANQ,KApDoC;AA4D/C,IAAA,SAAS,EAAE;AACT,MAAA,GADS,EAAA,SAAA,GAAA,GACF;AACL,eAAO,KAAA,QAAA,CAAP,CAAA;AAFO,OAAA;AAIT,MAAA,GAJS,EAAA,SAAA,GAAA,CAAA,KAAA,EAIG;AACV,aAAA,QAAA,CAAA,CAAA,GAAA,KAAA;AACD;AANQ;AA5DoC,GAAjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCpMa,WAAA,GAOX,SAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAA4G;AAAA,IAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,CAAA;;AAAA,IAAA,oBAAA,CAAA,IAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,IAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,IAAA,oBAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,IAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,IAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;;AAC1G,SAAA,EAAA,GAAA,EAAA;AACA,SAAA,OAAA,GAAA,OAAA;AACA,SAAA,KAAA,GAAA,KAAA;AACA,SAAA,QAAA,GAAA,QAAA;AACA,SAAA,UAAA,GAAA,UAAA;;;;;;;;;;;;;;;;;ACLJ;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAGA;;AAAA;AAEA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASY,Y;;;;aAAA,Y,EAAA;AAAA,IAAA,YAAA,CAAA,cAAA,CAAA,GAAA,EAAA;AAAA,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,EAAA;AAAA,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,EAAA;AAAA,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,EAAA;AAAA,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,EAAA;AAAA,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,EAAA;KAAA,YAAA,KAAA,gBAAA,CAAA,YAAA,GAAA,YAAA,GAAA,EAAA,C;;MASA,a;;;;aAAA,a,EAAA;AAAA,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,EAAA;AAAA,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,EAAA;AAAA,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,EAAA;AAAA,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,EAAA;AAAA,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,EAAA;KAAA,aAAA,KAAA,gBAAA,CAAA,aAAA,GAAA,aAAA,GAAA,EAAA,C;;AAuEZ,MAAI,SAAS,GAAb,CAAA;;MAEa,WAAA,GAAA,aAAA,YAAA;;AAmFX,aAAA,WAAA,CAAA,IAAA,EAA6F;AAAA,UAAA,KAAA,GAAA,IAAA;;AAAA,UAA9E,WAA8E,GAAA,IAAA,CAA9E,WAA8E;AAAA,UAAjE,SAAiE,GAAA,IAAA,CAAjE,SAAiE;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAjFhE,IAiFgE,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EA9E1E,IA8E0E,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAjElE;AACzB,QAAA,IAAI,EADqB,IAAA;AAEzB,QAAA,IAAI,EAFqB,IAAA;AAGzB,QAAA,KAAK,EAAE;AAHkB,OAiEkE,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAxDnE,EAwDmE,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EArD/D,IAqD+D,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAnDlE,EAmDkE,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,gBAAA,EA7CzF;AACF,QAAA,OAAO,EADL,IAAA;AAEF,QAAA,KAAK,EAFH,IAAA;AAGF,QAAA,WAAW,EAAE;AAHX,OA6CyF,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EAtCnD,IAsCmD,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EApC7E,KAoC6E,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,iBAAA,EAnC3E,KAmC2E,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAlC9E,KAkC8E,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EAjCnF,KAiCmF,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAhClF,IAgCkF,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EA/B/D,IA+B+D,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,EA7BhF,IA6BgF,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EApBpF,CAAA,GAAA,SAAA,CAAA,QAAA,EAAS,UAAA,SAAA,EAA6C;AAC7D,aAAA,IAAA,CAAA,SAAA;AADO,OAAA,EAAA,wEAAA,CAoBoF,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAhBzE;;AAElB,QAAA,KAAK,EAAE,iBAAY,CAFD,SAEX,EAFW;;AAIlB,QAAA,IAAI,EAAE,iBAAY,CAJA,SAIZ,EAJY;;AAMlB,QAAA,GAAG,EAAE,iBAAY,CANC,SAMb,EANa;;AAQlB,QAAA,KAAK,EAAE,iBAAY,CARD,SAQX,EARW;;AAUlB,QAAA,QAAQ,EAAE,iBAAY,CAAZ,SAAA;AAVQ,OAgByE,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,KAAA,EAHtE,SAAS,EAG6D,CAAA;;AAC3F,WAAA,UAAA,GAAA,SAAA;AACA,WAAA,WAAA,GAAA,WAAA;AAEA,UAAM,IAAI,GAAV,IAAA;AAEA,WAAA,MAAA,GAAA,EAAA;;AAN2F,UAAA,KAAA,GAAA,SAAA,KAAA,CAAA,GAAA,EAAA;AASzF,QAAA,MAAM,CAAN,cAAA,CAAsB,KAAI,CAA1B,MAAA,EAAA,GAAA,EAAwC;AACtC,UAAA,GADsC,EAAA,SAAA,GAAA,GAC/B;AACL,mBAAO,IAAI,CAAX,GAAW,CAAX;AACD;AAHqC,SAAxC;AATyF,OAAA;;AAQ3F,WAAK,IAAL,GAAA,IAAA,YAAA,EAAgC;AAAA,QAAA,KAAA,CAArB,GAAqB,CAAA;AAM/B;;AAd0F,UAAA,MAAA,GAAA,SAAA,MAAA,CAAA,IAAA,EAAA;AAiBzF,QAAA,MAAM,CAAN,cAAA,CAAsB,KAAI,CAA1B,MAAA,EAAA,IAAA,EAAwC;AACtC,UAAA,KAAK,EAAE,SAAA,KAAA,GAAA;AAAA,mBAAoB,IAAI,CAAJ,IAAI,CAAJ,CAAA,KAAA,CAAA,IAAA,EAApB,SAAoB,CAApB;AAAA;AAD+B,SAAxC;AAjByF,OAAA;;AAgB3F,WAAK,IAAL,IAAA,IAAA,aAAA,EAAiC;AAAA,QAAA,MAAA,CAAtB,IAAsB,CAAA;AAIhC;;AAED,WAAA,UAAA,CAAA,kBAAA,EAAoC;AAAE,QAAA,WAAW,EAAE;AAAf,OAApC;AACD;;;;;;;;;;;;AAlDgB,eAAA,GAAA,GAA4B;AAC3C,eAAA,CAAA;AACD;;;;;;;aAkDD,SAAA,WAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAA+E;AAC7E,YAAM,YAAY,GAAG,KAAA,aAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAArB,IAAqB,CAArB;AACA,YAAM,WAAW,GAAG,KAAA,QAAA,CAApB,YAAoB,CAApB;;AAEA,aAAA,UAAA,CAAA,mBAAA,EAAqC;AACnC,UAAA,OAAO,EAD4B,OAAA;AAEnC,UAAA,KAAK,EAF8B,KAAA;AAGnC,UAAA,WAAW,EAHwB,WAAA;AAInC,UAAA,YAAY,EAJuB,YAAA;AAKnC,UAAA,WAAW,EALwB,WAAA;AAMnC,UAAA,IAAI,EAN+B,MAAA;AAOnC,UAAA,WAAW,EAAG;AAPqB,SAArC;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCD,SAAA,KAAA,CAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAA4G;AAC1G,YACE,KAAA,WAAA,MACA,CAAC,KADD,aAAA,IAEA,KAAA,QAAA,CAAA,MAAA,IAAwB,MAAM,CAAN,IAAA,KAAA,SAAA,GAAA,CAAA,GAFxB,CAEA,CAFA,IAGA,CAAC,YAAY,CAAZ,OAAA,CAAqB,MAAM,CAA3B,IAAA,EAJH,OAAA,EAKE;AACA,iBAAA,KAAA;AACD;;AAED,SAAA,GAAA,SAAA,CAAA,UAAA,EAAW,KAAX,QAAA,EAAA,MAAA;AAEA,aAAA,YAAA,GAAA,YAAA;AACA,aAAA,OAAA,GAAA,OAAA;AACA,aAAA,IAAA,GAAY,YAAY,CAAZ,OAAA,CAAZ,OAAY,CAAZ;AACA,aAAA,KAAA,GAAa,KAAA,QAAA,CAAA,KAAA,GACT,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,KAAA,QAAA,CADF,KACT,CADS,GAET;AAAE,UAAA,IAAI,EAAN,IAAA;AAAc,UAAA,KAAK,EAAnB,IAAA;AAA2B,UAAA,GAAG,EAA9B,IAAA;AAAsC,UAAA,MAAM,EAAE;AAA9C,SAFJ;AAGA,aAAA,QAAA,GAAA,KAAA;AACA,aAAA,YAAA,GACE,KAAA,QAAA,CAAc;AACZ,UAAA,WAAW,EADC,IAAA;AAEZ,UAAA,KAAK,EAAE,KAFK,SAAA;AAGZ,UAAA,KAAK,EAAE;AAHK,SAAd,KAIM,CAAC,KALT,QAAA;AAOA,eAAO,KAAP,YAAA;AACD;;;aAED,SAAA,WAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAA+E;AAC7E,YAAI,CAAC,KAAD,UAAA,IAAoB,EAAE,KAAA,YAAA,IAAqB,KAAA,YAAA,CAA/C,SAAwB,CAAxB,EAA6E;AAC3E,eAAA,aAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA;AACD;;AAED,YAAM,aAAa,GACjB,KAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,KAA2B,KAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAA3B,CAAA,IACA,KAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,KAA2B,KAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAD3B,CAAA,IAEA,KAAA,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,KAA6B,KAAA,MAAA,CAAA,IAAA,CAAA,MAAA,CAF7B,CAAA,IAGA,KAAA,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,KAA6B,KAAA,MAAA,CAAA,IAAA,CAAA,MAAA,CAJ/B,CAAA;AAMA,YAAA,EAAA;AACA,YAZ6E,EAY7E,CAZ6E,CAAA;;AAe7E,YAAI,KAAA,aAAA,IAAsB,CAAC,KAA3B,eAAA,EAAiD;AAC/C,UAAA,EAAE,GAAG,KAAA,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAA2B,KAAA,MAAA,CAAA,KAAA,CAAA,MAAA,CAAhC,CAAA;AACA,UAAA,EAAE,GAAG,KAAA,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAA2B,KAAA,MAAA,CAAA,KAAA,CAAA,MAAA,CAAhC,CAAA;AAEA,eAAA,eAAA,GAAuB,CAAA,GAAA,UAAA,CAAA,OAAA,EAAA,EAAA,EAAA,EAAA,IAAgB,KAAvC,oBAAA;AACD;;AAED,YAAM,YAAY,GAAG,KAAA,eAAA,CAArB,OAAqB,CAArB;AACA,YAAM,SAAS,GAAG;AAChB,UAAA,OAAO,EADS,OAAA;AAEhB,UAAA,YAAY,EAFI,YAAA;AAGhB,UAAA,WAAW,EAAE,KAAA,QAAA,CAHG,YAGH,CAHG;AAIhB,UAAA,KAAK,EAJW,KAAA;AAKhB,UAAA,IAAI,EALY,MAAA;AAMhB,UAAA,WAAW,EANK,WAAA;AAOhB,UAAA,EAAE,EAPc,EAAA;AAQhB,UAAA,EAAE,EARc,EAAA;AAShB,UAAA,SAAS,EATO,aAAA;AAUhB,UAAA,WAAW,EAAG;AAVE,SAAlB;;AAaA,YAAI,CAAJ,aAAA,EAAoB;;AAElB,UAAA,iBAAY,CAAZ,gBAAA,CAA8B,KAAA,MAAA,CAA9B,QAAA,EAAoD,KAAA,MAAA,CAApD,KAAA;AACD;;AAED,aAAA,UAAA,CAAA,mBAAA,EAAA,SAAA;;AAEA,YAAI,CAAA,aAAA,IAAkB,CAAC,KAAvB,UAAA,EAAwC;;AAEtC,cAAI,KAAJ,WAAI,EAAJ,EAAwB;AACtB,YAAA,SAAS,CAAT,IAAA,GAAA,IAAA;AACA,iBAAA,IAAA,CAAA,SAAA;AACD;;AAED,cAAI,KAAJ,eAAA,EAA0B;AACxB,YAAA,iBAAY,CAAZ,UAAA,CAAwB,KAAA,MAAA,CAAxB,IAAA,EAA0C,KAAA,MAAA,CAA1C,GAAA;AACD;AACF;AACF;;;;;;;;;;;;;;;;;;;;;;aAoBD,SAAA,IAAA,CAAA,SAAA,EAAuB;AACrB,YAAI,CAAA,SAAA,IAAc,CAAC,SAAS,CAA5B,KAAA,EAAoC;AAClC,UAAA,iBAAY,CAAZ,aAAA,CAA2B,KAAA,MAAA,CAA3B,KAAA;AACD;;AAED,QAAA,SAAS,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EACV;AACE,UAAA,OAAO,EAAE,KAAA,cAAA,CADX,OAAA;AAEE,UAAA,KAAK,EAAE,KAAA,cAAA,CAFT,KAAA;AAGE,UAAA,WAAW,EAAE,KAAA,cAAA,CAHf,WAAA;AAIE,UAAA,WAAW,EAAE;AAJf,SADU,EAOV,SAAS,IAPX,EAAY,CAAZ;AAUA,QAAA,SAAS,CAAT,KAAA,GAAA,MAAA;;AAEA,aAAA,QAAA,CAAA,SAAA;;;;;aAIF,SAAA,SAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,cAAA,EAA0G;AACxG,YAAI,YAAY,GAAG,KAAA,eAAA,CAAnB,OAAmB,CAAnB;;AAEA,YAAI,YAAY,KAAK,CAArB,CAAA,EAAyB;AACvB,UAAA,YAAY,GAAG,KAAA,aAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAf,KAAe,CAAf;AACD;;AAED,YAAM,IAAI,GAAG,WAAA,IAAA,CAAgB,KAAK,CAArB,IAAA,IAAA,QAAA,GAAb,IAAA;;AAEA,aAAA,UAAA,CAAA,gBAAA,MAAA,CAAA,IAAA,CAAA,EAAqF;AACnF,UAAA,OAAO,EAD4E,OAAA;AAEnF,UAAA,YAAY,EAFuE,YAAA;AAGnF,UAAA,WAAW,EAAE,KAAA,QAAA,CAHsE,YAGtE,CAHsE;AAInF,UAAA,KAAK,EAJ8E,KAAA;AAKnF,UAAA,WAAW,EALwE,WAAA;AAMnF,UAAA,IAAI,EAN+E,IAAA;AAOnF,UAAA,cAAc,EAPqE,cAAA;AAQnF,UAAA,WAAW,EAAG;AARqE,SAArF;;AAWA,YAAI,CAAC,KAAL,UAAA,EAAsB;AACpB,eAAA,GAAA,CAAA,KAAA;AACD;;AAED,aAAA,aAAA,CAAA,OAAA,EAAA,KAAA;AACD;;;aAED,SAAA,YAAA,CAAA,KAAA,EAA4B;AAC1B,aAAA,GAAA,CAAA,KAAA;;AACA,aAAA,UAAA,CAAA,mBAAA,EAAqC;AACnC,UAAA,KAAK,EAD8B,KAAA;AAEnC,UAAA,IAAI,EAF+B,MAAA;AAGnC,UAAA,WAAW,EAAG;AAHqB,SAArC;AAKD;;;;;;;;;;;;;;;;;;;;aAkBD,SAAA,GAAA,CAAA,KAAA,EAA+B;AAC7B,aAAA,OAAA,GAAA,IAAA;AACA,QAAA,KAAK,GAAG,KAAK,IAAI,KAAA,cAAA,CAAjB,KAAA;AACA,YAAA,cAAA;;AAEA,YAAI,KAAJ,WAAI,EAAJ,EAAwB;AACtB,UAAA,cAAc,GAAG,KAAA,QAAA,CAAc;AAC7B,YAAA,KAAK,EADwB,KAAA;AAE7B,YAAA,WAAW,EAFkB,IAAA;AAG7B,YAAA,KAAK,EAAE;AAHsB,WAAd,CAAjB;AAKD;;AAED,aAAA,OAAA,GAAA,KAAA;;AAEA,YAAI,cAAc,KAAlB,IAAA,EAA6B;AAC3B,eAAA,IAAA;AACD;AACF;;;aAED,SAAA,aAAA,GAAiB;AACf,eAAO,KAAA,YAAA,GAAoB,KAAA,QAAA,CAApB,IAAA,GAAP,IAAA;AACD;;;aAED,SAAA,WAAA,GAAe;AACb,eAAO,KAAP,YAAA;AACD;;;;;aAGD,SAAA,IAAA,GAAQ;AACN,aAAA,UAAA,CAAA,mBAAA,EAAqC;AAAE,UAAA,WAAW,EAAE;AAAf,SAArC;;AAEA,aAAA,YAAA,GAAoB,KAAA,OAAA,GAApB,IAAA;AAEA,aAAA,YAAA,GAAA,KAAA;AACA,aAAA,QAAA,GAAA,IAAA;AACA,aAAA,QAAA,CAAA,IAAA,GAAqB,KAAA,SAAA,GAArB,IAAA;AACD;;;aAED,SAAA,eAAA,CAAA,OAAA,EAAuC;AACrC,YAAM,SAAS,GAAG,iBAAY,CAAZ,YAAA,CADmB,OACnB,CAAlB,CADqC,CAAA;;;AAIrC,eAAO,KAAA,WAAA,KAAA,OAAA,IAAgC,KAAA,WAAA,KAAhC,KAAA,GACH,KAAA,QAAA,CAAA,MAAA,GADG,CAAA,GAEH,QAAG,CAAH,SAAA,CAAc,KAAd,QAAA,EAA6B,UAAA,UAAA,EAAA;AAAA,iBAAgB,UAAU,CAAV,EAAA,KAAhB,SAAA;AAFjC,SAEI,CAFJ;AAGD;;;aAED,SAAA,cAAA,CAAA,OAAA,EAA8B;AAC5B,eAAO,KAAA,QAAA,CAAc,KAAA,eAAA,CAArB,OAAqB,CAAd,CAAP;AACD;;;aAED,SAAA,aAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,IAAA,EAAiG;AAC/F,YAAM,EAAE,GAAG,iBAAY,CAAZ,YAAA,CAAX,OAAW,CAAX;;AACA,YAAI,YAAY,GAAG,KAAA,eAAA,CAAnB,OAAmB,CAAnB;AACA,YAAI,WAAW,GAAG,KAAA,QAAA,CAAlB,YAAkB,CAAlB;AAEA,QAAA,IAAI,GAAG,IAAI,KAAJ,KAAA,GAAA,KAAA,GAAyB,IAAI,IAAI,iBAAA,IAAA,CAAsB,KAAK,CAAnE,IAAwC,CAAxC;;AAEA,YAAI,CAAJ,WAAA,EAAkB;AAChB,UAAA,WAAW,GAAG,IAAI,gBAAA,CAAJ,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAd,IAAc,CAAd;AAEA,UAAA,YAAY,GAAG,KAAA,QAAA,CAAf,MAAA;AACA,eAAA,QAAA,CAAA,IAAA,CAAA,WAAA;AAJF,SAAA,MAKO;AACL,UAAA,WAAW,CAAX,OAAA,GAAA,OAAA;AACD;;AAED,QAAA,iBAAY,CAAZ,SAAA,CACE,KAAA,MAAA,CADF,GAAA,EAEE,KAAA,QAAA,CAAA,GAAA,CAAkB,UAAA,CAAA,EAAA;AAAA,iBAAO,CAAC,CAAR,OAAA;AAFpB,SAEE,CAFF,EAGE,KAHF,IAGE,EAHF;;AAKA,QAAA,iBAAY,CAAZ,cAAA,CAA4B,KAAA,MAAA,CAA5B,KAAA,EAA+C,KAAA,MAAA,CAA/C,IAAA,EAAiE,KAAA,MAAA,CAAjE,GAAA;;AAEA,YAAA,IAAA,EAAU;AACR,eAAA,aAAA,GAAA,IAAA;AAEA,UAAA,WAAW,CAAX,QAAA,GAAuB,KAAA,MAAA,CAAA,GAAA,CAAvB,SAAA;AACA,UAAA,WAAW,CAAX,UAAA,GAAA,WAAA;;AACA,UAAA,iBAAY,CAAZ,aAAA,CAA2B,KAA3B,WAAA,EAAA,OAAA;;AAEA,cAAI,CAAC,KAAL,WAAK,EAAL,EAAyB;AACvB,YAAA,iBAAY,CAAZ,UAAA,CAAwB,KAAA,MAAA,CAAxB,KAAA,EAA2C,KAAA,MAAA,CAA3C,GAAA;;AACA,YAAA,iBAAY,CAAZ,UAAA,CAAwB,KAAA,MAAA,CAAxB,IAAA,EAA0C,KAAA,MAAA,CAA1C,GAAA;;AAEA,iBAAA,SAAA,GAAA,KAAA;AACA,iBAAA,eAAA,GAAA,KAAA;AACD;AACF;;AAED,aAAA,oBAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA;;AAEA,aAAA,UAAA,CAAA,6BAAA,EAA+C;AAC7C,UAAA,OAAO,EADsC,OAAA;AAE7C,UAAA,KAAK,EAFwC,KAAA;AAG7C,UAAA,WAAW,EAHkC,WAAA;AAI7C,UAAA,IAAI,EAJyC,IAAA;AAK7C,UAAA,WAAW,EALkC,WAAA;AAM7C,UAAA,YAAY,EANiC,YAAA;AAO7C,UAAA,WAAW,EAAG;AAP+B,SAA/C;;AAUA,eAAA,YAAA;AACD;;;aAED,SAAA,aAAA,CAAA,OAAA,EAAA,KAAA,EAA8D;AAC5D,YAAM,YAAY,GAAG,KAAA,eAAA,CAArB,OAAqB,CAArB;AAEA,YAAI,YAAY,KAAK,CAArB,CAAA,EAAyB;AAEzB,YAAM,WAAW,GAAG,KAAA,QAAA,CAApB,YAAoB,CAApB;;AAEA,aAAA,UAAA,CAAA,6BAAA,EAA+C;AAC7C,UAAA,OAAO,EADsC,OAAA;AAE7C,UAAA,KAAK,EAFwC,KAAA;AAG7C,UAAA,WAAW,EAHkC,IAAA;AAI7C,UAAA,YAAY,EAJiC,YAAA;AAK7C,UAAA,WAAW,EALkC,WAAA;AAM7C,UAAA,WAAW,EAAG;AAN+B,SAA/C;;AASA,aAAA,QAAA,CAAA,MAAA,CAAA,YAAA,EAAA,CAAA;AACA,aAAA,aAAA,GAAA,KAAA;AACD;;;aAED,SAAA,oBAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAwF;AACtF,aAAA,cAAA,CAAA,OAAA,GAAA,OAAA;AACA,aAAA,cAAA,CAAA,KAAA,GAAA,KAAA;AACA,aAAA,cAAA,CAAA,WAAA,GAAA,WAAA;AACD;;;aAED,SAAA,OAAA,GAAW;AACT,aAAA,cAAA,CAAA,OAAA,GAAA,IAAA;AACA,aAAA,cAAA,CAAA,KAAA,GAAA,IAAA;AACA,aAAA,cAAA,CAAA,WAAA,GAAA,IAAA;AACD;;;aAED,SAAA,oBAAA,CAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAKE;AACA,eAAO,IAAI,kBAAA,CAAJ,aAAA,CAAA,IAAA,EAAA,KAAA,EAAqC,KAAA,QAAA,CAArC,IAAA,EAAA,KAAA,EAAgE,KAAhE,OAAA,EAAA,MAAA,EAAP,IAAO,CAAP;AACD;;;aAED,SAAA,UAAA,CAAA,MAAA,EAA+D;AAC7D,aAAA,YAAA,CAAA,IAAA,CAAA,MAAA;;AAEA,YAAI,CAAC,KAAD,SAAA,IAAmB,MAAM,CAAN,SAAA,IAAoB,KAAA,SAAA,CAA3C,SAAA,EAAqE;AACnE,eAAA,SAAA,GAAA,MAAA;AACD;AACF;;;aAED,SAAA,QAAA,CAAA,SAAA,EAEE;AAAA,YACQ,KADR,GACuC,SADvC,CAAA,KAAA;AAAA,YACe,KADf,GACuC,SADvC,CAAA,KAAA;AAAA,YACsB,MADtB,GACuC,SADvC,CAAA,MAAA;AAAA,YAC8B,IAD9B,GACuC,SADvC,CAAA,IAAA;AAAA,YAEQ,IAFR,GAAA,KAAA,IAAA;;AAIA,YAAI,IAAI,IAAI,KAAK,KAAjB,MAAA,EAA8B;;AAE5B,UAAA,SAAS,CAAT,QAAA,CAAmB,KAAnB,KAAA,EAAA,IAAA,EAAqC,KAAA,MAAA,CAAA,KAAA,CAAkB,KAAA,YAAA,CAAA,OAAA,CAAvD,WAAqC,CAArC;;AAEA,UAAA,IAAI,CAAJ,KAAA,GAAa,IAAI,CAAJ,KAAA,GAAa,IAAI,CAA9B,IAAA;AACA,UAAA,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAhC,GAAA;AACD;;AAED,YAAM,YAAY,GAAG,KAAA,UAAA,CAAA,8BAAA,MAAA,CAAA,KAAA,CAAA,EAArB,SAAqB,CAArB;;AAEA,YAAI,YAAY,KAAhB,KAAA,EAA4B;AAC1B,iBAAA,KAAA;AACD;;AAED,YAAM,MAAM,GAAI,SAAS,CAAT,MAAA,GAAmB,KAAA,oBAAA,CAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAnC,IAAmC,CAAnC;;AAEA,aAAA,UAAA,CAAA,uBAAA,MAAA,CAAA,KAAA,CAAA,EAAA,SAAA;;AAEA,YAAI,KAAK,KAAT,OAAA,EAAuB;AACrB,eAAA,SAAA,GAAA,MAAA;AACD;;AAED,aAAA,UAAA,CAAA,MAAA;;AAEA,aAAA,UAAA,CAAA,6BAAA,MAAA,CAAA,KAAA,CAAA,EAAA,SAAA;;AAEA,eAAA,IAAA;AACD;;;aAED,SAAA,IAAA,GAAQ;AACN,eAAO,IAAI,CAAX,GAAO,EAAP;AACD;;;;GA1gBU,E;;;sBA6gBE,W;;;;;;;;;;;AC1nBf;;AAAA;AAGA;;AAAA;AAgBA;AAAE,EAAA,gBAAA,CAAD,aAAC,CAAD,QAAC,GAAD,EAAC;;AAEK,WAAA,QAAA,CAAA,WAAA,EAA6C;AAClD,QAAI,CAAC,WAAW,CAAhB,aAAA,EAAgC;AAC9B;AACD;;AAED,IAAA,WAAW,CAAC,WAAW,CAAX,MAAA,CAAD,GAAA,EAAyB,WAAW,CAAX,MAAA,CAApC,KAAW,CAAX;AAEA,IAAA,WAAW,CAAX,MAAA,CAAA,OAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,WAAW,CAAX,MAAA,CAAA,OAAA,CAAA,CAAA,GAAA,CAAA;AACD;;AAED,WAAA,YAAA,CAAA,IAAA,EAAsE;AAAA,QAA7C,WAA6C,GAAA,IAAA,CAA7C,WAA6C;AACpE,IAAA,YAAY,CAAZ,WAAY,CAAZ;AACD;;AAED,WAAA,SAAA,CAAA,KAAA,EAAmF;AAAA,QAA7D,WAA6D,GAAA,KAAA,CAA7D,WAA6D;AACjF,QAAM,UAAU,GAAG,YAAY,CAA/B,WAA+B,CAA/B;AAEA,QAAI,CAAJ,UAAA,EAAiB;AAEjB,IAAA,WAAW,CAAX,IAAA,CAAiB;AAAE,MAAA,MAAM,EAAE;AAAV,KAAjB;AACA,IAAA,WAAW,CAAX,GAAA;AAEA,WAAA,KAAA;AACD;;AAED,WAAA,QAAA,CAAA,KAAA,EAA6D;AAAA,QAA7C,WAA6C,GAAA,KAAA,CAA7C,WAA6C;AAC3D,IAAA,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,WAAW,CAAX,MAAA,CAAA,OAAA,CAAA,CAAA,GAAA,CAAA;AACA,IAAA,WAAW,CAAX,MAAA,CAAA,OAAA,CAAA,CAAA,GAAA,CAAA;AACD;;AAEM,WAAA,YAAA,CAAA,WAAA,EAAiD;AACtD,QAAI,CAAC,UAAU,CAAf,WAAe,CAAf,EAA8B;AAC5B,aAAA,KAAA;AACD;;AAHqD,QAK9C,OAL8C,GAKlC,WAAW,CALuB,MAKlC,CALkC,OAAA;AAOtD,IAAA,WAAW,CAAC,WAAW,CAAX,MAAA,CAAD,GAAA,EAAX,OAAW,CAAX;AACA,IAAA,WAAW,CAAC,WAAW,CAAX,MAAA,CAAD,KAAA,EAAX,OAAW,CAAX;;AACA,IAAA,SAAS,CAAT,QAAA,CAAmB,WAAW,CAA9B,KAAA,EAAsC,WAAW,CAAjD,IAAA,EAAA,OAAA;;AAEA,IAAA,OAAO,CAAP,CAAA,GAAA,CAAA;AACA,IAAA,OAAO,CAAP,CAAA,GAAA,CAAA;AAEA,WAAA,IAAA;AACD;;AAED,WAAA,QAAA,CAAA,KAAA,EAAuD;AAAA,QAAf,CAAe,GAAA,KAAA,CAAf,CAAe;AAAA,QAAZ,CAAY,GAAA,KAAA,CAAZ,CAAY;AACrD,SAAA,MAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA;AACA,SAAA,MAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA;AAEA,SAAA,MAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA;AACA,SAAA,MAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA;AACD;;AAED,WAAA,WAAA,CAAA,KAAA,EAAA,KAAA,EAAyD;AAAA,QAAjC,IAAiC,GAAA,KAAA,CAAjC,IAAiC;AAAA,QAA3B,MAA2B,GAAA,KAAA,CAA3B,MAA2B;AAAA,QAAf,CAAe,GAAA,KAAA,CAAf,CAAe;AAAA,QAAZ,CAAY,GAAA,KAAA,CAAZ,CAAY;AACvD,IAAA,IAAI,CAAJ,CAAA,IAAA,CAAA;AACA,IAAA,IAAI,CAAJ,CAAA,IAAA,CAAA;AACA,IAAA,MAAM,CAAN,CAAA,IAAA,CAAA;AACA,IAAA,MAAM,CAAN,CAAA,IAAA,CAAA;AACD;;AAED,WAAA,UAAA,CAAA,WAAA,EAA+C;AAC7C,WAAO,CAAC,EAAE,WAAW,CAAX,MAAA,CAAA,OAAA,CAAA,CAAA,IAAgC,WAAW,CAAX,MAAA,CAAA,OAAA,CAA1C,CAAQ,CAAR;AACD;;AAED,MAAM,MAAc,GAAG;AACrB,IAAA,EAAE,EADmB,QAAA;AAErB,IAAA,MAAM,EAAE,CAAA,WAAA,EAAA,gBAAA,EAAA,SAAA,EAFa,SAEb,CAFa;AAGrB,IAAA,OAHqB,EAAA,SAAA,OAAA,CAAA,KAAA,EAGL;AACd,MAAA,KAAK,CAAL,WAAA,CAAA,SAAA,CAAA,QAAA,GAAA,QAAA;AAJmB,KAAA;AAMrB,IAAA,SAAS,EAAE;AACT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AACvC,QAAA,WAAW,CAAX,MAAA,GAAqB;AACnB,UAAA,KAAK,EAAE;AAAE,YAAA,CAAC,EAAH,CAAA;AAAQ,YAAA,CAAC,EAAE;AAAX,WADY;AAEnB,UAAA,OAAO,EAAE;AAAE,YAAA,CAAC,EAAH,CAAA;AAAQ,YAAA,CAAC,EAAE;AAAX;AAFU,SAArB;AAFO,OAAA;AAOT,qCAA+B,SAAA,yBAAA,CAAA,KAAA,EAAA;AAAA,YAAG,WAAH,GAAA,KAAA,CAAA,WAAA;AAAA,eAAqB,QAAQ,CAA7B,WAA6B,CAA7B;AAPtB,OAAA;AAQT,0CARS,YAAA;AAST,yCATS,YAAA;AAUT,wCAVS,SAAA;AAWT,2BAAqB;AAXZ;AANU,GAAvB;sBAqBe,M;;;;;;;;;AC9Gf;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,WAAA,YAAA,CAAA,KAAA,EAAgC;AAAA,QACtB,QADsB,GACT,KADS,CAAA,QAAA;AAG9B,IAAA,KAAK,CAAL,SAAA,CAAgB,WAAA,CAAhB,OAAA;AACA,IAAA,KAAK,CAAL,SAAA,CAAgB,SAAS,CAAzB,OAAA;AACA,IAAA,KAAK,CAAL,OAAA,CAAA,MAAA,CAAA,YAAA,GAAA,IAAA;AACA,IAAA,KAAK,CAAL,OAAA,CAAA,MAAA,CAAA,MAAA,GAAA,IAAA;AAEA,IAAA,QAAQ,CAAR,SAAA,CAAA,OAAA,GAA6B;AAC3B,MAAA,OAAO,EADoB,KAAA;AAE3B,MAAA,UAAU,EAFiB,EAAA;;AAG3B,MAAA,QAAQ,EAHmB,GAAA;;AAI3B,MAAA,QAAQ,EAJmB,EAAA;;AAK3B,MAAA,WAAW,EALgB,IAAA;;AAM3B,MAAA,iBAAiB,EANU,GAAA,CAAA;;AAAA,KAA7B;AAQD;;MAEY,YAAA,GAAA,aAAA,YAAA;;;AAwBX,aAAA,YAAA,CAAA,WAAA,EAAuC;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAvB9B,KAuB8B,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,EAtB1B,KAsB0B,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EArB3B,KAqB2B,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EApBzB,KAoByB,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EAjBvB,CAiBuB,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,IAAA,EAblC,CAakC,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,IAAA,EAZlC,CAYkC,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,IAAA,EAVlC,CAUkC,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EAL1B,CAK0B,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EAJ1B,CAI0B,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;AACrC,WAAA,WAAA,GAAA,WAAA;AACD;;;;aAED,SAAA,KAAA,CAAA,KAAA,EAAgC;AAAA,YACtB,WADsB,GAAA,KAAA,WAAA;AAE9B,YAAM,OAAO,GAAG,UAAU,CAA1B,WAA0B,CAA1B;;AAEA,YAAI,CAAA,OAAA,IAAY,CAAC,OAAO,CAAxB,OAAA,EAAkC;AAChC,iBAAA,KAAA;AACD;;AAN6B,YAQd,cARc,GAQK,WAAW,CAAX,MAAA,CARL,QAQK,CARL,MAAA;AAS9B,YAAM,YAAY,GAAG,CAAA,GAAA,UAAA,CAAA,OAAA,EAAM,cAAc,CAApB,CAAA,EAAwB,cAAc,CAA3D,CAAqB,CAArB;AACA,YAAM,YAAY,GAAG,KAAA,YAAA,KAAsB,KAAA,YAAA,GAAoB,IAAI,iBAAA,CAAJ,OAAA,CAA/D,WAA+D,CAA1C,CAArB;AAEA,QAAA,YAAY,CAAZ,QAAA,CAAsB,WAAW,CAAjC,YAAA;AAEA,aAAA,EAAA,GAAU,WAAW,CAArB,IAAU,EAAV;AACA,aAAA,WAAA,GAAmB,OAAO,CAA1B,WAAA;AACA,aAAA,EAAA,GAAA,YAAA;AACA,aAAA,aAAA,GAAqB;AAAE,UAAA,CAAC,EAAH,CAAA;AAAQ,UAAA,CAAC,EAAE;AAAX,SAArB;AACA,aAAA,WAAA,GAAmB,WAAW,CAAX,MAAA,CAAA,GAAA,CAAnB,IAAA;AAEA,aAAA,WAAA,GAAmB,YAAY,CAAZ,OAAA,CAAqB;AACtC,UAAA,UAAU,EAAE,KAD0B,WAAA;AAEtC,UAAA,MAAM,EAFgC,IAAA;AAGtC,UAAA,KAAK,EAAE;AAH+B,SAArB,CAAnB;AAMA,YAAM,MAAM,GACV,KAAA,EAAA,GAAU,WAAW,CAAX,MAAA,CAAA,GAAA,CAAV,SAAA,GAAA,EAAA,IACA,YAAY,GAAG,OAAO,CADtB,QAAA,IAEA,YAAY,GAAG,OAAO,CAHxB,QAAA;;AAKA,YAAA,MAAA,EAAY;AACV,eAAA,YAAA;AADF,SAAA,MAEO;AACL,UAAA,YAAY,CAAZ,MAAA,GAAsB,YAAY,CAAZ,MAAA,CAAoB,KAA1C,WAAsB,CAAtB;;AAEA,cAAI,CAAC,YAAY,CAAZ,MAAA,CAAL,OAAA,EAAkC;AAChC,mBAAA,KAAA;AACD;;AAED,eAAA,cAAA;AAxC4B,SAAA,CAAA;;;AA4C9B,QAAA,WAAW,CAAX,YAAA,CAAA,MAAA,CAAA,IAAA,GA5C8B,IA4C9B,CA5C8B,CAAA;;AA+C9B,QAAA,WAAW,CAAX,QAAA,CAAqB,KAArB,YAAA;;AACA,QAAA,WAAW,CAAX,QAAA,CAAqB;AACnB,UAAA,WAAW,EADQ,WAAA;AAEnB,UAAA,KAAK,EAFc,KAAA;AAGnB,UAAA,KAAK,EAAE;AAHY,SAArB;;AAKA,QAAA,WAAW,CAAX,QAAA,CAAqB;AAAE,UAAA,CAAC,EAAE,CAAC,KAAA,YAAA,CAAN,CAAA;AAA2B,UAAA,CAAC,EAAE,CAAC,KAAA,YAAA,CAAkB;AAAjD,SAArB,EArD8B,CAAA;;AAuD9B,QAAA,WAAW,CAAX,YAAA,CAAA,MAAA,CAAA,IAAA,GAAA,IAAA;AAEA,aAAA,MAAA,GAAA,IAAA;AACA,QAAA,WAAW,CAAX,UAAA,GAAA,IAAA;AAEA,eAAA,IAAA;AACD;;;aAED,SAAA,YAAA,GAAgB;AAAA,YAAA,KAAA,GAAA,IAAA;;AACd,YAAM,aAAa,GAAG,KAAA,WAAA,CAAA,MAAA,CAAA,QAAA,CAAtB,MAAA;AACA,YAAM,OAAO,GAAG,UAAU,CAAC,KAA3B,WAA0B,CAA1B;AACA,YAAM,MAAM,GAAG,OAAO,CAAtB,UAAA;AACA,YAAM,UAAU,GAAG,CAAC,IAAI,CAAJ,GAAA,CAAS,OAAO,CAAP,QAAA,GAAmB,KAA7B,EAAC,CAAD,GAAnB,MAAA;AAEA,aAAA,YAAA,GAAoB;AAClB,UAAA,CAAC,EAAE,CAAC,aAAa,CAAb,CAAA,GAAD,UAAA,IADe,MAAA;AAElB,UAAA,CAAC,EAAE,CAAC,aAAa,CAAb,CAAA,GAAD,UAAA,IAAiC;AAFlB,SAApB;AAKA,aAAA,EAAA,GAAA,UAAA;AACA,aAAA,SAAA,GAAiB,MAAM,GAAG,KAA1B,EAAA;AACA,aAAA,SAAA,GAAiB,IAAI,OAAO,CAAP,QAAA,GAAmB,KAAxC,EAAA;AAbc,YAeN,YAfM,GAAA,KAAA,YAAA;AAAA,YAeQ,WAfR,GAAA,KAAA,WAAA;AAiBd,QAAA,WAAW,CAAX,UAAA,GAAyB;AACvB,UAAA,CAAC,EAAE,KAAA,WAAA,CAAA,CAAA,GAAqB,KAAA,YAAA,CADD,CAAA;AAEvB,UAAA,CAAC,EAAE,KAAA,WAAA,CAAA,CAAA,GAAqB,KAAA,YAAA,CAAkB;AAFnB,SAAzB;AAKA,QAAA,YAAY,CAAZ,MAAA,GAAsB,YAAY,CAAZ,MAAA,CAAtB,WAAsB,CAAtB;;AAEA,YAAI,YAAY,CAAZ,MAAA,CAAJ,OAAA,EAAiC;AAC/B,eAAA,UAAA,GAAA,IAAA;AACA,eAAA,cAAA,GAAsB;AACpB,YAAA,CAAC,EAAE,KAAA,YAAA,CAAA,CAAA,GAAsB,YAAY,CAAZ,MAAA,CAAA,KAAA,CADL,CAAA;AAEpB,YAAA,CAAC,EAAE,KAAA,YAAA,CAAA,CAAA,GAAsB,YAAY,CAAZ,MAAA,CAAA,KAAA,CAA0B;AAF/B,WAAtB;AAID;;AAED,aAAA,WAAA,CAAiB,YAAA;AAAA,iBAAM,KAAI,CAAV,WAAM,EAAN;AAAjB,SAAA;AACD;;;aAED,SAAA,cAAA,GAAkB;AAAA,YAAA,MAAA,GAAA,IAAA;;AAChB,aAAA,SAAA,GAAA,IAAA;AACA,aAAA,UAAA,GAAA,IAAA;AACA,aAAA,YAAA,GAAoB;AAClB,UAAA,CAAC,EAAE,KAAA,YAAA,CAAA,MAAA,CAAA,KAAA,CADe,CAAA;AAElB,UAAA,CAAC,EAAE,KAAA,YAAA,CAAA,MAAA,CAAA,KAAA,CAA+B;AAFhB,SAApB;AAKA,aAAA,WAAA,CAAiB,YAAA;AAAA,iBAAM,MAAI,CAAV,aAAM,EAAN;AAAjB,SAAA;AACD;;;aAED,SAAA,WAAA,CAAA,MAAA,EAAiC;AAAA,YAAA,MAAA,GAAA,IAAA;;AAC/B,aAAA,OAAA,GAAe,QAAA,CAAA,OAAA,CAAA,OAAA,CAAY,YAAM;AAC/B,cAAI,MAAI,CAAR,MAAA,EAAiB;AACf,YAAA,MAAM;AACP;AAHH,SAAe,CAAf;AAKD;;;aAED,SAAA,WAAA,GAAe;AAAA,YAAA,MAAA,GAAA,IAAA;;AAAA,YACL,WADK,GAAA,KAAA,WAAA;AAEb,YAAM,OAAO,GAAG,UAAU,CAA1B,WAA0B,CAA1B;AACA,YAAM,MAAM,GAAG,OAAO,CAAtB,UAAA;AACA,YAAM,CAAC,GAAG,CAAC,WAAW,CAAX,IAAA,KAAqB,KAAtB,EAAA,IAAV,IAAA;;AAEA,YAAI,CAAC,GAAG,KAAR,EAAA,EAAiB;AACf,cAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAJ,GAAA,CAAS,CAAA,MAAA,GAAT,CAAA,IAAwB,KAAzB,SAAA,IAA2C,KAAhE,SAAA;AACA,cAAA,SAAA;;AAEA,cAAI,KAAJ,UAAA,EAAqB;AACnB,YAAA,SAAS,GAAG,sBAAsB,CAAA,CAAA,EAAA,CAAA,EAGhC,KAAA,YAAA,CAHgC,CAAA,EAIhC,KAAA,YAAA,CAJgC,CAAA,EAKhC,KAAA,cAAA,CALgC,CAAA,EAMhC,KAAA,cAAA,CANgC,CAAA,EAAlC,QAAkC,CAAlC;AADF,WAAA,MAUO;AACL,YAAA,SAAS,GAAG;AACV,cAAA,CAAC,EAAE,KAAA,YAAA,CAAA,CAAA,GADO,QAAA;AAEV,cAAA,CAAC,EAAE,KAAA,YAAA,CAAA,CAAA,GAAsB;AAFf,aAAZ;AAID;;AAED,cAAM,KAAK,GAAG;AAAE,YAAA,CAAC,EAAE,SAAS,CAAT,CAAA,GAAc,KAAA,aAAA,CAAnB,CAAA;AAAyC,YAAA,CAAC,EAAE,SAAS,CAAT,CAAA,GAAc,KAAA,aAAA,CAAmB;AAA7E,WAAd;AAEA,eAAA,aAAA,CAAA,CAAA,IAAwB,KAAK,CAA7B,CAAA;AACA,eAAA,aAAA,CAAA,CAAA,IAAwB,KAAK,CAA7B,CAAA;AAEA,UAAA,WAAW,CAAX,QAAA,CAAA,KAAA;AACA,UAAA,WAAW,CAAX,IAAA;AAEA,eAAA,WAAA,CAAiB,YAAA;AAAA,mBAAM,MAAI,CAAV,WAAM,EAAN;AAAjB,WAAA;AA7BF,SAAA,MA8BO;AACL,UAAA,WAAW,CAAX,QAAA,CAAqB;AACnB,YAAA,CAAC,EAAE,KAAA,cAAA,CAAA,CAAA,GAAwB,KAAA,aAAA,CADR,CAAA;AAEnB,YAAA,CAAC,EAAE,KAAA,cAAA,CAAA,CAAA,GAAwB,KAAA,aAAA,CAAmB;AAF3B,WAArB;AAKA,eAAA,GAAA;AACD;AACF;;;aAED,SAAA,aAAA,GAAiB;AAAA,YAAA,MAAA,GAAA,IAAA;;AAAA,YACP,WADO,GAAA,KAAA,WAAA;AAEf,YAAM,CAAC,GAAG,WAAW,CAAX,IAAA,KAAqB,KAA/B,EAAA;;AAFe,YAAA,WAAA,GAGyB,UAAU,CAHnC,WAGmC,CAHnC;AAAA,YAGY,QAHZ,GAAA,WAAA,CAAA,iBAAA;;AAKf,YAAI,CAAC,GAAL,QAAA,EAAkB;AAChB,cAAM,SAAS,GAAG;AAChB,YAAA,CAAC,EAAE,WAAW,CAAA,CAAA,EAAA,CAAA,EAAO,KAAA,YAAA,CAAP,CAAA,EADE,QACF,CADE;AAEhB,YAAA,CAAC,EAAE,WAAW,CAAA,CAAA,EAAA,CAAA,EAAO,KAAA,YAAA,CAAP,CAAA,EAAA,QAAA;AAFE,WAAlB;AAIA,cAAM,KAAK,GAAG;AACZ,YAAA,CAAC,EAAE,SAAS,CAAT,CAAA,GAAc,KAAA,aAAA,CADL,CAAA;AAEZ,YAAA,CAAC,EAAE,SAAS,CAAT,CAAA,GAAc,KAAA,aAAA,CAAmB;AAFxB,WAAd;AAKA,eAAA,aAAA,CAAA,CAAA,IAAwB,KAAK,CAA7B,CAAA;AACA,eAAA,aAAA,CAAA,CAAA,IAAwB,KAAK,CAA7B,CAAA;AAEA,UAAA,WAAW,CAAX,QAAA,CAAA,KAAA;AACA,UAAA,WAAW,CAAX,IAAA,CAAiB;AAAE,YAAA,aAAa,EAAE,KAAK;AAAtB,WAAjB;AAEA,eAAA,WAAA,CAAiB,YAAA;AAAA,mBAAM,MAAI,CAAV,aAAM,EAAN;AAAjB,WAAA;AAhBF,SAAA,MAiBO;AACL,UAAA,WAAW,CAAX,QAAA,CAAqB;AACnB,YAAA,CAAC,EAAE,KAAA,YAAA,CAAA,CAAA,GAAsB,KAAA,aAAA,CADN,CAAA;AAEnB,YAAA,CAAC,EAAE,KAAA,YAAA,CAAA,CAAA,GAAsB,KAAA,aAAA,CAAmB;AAFzB,WAArB;AAKA,eAAA,GAAA;AACD;AACF;;;aAED,SAAA,MAAA,CAAA,IAAA,EAA0E;AAAA,YAAhE,OAAgE,GAAA,IAAA,CAAhE,OAAgE;AAAA,YAAvD,KAAuD,GAAA,IAAA,CAAvD,KAAuD;AAAA,YAAhD,WAAgD,GAAA,IAAA,CAAhD,WAAgD;AAAA,YAChE,WADgE,GAAA,KAAA,WAAA,CAAA,CAAA;;AAIxE,QAAA,WAAW,CAAX,QAAA,CAAqB;AACnB,UAAA,CAAC,EAAE,CAAC,KAAA,aAAA,CADe,CAAA;AAEnB,UAAA,CAAC,EAAE,CAAC,KAAA,aAAA,CAAmB;AAFJ,SAArB,EAJwE,CAAA;;AAUxE,QAAA,WAAW,CAAX,aAAA,CAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAVwE,IAUxE,EAVwE,CAAA;;AAaxE,QAAA,WAAW,CAAX,QAAA,CAAqB;AACnB,UAAA,WAAW,EADQ,WAAA;AAEnB,UAAA,KAAK,EAFc,KAAA;AAGnB,UAAA,KAAK,EAAE;AAHY,SAArB;;AAKA,SAAA,GAAA,iBAAA,CAAA,UAAA,EAAW,WAAW,CAAX,MAAA,CAAX,IAAA,EAAoC,WAAW,CAAX,MAAA,CAApC,GAAA;AAEA,aAAA,IAAA;AACD;;;aAED,SAAA,GAAA,GAAO;AACL,aAAA,WAAA,CAAA,IAAA;AACA,aAAA,WAAA,CAAA,GAAA;AACA,aAAA,IAAA;AACD;;;aAED,SAAA,IAAA,GAAQ;AACN,aAAA,MAAA,GAAc,KAAA,SAAA,GAAd,KAAA;AACA,aAAA,WAAA,CAAA,UAAA,GAAA,IAAA;;AACA,QAAA,QAAA,CAAA,OAAA,CAAA,MAAA,CAAW,KAAX,OAAA;AACD;;;;GAhQU,E;;;;AAmQb,WAAA,UAAA,CAAA,KAAA,EAAuE;AAAA,QAArD,WAAqD,GAAA,KAAA,CAArD,WAAqD;AAAA,QAAxC,KAAwC,GAAA,KAAA,CAAxC,KAAwC;;AACrE,QAAI,CAAC,WAAW,CAAZ,YAAA,IAA6B,WAAW,CAA5C,UAAA,EAAyD;AACvD,aAAA,IAAA;AACD;;AAED,QAAM,OAAO,GAAG,WAAW,CAAX,OAAA,CAAA,KAAA,CALqD,KAKrD,CAAhB,CALqE,CAAA;;AAQrE,WAAO,OAAO,GAAA,KAAA,GAAd,IAAA;GzC9UF,C;;;;AyCmVA,WAAA,MAAA,CAAA,GAAA,EAAuD;AAAA,QAC7C,WAD6C,GAChB,GADgB,CAAA,WAAA;AAAA,QAChC,WADgC,GAChB,GADgB,CAAA,WAAA;AAErD,QAAM,KAAK,GAAG,WAAW,CAAzB,OAAA;AAEA,QAAI,CAAC,KAAK,CAAV,MAAA,EAAmB;AAEnB,QAAI,OAAO,GAN0C,WAMrD,CANqD,CAAA;;AASrD,WAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAP,OAAO,CAAP,EAA4B;;AAE1B,UAAI,OAAO,KAAK,WAAW,CAA3B,OAAA,EAAqC;AACnC,QAAA,KAAK,CAAL,MAAA,CAAA,GAAA;AACA;AACD;;AAED,MAAA,OAAO,GAAG,aAAG,CAAH,UAAA,CAAV,OAAU,CAAV;AACD;AACF;;AAED,WAAA,IAAA,CAAA,KAAA,EAA8D;AAAA,QAA7C,WAA6C,GAAA,KAAA,CAA7C,WAA6C;AAC5D,QAAM,KAAK,GAAG,WAAW,CAAzB,OAAA;;AAEA,QAAI,KAAK,CAAT,MAAA,EAAkB;AAChB,MAAA,KAAK,CAAL,IAAA;AACD;AACF;;AAED,WAAA,UAAA,CAAA,KAAA,EAA8D;AAAA,QAAvC,YAAuC,GAAA,KAAA,CAAvC,YAAuC;AAAA,QAAzB,QAAyB,GAAA,KAAA,CAAzB,QAAyB;AAC5D,WAAO,YAAY,IAAI,YAAY,CAA5B,OAAA,IAAwC,QAAQ,CAAhD,IAAA,IAAyD,YAAY,CAAZ,OAAA,CAAqB,QAAQ,CAA7B,IAAA,EAAhE,OAAA;AACD;;AAED,MAAM,OAAe,GAAG;AACtB,IAAA,EAAE,EADoB,SAAA;AAEtB,IAAA,MAAM,EAAE,CAAA,WAAA,EAFc,SAEd,CAFc;AAGtB,IAAA,OAAO,EAHe,YAAA;AAItB,IAAA,SAAS,EAAE;AACT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAqB;AAAA,YAAlB,WAAkB,GAAA,KAAA,CAAlB,WAAkB;AACvC,QAAA,WAAW,CAAX,OAAA,GAAsB,IAAA,YAAA,CAAtB,WAAsB,CAAtB;AAFO,OAAA;AAKT,wCALS,UAAA;AAMT,2BANS,MAAA;AAOT,2BAPS,IAAA;AAST,2CAAqC,SAAA,8BAAA,CAAA,GAAA,EAAS;AAAA,YACpC,YADoC,GACnB,GAAG,CADgB,WACnB,CADmB,YAAA;AAG5C,QAAA,YAAY,CAAZ,IAAA,CAAA,GAAA;AACA,QAAA,YAAY,CAAZ,KAAA,CAAA,GAAA,EAAwB,GAAG,CAAH,WAAA,CAAA,MAAA,CAAA,GAAA,CAAxB,IAAA;AACA,QAAA,YAAY,CAAZ,kBAAA,CAAA,GAAA;AAdO,OAAA;AAiBT,iDAA2C,SAAA,oCAAA,CAAA,GAAA,EAAA;AAAA,eAAS,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,WAAA,CAAT,GAAS,CAAT;AAjBlC,OAAA;AAkBT,oCAA8B,SAAS,CAlB9B,iBAAA;AAmBT,0CAAoC,SAAS,CAnBpC,iBAAA;AAoBT,gDAA0C,SAAA,mCAAA,CAAA,GAAA,EAAA;AAAA,eACxC,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,wBAAA,CADwC,GACxC,CADwC;AApBjC,OAAA;AAsBT,0CAAoC,SAAA,6BAAA,CAAA,GAAA,EAAA;AAAA,eAAS,GAAG,CAAH,WAAA,CAAA,YAAA,CAAA,wBAAA,CAAT,GAAS,CAAT;AAAA;AAtB3B;AAJW,GAAxB,CzCnXA,CyCmXA;;AA+BA,WAAA,gBAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAA0E;AACxE,QAAM,EAAE,GAAG,IAAX,CAAA;AACA,WAAO,EAAE,GAAF,EAAA,GAAA,EAAA,GAAe,IAAA,EAAA,GAAA,CAAA,GAAf,EAAA,GAAiC,CAAC,GAAD,CAAA,GAAxC,EAAA;AACD;;AAED,WAAA,sBAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAQE;AACA,WAAO;AACL,MAAA,CAAC,EAAE,gBAAgB,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,EADd,IACc,CADd;AAEL,MAAA,CAAC,EAAE,gBAAgB,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,EAAA,IAAA;AAFd,KAAP;GzChaF,C;;;AyCuaA,WAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAkE;AAChE,IAAA,CAAC,IAAD,CAAA;AACA,WAAO,CAAA,CAAA,GAAA,CAAA,IAAU,CAAC,GAAX,CAAA,IAAP,CAAA;AACD;;sBAEc,O;;;;;;;;;AC3af;;AAAA;AACA;;AAAA;AAEA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,WAAA,yBAAA,CAAA,KAAA,EAAA,SAAA,EAAuE;AACrE,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,SAAvB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAkC;AAAA,UAAA,IAAA;;AAAA,MAAA,IAAA,GAAX,SAAW,CAAA,EAAA,CAAA;AAAA,UAAvB,QAAuB,GAAA,IAAA;;AAChC,UAAI,KAAK,CAAT,2BAAA,EAAuC;AACrC;AACD;;AAED,MAAA,QAAQ,CAAR,KAAQ,CAAR;AACD;AACF;;MAEY,SAAA,GAAA,aAAA,YAAA;AAOX,aAAA,SAAA,CAAA,OAAA,EAAiD;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,OAAA,EALpB,EAKoB,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,oBAAA,EAJ5B,KAI4B,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,6BAAA,EAHnB,KAGmB,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAC/C,WAAA,OAAA,GAAe,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,OAAO,IAAjC,EAAe,CAAf;AACD;;;;aAED,SAAA,IAAA,CAAA,KAAA,EAA0E;AACxE,YAAA,SAAA;AACA,YAAM,MAAM,GAAG,KAFyD,MAExE,CAFwE,CAAA;;;AAMxE,YAAK,SAAS,GAAG,KAAA,KAAA,CAAW,KAAK,CAAjC,IAAiB,CAAjB,EAA0C;AACxC,UAAA,yBAAyB,CAAA,KAAA,EAAzB,SAAyB,CAAzB;AAPsE,SAAA,CAAA;;;AAWxE,YAAI,CAAC,KAAK,CAAN,kBAAA,IAAA,MAAA,KAAwC,SAAS,GAAG,MAAM,CAAC,KAAK,CAApE,IAA8D,CAA1D,CAAJ,EAA6E;AAC3E,UAAA,yBAAyB,CAAA,KAAA,EAAzB,SAAyB,CAAzB;AACD;AACF;;;aAED,SAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAA0C;AACxC,YAAM,SAAS,GAAG,CAAA,GAAA,uBAAA,CAAA,OAAA,EAAA,IAAA,EAAlB,QAAkB,CAAlB;;AAEA,aAAA,IAAA,IAAA,SAAA,EAAwB;AACtB,eAAA,KAAA,CAAA,IAAA,IAAmB,QAAG,CAAH,KAAA,CAAU,KAAA,KAAA,CAAA,IAAA,KAAV,EAAA,EAAkC,SAAS,CAA9D,IAA8D,CAA3C,CAAnB;AACD;AACF;;;aAED,SAAA,GAAA,CAAA,IAAA,EAAA,QAAA,EAA2C;AACzC,YAAM,SAAS,GAAG,CAAA,GAAA,uBAAA,CAAA,OAAA,EAAA,IAAA,EAAlB,QAAkB,CAAlB;;AAEA,aAAA,IAAA,IAAA,SAAA,EAAwB;AACtB,cAAM,SAAS,GAAG,KAAA,KAAA,CAAlB,IAAkB,CAAlB;;AAEA,cAAI,CAAA,SAAA,IAAc,CAAC,SAAS,CAA5B,MAAA,EAAqC;AACnC;AACD;;AAED,eAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,SAAS,CAAnC,IAAmC,CAAT,CAA1B,MAAA,EAAA,GAAA,EAAA,EAA2C;AAAA,gBAAA,KAAA;;AAAA,YAAA,KAAA,GAAjB,SAAS,CAAA,IAAA,CAAT,CAAiB,GAAjB,CAAiB;AAAA,gBAAhC,WAAgC,GAAA,KAAA;;AACzC,gBAAM,MAAK,GAAG,SAAS,CAAT,OAAA,CAAd,WAAc,CAAd;;AAEA,gBAAI,MAAK,KAAK,CAAd,CAAA,EAAkB;AAChB,cAAA,SAAS,CAAT,MAAA,CAAA,MAAA,EAAA,CAAA;AACD;AACF;AACF;AACF;;;aAED,SAAA,OAAA,CAAA,QAAA,EAAkC;AAChC,eAAA,IAAA;AACD;;;;GAzDU,E;;;;;;;;;;;ACdE,WAAA,gBAAA,CAAA,IAAA,EAAA,OAAA,EAA2D;AACxE,QAAI,OAAO,CAAP,cAAA,CAAJ,IAAI,CAAJ,EAAkC;AAChC,aAAA,IAAA;AACD;;AAED,SAAK,IAAL,IAAA,IAAmB,OAAO,CAA1B,GAAA,EAAgC;AAC9B,UAAI,IAAI,CAAJ,OAAA,CAAA,IAAA,MAAA,CAAA,IAA4B,IAAI,CAAJ,MAAA,CAAY,IAAI,CAAhB,MAAA,KAA4B,OAAO,CAAnE,MAAA,EAA4E;AAC1E,eAAA,IAAA;AACD;AACF;;AAED,WAAA,KAAA;AACD;;;;;;;;;ACXD;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAGA;;AAAA;;;AAuCO,WAAA,oBAAA,CAAA,KAAA,EAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BnE,QAAM,QAAQ,GAAI,SAAZ,QAAY,CAAA,MAAA,EAAA,OAAA,EAAsC;AACtD,UAAI,YAAY,GAAG,KAAK,CAAL,aAAA,CAAA,GAAA,CAAA,MAAA,EAAnB,OAAmB,CAAnB;;AAEA,UAAI,CAAJ,YAAA,EAAmB;AACjB,QAAA,YAAY,GAAG,KAAK,CAAL,aAAA,CAAA,GAAA,CAAA,MAAA,EAAf,OAAe,CAAf;AACA,QAAA,YAAY,CAAZ,MAAA,CAAA,MAAA,GAA6B,QAAQ,CAArC,YAAA;AACD;;AAED,aAAA,YAAA;AAlCiE,KA0BnE,CA1BmE,CAAA;;;AAsCnE,IAAA,QAAQ,CAAR,iBAAA,GAA6B,iBAAY,CAAzC,cAAA;AACA,IAAA,QAAQ,CAAR,YAAA,GAAwB,iBAAY,CAApC,SAAA;AACA,IAAA,QAAQ,CAAR,gBAAA,GAA4B,iBAAY,CAAxC,aAAA;AACA,IAAA,QAAQ,CAAR,aAAA,GAAyB,iBAAY,CAArC,UAAA;AAEA,IAAA,QAAQ,CAAR,cAAA,GAA0B,aAAQ,CAAlC,cAAA;AACA,IAAA,QAAQ,CAAR,oBAAA,GAAgC,aAAQ,CAAxC,oBAAA;AACA,IAAA,QAAQ,CAAR,eAAA,GAA2B,aAAQ,CAAnC,eAAA;AACA,IAAA,QAAQ,CAAR,OAAA,GAAmB,aAAQ,CAA3B,OAAA;AAEA,IAAA,QAAQ,CAAR,YAAA,GAhDmE,EAgDnE,CAhDmE,CAAA;;AAmDnE,IAAA,QAAQ,CAAR,OAAA;AACA,IAAA,QAAQ,CAAR,KAAA,GAAA,KAAA;;;;;;;;AAOA,IAAA,QAAQ,CAAR,GAAA,GAAe,UAAA,MAAA,EAAA,OAAA,EAA2B;AACxC,WAAA,KAAA,CAAA,SAAA,CAAA,MAAA,EAAA,OAAA;AAEA,aAAA,IAAA;AAHF,KAAA;;;;;;;;;;;;;;AAiBA,IAAA,QAAQ,CAAR,KAAA,GAAiB,UAAA,MAAA,EAAA,OAAA,EAAoE;AACnF,aAAO,CAAC,CAAC,KAAA,KAAA,CAAA,aAAA,CAAA,GAAA,CAAA,MAAA,EAAqC,OAAO,IAAI,OAAO,CAAhE,OAAS,CAAT;AADF,KAAA;;;;;;;;;;;;;;;AAgBA,IAAA,QAAQ,CAAR,EAAA,GAAc,CAAA,GAAA,SAAA,CAAA,QAAA,EAAS,SAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAkF;AACvG,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,KAAmB,IAAI,CAAJ,MAAA,CAAA,GAAA,MAAqB,CAA5C,CAAA,EAAgD;AAC9C,QAAA,IAAI,GAAG,IAAI,CAAJ,IAAA,GAAA,KAAA,CAAP,IAAO,CAAP;AACD;;AAED,UAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAJ,IAAI,CAAJ,EAAoB;AAClB,aAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAwB,IAAxB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAuC;AAAA,cAAA,IAAA;;AAAA,UAAA,IAAA,GAAf,IAAe,CAAA,EAAA,CAAA;AAAA,cAA5B,SAA4B,GAAA,IAAA;AACrC,eAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA;AACD;;AAED,eAAA,IAAA;AACD;;AAED,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,IAAI,CAAJ,EAAqB;AACnB,aAAK,IAAL,IAAA,IAAA,IAAA,EAAyB;AACvB,eAAA,EAAA,CAAA,IAAA,EAAe,IAAD,CAAd,IAAc,CAAd,EAAA,QAAA;AACD;;AAED,eAAA,IAAA;AAlBqG,OAAA,CAAA;;;AAsBvG,UAAI,CAAA,GAAA,qBAAA,CAAA,OAAA,EAAA,IAAA,EAAuB,KAAA,KAAA,CAA3B,OAAI,CAAJ,EAAgD;;AAE9C,YAAI,CAAC,KAAA,YAAA,CAAL,IAAK,CAAL,EAA8B;AAC5B,eAAA,YAAA,CAAA,IAAA,IAA0B,CAA1B,QAA0B,CAA1B;AADF,SAAA,MAEO;AACL,eAAA,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA,QAAA;AACD;AANH,OAAA,CAAA;AAAA,WASK;AACH,eAAA,KAAA,CAAA,MAAA,CAAA,GAAA,CAAsB,KAAA,KAAA,CAAtB,QAAA,EAAA,IAAA,EAAA,QAAA,EAAuE;AAAE,YAAA,OAAO,EAAP;AAAF,WAAvE;AACD;;AAED,aAAA,IAAA;AAnCY,KAAA,EAAd,8CAAc,CAAd;;;;;;;;;;;;;;;AAmDA,IAAA,QAAQ,CAAR,GAAA,GAAe,CAAA,GAAA,SAAA,CAAA,QAAA,EAAS,SAAA,GAAA,CAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAiE;AACvF,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,KAAmB,IAAI,CAAJ,MAAA,CAAA,GAAA,MAAqB,CAA5C,CAAA,EAAgD;AAC9C,QAAA,IAAI,GAAG,IAAI,CAAJ,IAAA,GAAA,KAAA,CAAP,IAAO,CAAP;AACD;;AAED,UAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAJ,IAAI,CAAJ,EAAoB;AAClB,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAwB,IAAxB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA8B;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAN,IAAM,CAAA,GAAA,CAAA;AAAA,cAAnB,SAAmB,GAAA,KAAA;AAC5B,eAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA;AACD;;AAED,eAAA,IAAA;AACD;;AAED,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,IAAI,CAAJ,EAAqB;AACnB,aAAK,IAAL,IAAA,IAAA,IAAA,EAAyB;AACvB,eAAA,GAAA,CAAA,IAAA,EAAe,IAAI,CAAnB,IAAmB,CAAnB,EAAA,QAAA;AACD;;AAED,eAAA,IAAA;AACD;;AAED,UAAI,CAAA,GAAA,qBAAA,CAAA,OAAA,EAAA,IAAA,EAAuB,KAAA,KAAA,CAA3B,OAAI,CAAJ,EAAgD;AAC9C,YAAA,KAAA;;AAEA,YAAI,IAAI,IAAI,KAAR,YAAA,IAA6B,CAAC,KAAK,GAAG,KAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAT,QAAS,CAAT,MAAwD,CAAzF,CAAA,EAA6F;AAC3F,eAAA,YAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,EAAA,CAAA;AACD;AALH,OAAA,MAMO;AACL,aAAA,KAAA,CAAA,MAAA,CAAA,MAAA,CAAyB,KAAA,KAAA,CAAzB,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA;AACD;;AAED,aAAA,IAAA;AA/Ba,KAAA,EAAf,+CAAe,CAAf;;AAkCA,IAAA,QAAQ,CAAR,KAAA,GAAiB,YAAY;AAC3B,aAAO,KAAP,KAAA;AADF,KAAA;;;;;;;;AASA,IAAA,QAAQ,CAAR,aAAA,GAAyB,YAAY;AACnC,aAAO,YAAA,CAAA,OAAA,CAAP,aAAA;AADF,KAAA;;;;;;;;AASA,IAAA,QAAQ,CAAR,oBAAA,GAAgC,YAAY;AAC1C,aAAO,YAAA,CAAA,OAAA,CAAP,oBAAA;AADF,KAAA;;;;;;;;;;AAWA,IAAA,QAAQ,CAAR,IAAA,GAAgB,YAAY;AAC1B,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAA,KAAA,CAAA,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAwD;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAA9B,KAAA,KAAA,CAAA,YAAA,CAAwB,IAAxB,CAA8B,GAA9B,CAA8B;AAAA,YAA7C,WAA6C,GAAA,KAAA;AACtD,QAAA,WAAW,CAAX,IAAA;AACD;;AAED,aAAA,IAAA;AALF,KAAA;;;;;;;;;;;;AAiBA,IAAA,QAAQ,CAAR,oBAAA,GAAgC,UAAA,QAAA,EAA6B;AAC3D,UAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,QAAI,CAAJ,EAAyB;AACvB,aAAA,KAAA,CAAA,YAAA,CAAA,oBAAA,GAAA,QAAA;AAEA,eAAA,IAAA;AACD;;AAED,aAAO,KAAA,KAAA,CAAA,YAAA,CAAP,oBAAA;AAPF,KAAA;;AAUA,IAAA,QAAQ,CAAR,WAAA,GAAuB,UAAA,GAAA,EAAA,OAAA,EAA2C;AAChE,WAAA,KAAA,CAAA,WAAA,CAAA,GAAA,EAAA,OAAA;AADF,KAAA;;AAIA,IAAA,QAAQ,CAAR,cAAA,GAA0B,UAAA,GAAA,EAAyB;AACjD,WAAA,KAAA,CAAA,cAAA,CAAA,GAAA;AADF,KAAA;;AAIA,WAAA,QAAA;AACD;;;;;;;;;ACvRD;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;AACA;;AAAA;AAEA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,YAAA,GAAA,aAAA,YAAA;;AAqBX,aAAA,YAAA,CAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,WAAA,EAKE;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAdgB,IAAI,cAAA,CAAJ,SAAA,EAchB,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;;AACA,WAAA,QAAA,GAAgB,OAAO,CAAvB,OAAA;AACA,WAAA,MAAA,GAAA,MAAA;AACA,WAAA,QAAA,GAAgB,OAAO,CAAP,OAAA,IAAhB,cAAA;AACA,WAAA,IAAA,GAAY,CAAA,GAAA,WAAA,CAAA,SAAA,EAAU,CAAA,GAAA,aAAA,CAAA,WAAA,EAAA,MAAA,IAAsB,KAAtB,QAAA,GAAtB,MAAY,CAAZ;AACA,WAAA,IAAA,GAAY,KAAA,IAAA,CAAZ,QAAA;AACA,WAAA,YAAA,GAAA,WAAA;AAEA,WAAA,GAAA,CAAA,OAAA;AACD;;;;;;AAlCgB,eAAA,GAAA,GAA2B;AAC1C,eAAO;AACL,UAAA,IAAI,EADC,EAAA;AAEL,UAAA,SAAS,EAFJ,EAAA;AAGL,UAAA,OAAO,EAAE;AAHJ,SAAP;AAKD;;;aA8BD,SAAA,WAAA,CAAA,UAAA,EAAA,MAAA,EAA+D;AAC7D,YAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,MAAM,CAAlB,OAAI,CAAJ,EAA6B;AAC3B,eAAA,EAAA,CAAA,GAAA,MAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAA8B,MAAM,CAApC,OAAA;AACD;;AACD,YAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,MAAM,CAAlB,MAAI,CAAJ,EAA4B;AAC1B,eAAA,EAAA,CAAA,GAAA,MAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAA6B,MAAM,CAAnC,MAAA;AACD;;AACD,YAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,MAAM,CAAlB,KAAI,CAAJ,EAA2B;AACzB,eAAA,EAAA,CAAA,GAAA,MAAA,CAAA,UAAA,EAAA,KAAA,CAAA,EAA4B,MAAM,CAAlC,KAAA;AACD;;AACD,YAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,MAAM,CAAlB,cAAI,CAAJ,EAAoC;AAClC,eAAA,EAAA,CAAA,GAAA,MAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAqC,MAAM,CAA3C,cAAA;AACD;;AAED,eAAA,IAAA;AACD;;;aAED,SAAA,wBAAA,CAAA,UAAA,EAAA,IAAA,EAAA,GAAA,EAAmF;AACjF,YAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,IAAA,KAAkB,OAAA,CAAA,OAAA,CAAA,MAAA,CAAtB,IAAsB,CAAtB,EAAuC;AACrC,eAAA,GAAA,CAAA,UAAA,EAAA,IAAA;AACD;;AAED,YAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,KAAiB,OAAA,CAAA,OAAA,CAAA,MAAA,CAArB,GAAqB,CAArB,EAAqC;AACnC,eAAA,EAAA,CAAA,UAAA,EAAA,GAAA;AACD;AACF;;;aAED,SAAA,YAAA,CAAA,UAAA,EAAA,OAAA,EAAmE;AACjE,YAAM,QAAQ,GAAG,KADgD,SACjE,CADiE,CAAA;;AAIjE,aAAK,IAAL,WAAA,IAAA,OAAA,EAAmC;AACjC,cAAM,UAAU,GAAhB,WAAA;AACA,cAAM,aAAa,GAAG,KAAA,OAAA,CAAtB,UAAsB,CAAtB;AACA,cAAM,WAAgB,GAAG,OAAO,CAHC,UAGD,CAAhC,CAHiC,CAAA;;AAMjC,cAAI,UAAU,KAAd,WAAA,EAAgC;AAC9B,iBAAA,wBAAA,CAAA,UAAA,EAA0C,aAAa,CAAvD,SAAA,EAAA,WAAA;AAP+B,WAAA,CAAA;;;AAWjC,cAAI,OAAA,CAAA,OAAA,CAAA,KAAA,CAAJ,WAAI,CAAJ,EAA2B;AACzB;AAAE,YAAA,aAAa,CAAd,UAAc,CAAb,GAAoC,QAAG,CAAH,IAAA,CAArC,WAAqC,CAApC;AADJ,WAAA,CAAA;AAAA,eAIK,IAAI,OAAA,CAAA,OAAA,CAAA,WAAA,CAAJ,WAAI,CAAJ,EAAiC;;AAEpC;AAAE,cAAA,aAAa,CAAd,UAAc,CAAb,GAAoC,CAAA,GAAA,WAAA,CAAA,OAAA,EACpC,aAAa,CAAb,UAAa,CAAb,IADoC,EAAA,EAEpC,CAAA,GAAA,UAAA,CAAA,OAAA,EAJkC,WAIlC,CAFoC,CAApC,CAFkC,CAAA;;AAQpC,kBACE,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,QAAQ,CAAR,SAAA,CAAV,UAAU,CAAV,KACA,aAAc,QAAQ,CAAR,SAAA,CAFhB,UAEgB,CAFhB,EAGE;AACA;AAAE,gBAAA,aAAa,CAAd,UAAc,CAAb,CAAD,OAAC,GAA4C,WAAW,CAAX,OAAA,KAA7C,KAAC;AACH;AAbE,aAAA,CAAA;AAAA,iBAgBA,IAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,KAAwB,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,QAAQ,CAAR,SAAA,CAAtC,UAAsC,CAAV,CAA5B,EAAuE;AAC1E;AAAE,gBAAA,aAAa,CAAd,UAAc,CAAb,CAAD,OAAC,GAAD,WAAC;AADC,eAAA,CAAA;AAAA,mBAIA;AACH;AAAE,kBAAA,aAAa,CAAd,UAAc,CAAb,GAAD,WAAC;AACH;AACF;AACF;;;;;;;;;;;aASD,SAAA,OAAA,CAAA,OAAA,EAA2B;AACzB,QAAA,OAAO,GAAG,OAAO,KAAK,OAAA,CAAA,OAAA,CAAA,OAAA,CAAW,KAAX,MAAA,IAA0B,KAA1B,MAAA,GAAtB,IAAiB,CAAjB;;AAEA,YAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,KAAd,MAAI,CAAJ,EAA4B;AAC1B,UAAA,OAAO,GAAG,OAAO,IAAI,KAAA,QAAA,CAAA,aAAA,CAA4B,KAAjD,MAAqB,CAArB;AACD;;AAED,eAAO,CAAA,GAAA,aAAA,CAAA,cAAA,EAAP,OAAO,CAAP;AACD;;;;;;;;;;;;aAYD,SAAA,WAAA,CAAA,OAAA,EAAkD;AAAA,YAAA,KAAA,GAAA,IAAA;;AAChD,YAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,OAAI,CAAJ,EAAsB;AACpB,eAAA,YAAA,GAAA,OAAA;;AAEA,eAAA,OAAA,GAAe,UAAA,OAAA,EAAa;AAC1B,gBAAM,IAAI,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,KAAI,CAAJ,YAAA,CAAxB,OAAwB,CAAX,CAAb;;AAEA,gBAAI,EAAG,WAAP,IAAI,CAAJ,EAAqC;AACnC,cAAA,IAAI,CAAJ,KAAA,GAAa,IAAI,CAAJ,KAAA,GAAa,IAAI,CAA9B,IAAA;AACA,cAAA,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAJ,MAAA,GAAc,IAAI,CAAhC,GAAA;AACD;;AAED,mBAAA,IAAA;AARF,WAAA;;AAWA,iBAAA,IAAA;AACD;;AAED,YAAI,OAAO,KAAX,IAAA,EAAsB;AACpB,iBAAO,KAAP,OAAA;AACA,iBAAO,KAAP,YAAA;AAEA,iBAAA,IAAA;AACD;;AAED,eAAO,KAAP,OAAA;AACD;;;aAED,SAAA,iBAAA,CAAA,UAAA,EAAA,QAAA,EAA6D;AAC3D,YAAI,CAAA,GAAA,aAAA,CAAA,WAAA,EAAA,QAAA,KAAyB,OAAA,CAAA,OAAA,CAAA,MAAA,CAA7B,QAA6B,CAA7B,EAAkD;AAChD;AAAE,eAAA,OAAA,CAAD,UAAC,IAAD,QAAC;;AAEF,eAAK,IAAL,MAAA,IAAqB,KAAA,QAAA,CAArB,GAAA,EAAwC;AACtC;AAAE,iBAAA,OAAA,CAAD,MAAC,EAAD,UAAC,IAAD,QAAC;AACH;;AAED,iBAAA,IAAA;AACD;;AAED,eAAO,KAAA,OAAA,CAAP,UAAO,CAAP;AACD;;;;;;;;;;;;;;aAYD,SAAA,MAAA,CAAA,QAAA,EAAuB;AACrB,eAAO,KAAA,iBAAA,CAAA,QAAA,EAAP,QAAO,CAAP;AACD;;;;;;;;;;;;aAYD,SAAA,WAAA,CAAA,QAAA,EAAqC;AACnC,YAAI,QAAQ,KAAR,MAAA,IAAuB,QAAQ,KAAnC,QAAA,EAAkD;AAChD,eAAA,OAAA,CAAA,WAAA,GAAA,QAAA;AAEA,iBAAA,IAAA;AACD;;AAED,eAAO,KAAA,OAAA,CAAP,WAAA;AACD;;;;;;;;;;aAQD,SAAA,OAAA,GAAW;AACT,eAAO,KAAP,QAAA;AACD;;;aAED,SAAA,SAAA,CAAA,OAAA,EAAqC;AACnC,eAAO,KAAA,QAAA,KAAkB,OAAO,CAAzB,aAAA,IAA2C,CAAA,GAAA,aAAA,CAAA,YAAA,EAAa,KAAb,QAAA,EAAlD,OAAkD,CAAlD;AACD;;;aAED,SAAA,eAAA,CAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAKE;AACA,eACE,CAAC,KAAA,UAAA,CAAgB,OAAO,CAAvB,UAAA,EAAA,UAAA,EAAD,WAAC,CAAD,IACA,KAAA,SAAA,CAAe,OAAO,CAAtB,SAAA,EAAA,UAAA,EAFF,WAEE,CAFF;AAID;;;aAED,SAAA,SAAA,CAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAwF;AACtF,YAAI,CAAJ,SAAA,EAAgB;AACd,iBAAA,IAAA;AACD;;AAED,YAAI,CAAC,OAAA,CAAA,OAAA,CAAA,OAAA,CAAL,OAAK,CAAL,EAA0B;AACxB,iBAAA,KAAA;AACD;;AAED,YAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,SAAI,CAAJ,EAA0B;AACxB,iBAAO,CAAA,GAAA,aAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAP,UAAO,CAAP;AADF,SAAA,MAEO,IAAI,OAAA,CAAA,OAAA,CAAA,OAAA,CAAJ,SAAI,CAAJ,EAA2B;AAChC,iBAAO,CAAA,GAAA,aAAA,CAAA,YAAA,EAAA,SAAA,EAAP,OAAO,CAAP;AACD;;AAED,eAAA,KAAA;AACD;;;aAED,SAAA,UAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAA0F;AACxF,YAAI,CAAA,UAAA,IAAe,CAAC,OAAA,CAAA,OAAA,CAAA,OAAA,CAApB,OAAoB,CAApB,EAAyC;AACvC,iBAAA,KAAA;AACD;;AAED,YAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,UAAI,CAAJ,EAA2B;AACzB,iBAAO,CAAA,GAAA,aAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAP,UAAO,CAAP;AADF,SAAA,MAEO,IAAI,OAAA,CAAA,OAAA,CAAA,OAAA,CAAJ,UAAI,CAAJ,EAA4B;AACjC,iBAAO,CAAA,GAAA,aAAA,CAAA,YAAA,EAAA,UAAA,EAAP,OAAO,CAAP;AACD;;AAED,eAAA,KAAA;AACD;;;;;;;;;;;;aAUD,SAAA,IAAA,CAAA,MAAA,EAA6C;AAC3C,aAAA,MAAA,CAAA,IAAA,CAAA,MAAA;AAEA,eAAA,IAAA;AACD;;;aAED,SAAA,MAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAqG;AACnG,YAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,OAAA,KAAsB,CAAC,OAAA,CAAA,OAAA,CAAA,KAAA,CAA3B,OAA2B,CAA3B,EAA8C;AAC5C,UAAA,OAAO,GAAP,WAAA;AACA,UAAA,WAAW,GAAX,IAAA;AACD;;AAED,YAAM,SAAS,GAAG,MAAM,KAAN,IAAA,GAAA,KAAA,GAAlB,QAAA;AACA,YAAM,SAAS,GAAG,CAAA,GAAA,uBAAA,CAAA,OAAA,EAAA,OAAA,EAAlB,WAAkB,CAAlB;;AAEA,aAAK,IAAL,IAAA,IAAA,SAAA,EAA4B;AAC1B,cAAI,IAAI,KAAR,OAAA,EAAsB;AACpB,YAAA,IAAI,GAAG,YAAA,CAAA,OAAA,CAAP,UAAA;AACD;;AAED,eAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,SAAS,CAAhC,IAAgC,CAAT,CAAvB,MAAA,EAAA,EAAA,EAAA,EAAwC;AAAA,gBAAA,IAAA;;AAAA,YAAA,IAAA,GAAjB,SAAS,CAAA,IAAA,CAAT,CAAiB,EAAjB,CAAiB;AAAA,gBAA7B,QAA6B,GAAA,IAAA,CAAA,C;;AAEtC,gBAAI,CAAA,GAAA,qBAAA,CAAA,OAAA,EAAA,IAAA,EAAuB,KAA3B,QAAI,CAAJ,EAA2C;AACzC,mBAAA,MAAA,CAAA,MAAA,EAAA,IAAA,EAAA,QAAA;AADF,aAAA,CAAA;AAAA,iBAIK,IAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,KAAd,MAAI,CAAJ,EAA4B;AAC/B,qBAAA,YAAA,CAAA,GAAA,MAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EACE,KADF,MAAA,EAEE,KAFF,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA;AADG,eAAA,CAAA;AAAA,mBAUA;AACH,uBAAA,YAAA,CAAA,SAAA,EAA6B,KAA7B,MAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA;AACD;AACF;AACF;;AAED,eAAA,IAAA;AACD;;;;;;;;;;;;;;aAYD,SAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAA+D;AAC7D,eAAO,KAAA,MAAA,CAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAP,OAAO,CAAP;AACD;;;;;;;;;;;;;;aAYD,SAAA,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAAoF;AAClF,eAAO,KAAA,MAAA,CAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAP,OAAO,CAAP;AACD;;;;;;;;;;aAQD,SAAA,GAAA,CAAA,OAAA,EAA0B;AACxB,YAAM,QAAQ,GAAG,KAAjB,SAAA;;AAEA,YAAI,CAAC,OAAA,CAAA,OAAA,CAAA,MAAA,CAAL,OAAK,CAAL,EAAyB;AACvB,UAAA,OAAO,GAAP,EAAA;AACD;;AAED;AAAE,aAAD,OAAC,GAAqC,CAAA,GAAA,UAAA,CAAA,OAAA,EAAM,QAAQ,CAApD,IAAsC,CAArC;;AAEF,aAAK,IAAL,WAAA,IAA0B,KAAA,QAAA,CAA1B,UAAA,EAAoD;AAClD,cAAM,UAAU,GAAhB,WAAA;AACA,cAAM,UAAU,GAAG,KAAA,QAAA,CAAA,UAAA,CAAnB,UAAmB,CAAnB;AAEA,eAAA,OAAA,CAAA,UAAA,IAAA,EAAA;AACA,eAAA,YAAA,CAAA,UAAA,EAA8B,CAAA,GAAA,WAAA,CAAA,OAAA,EAAO,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,QAAQ,CAA1B,SAAO,CAAP,EAAuC,QAAQ,CAAR,OAAA,CAArE,UAAqE,CAAvC,CAA9B;AACE,eAAD,UAAC,EAA2C,OAAO,CAAnD,UAAmD,CAAlD;AACH;;AAED,aAAK,IAAL,OAAA,IAAA,OAAA,EAA+B;AAC7B,cAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAQ,KAAZ,OAAY,CAAR,CAAJ,EAAqC;AACnC;AAAC,iBAAA,OAAA,EAAuB,OAAO,CAA9B,OAA8B,CAA9B;AACF;AACF;;AAED,eAAA,IAAA;AACD;;;;;;;;aAMD,SAAA,KAAA,GAAS;AACP,YAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,KAAd,MAAI,CAAJ,EAA4B;;AAE1B,eAAK,IAAL,IAAA,IAAmB,KAAA,YAAA,CAAnB,eAAA,EAAsD;AACpD,gBAAM,SAAS,GAAG,KAAA,YAAA,CAAA,eAAA,CAAlB,IAAkB,CAAlB;;AAEA,iBAAK,IAAI,CAAC,GAAG,SAAS,CAAT,MAAA,GAAb,CAAA,EAAmC,CAAC,IAApC,CAAA,EAA2C,CAA3C,EAAA,EAAgD;AAAA,kBAAA,YAAA,GACL,SAAS,CADJ,CACI,CADJ;AAAA,kBACtC,QADsC,GAAA,YAAA,CAAA,QAAA;AAAA,kBAC5B,OAD4B,GAAA,YAAA,CAAA,OAAA;AAAA,kBACnB,SADmB,GAAA,YAAA,CAAA,SAAA;;AAG9C,kBAAI,QAAQ,KAAK,KAAb,MAAA,IAA4B,OAAO,KAAK,KAA5C,QAAA,EAA2D;AACzD,gBAAA,SAAS,CAAT,MAAA,CAAA,CAAA,EAAA,CAAA;AACD;;AAED,mBAAK,IAAI,CAAC,GAAG,SAAS,CAAT,MAAA,GAAb,CAAA,EAAmC,CAAC,IAApC,CAAA,EAA2C,CAA3C,EAAA,EAAgD;AAC9C,qBAAA,YAAA,CAAA,cAAA,CACE,KADF,MAAA,EAEE,KAFF,QAAA,EAAA,IAAA,EAIE,SAAS,CAAT,CAAS,CAAT,CAJF,CAIE,CAJF,EAKE,SAAS,CAAT,CAAS,CAAT,CALF,CAKE,CALF;AAOD;AACF;AACF;AAtBH,SAAA,MAuBO;AACL,eAAA,YAAA,CAAA,MAAA,CAAyB,KAAzB,MAAA,EAAA,KAAA;AACD;AACF;;;;GA/ZU,E;;;;;;;;;;AC1Bb;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkBa,eAAA,GAAA,aAAA,YAAA;;AAUX,aAAA,eAAA,CAAA,KAAA,EAA2B;AAAA,UAAA,KAAA,GAAA,IAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,EARJ,EAQI,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,EAJvB,EAIuB,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AACzB,WAAA,KAAA,GAAA,KAAA;AACA,MAAA,KAAK,CAAL,YAAA,CAAmB;AACjB,8BAAsB,SAAA,iBAAA,CAAA,IAAA,EAAsB;AAAA,cAAnB,YAAmB,GAAA,IAAA,CAAnB,YAAmB;AAAA,cAClC,MADkC,GACJ,YADI,CAAA,MAAA;AAAA,cAChB,OADgB,GACJ,YADI,CAAA,QAAA;AAE1C,cAAM,cAAuC,GAAG,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,IAC5C,KAAI,CAAJ,WAAA,CAD4C,MAC5C,CAD4C,GAE3C,MAAD,CAAgB,KAAI,CAAJ,KAAA,CAFpB,EAEI,CAFJ;;AAIA,cAAM,WAAW,GAAG,QAAG,CAAH,SAAA,CAAA,cAAA,EAA8B,UAAA,CAAA,EAAA;AAAA,mBAAO,CAAC,CAAD,OAAA,KAAP,OAAA;AAAlD,WAAoB,CAApB;;AACA,cAAI,cAAc,CAAlB,WAAkB,CAAlB,EAAiC;;AAE/B,YAAA,cAAc,CAAd,WAAc,CAAd,CAAA,OAAA,GAAA,IAAA;AACA,YAAA,cAAc,CAAd,WAAc,CAAd,CAAA,YAAA,GAAA,IAAA;AACD;;AACD,UAAA,cAAc,CAAd,MAAA,CAAA,WAAA,EAAA,CAAA;AACD;AAdgB,OAAnB;AAgBD;;;;aAED,SAAA,IAAA,CAAA,MAAA,EAAA,OAAA,EAAkD;AAChD,QAAA,OAAO,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAO,OAAO,IAAd,EAAA,EAAsB;AAC9B,UAAA,OAAO,EAAE,KAAA,KAAA,CAAW;AADU,SAAtB,CAAV;AAGA,YAAM,YAAY,GAAG,IAAI,KAAA,KAAA,CAAJ,YAAA,CAAA,MAAA,EAAA,OAAA,EAA6C,KAAA,KAAA,CAA7C,QAAA,EAAkE,KAAA,KAAA,CAAvF,MAAqB,CAArB;AACA,YAAM,WAAW,GAAG;AAAE,UAAA,OAAO,EAAE,YAAY,CAAvB,QAAA;AAAkC,UAAA,YAAY,EAAZ;AAAlC,SAApB;AAEA,aAAA,KAAA,CAAA,WAAA,CAAuB,YAAY,CAAnC,IAAA;AACA,aAAA,IAAA,CAAA,IAAA,CAAA,YAAA;;AAEA,YAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,MAAI,CAAJ,EAAuB;AACrB,cAAI,CAAC,KAAA,WAAA,CAAL,MAAK,CAAL,EAA+B;AAC7B,iBAAA,WAAA,CAAA,MAAA,IAAA,EAAA;AACD;;AACD,eAAA,WAAA,CAAA,MAAA,EAAA,IAAA,CAAA,WAAA;AAJF,SAAA,MAKO;AACL,cAAI,CAAE,YAAY,CAAb,MAAC,CAA4B,KAAA,KAAA,CAAlC,EAAM,CAAN,EAAkD;AAChD,YAAA,MAAM,CAAN,cAAA,CAAA,MAAA,EAA8B,KAAA,KAAA,CAA9B,EAAA,EAA6C;AAC3C,cAAA,KAAK,EADsC,EAAA;AAE3C,cAAA,YAAY,EAAE;AAF6B,aAA7C;AAID;;AAED;AAAE,UAAA,MAAD,CAAgB,KAAA,KAAA,CAAhB,EAAA,CAAC,CAAD,IAAC,CAAD,WAAC;AACH;;AAED,aAAA,KAAA,CAAA,IAAA,CAAA,kBAAA,EAAoC;AAClC,UAAA,MAAM,EAD4B,MAAA;AAElC,UAAA,OAAO,EAF2B,OAAA;AAGlC,UAAA,YAAY,EAHsB,YAAA;AAIlC,UAAA,GAAG,EAAE,KAAA,KAAA,CAAW;AAJkB,SAApC;AAOA,eAAA,YAAA;AACD;;;aAED,SAAA,GAAA,CAAA,MAAA,EAAA,OAAA,EAAwC;AACtC,YAAM,OAAO,GAAI,OAAO,IAAI,OAAO,CAAnB,OAAC,IAA+B,KAAA,KAAA,CAAhD,QAAA;;AACA,YAAM,UAAU,GAAG,OAAA,CAAA,OAAA,CAAA,MAAA,CAAnB,MAAmB,CAAnB;;AACA,YAAM,cAAuC,GAAG,UAAU,GACtD,KAAA,WAAA,CADsD,MACtD,CADsD,GAErD,MAAD,CAAgB,KAAA,KAAA,CAFpB,EAEI,CAFJ;;AAIA,YAAI,CAAJ,cAAA,EAAqB;AACnB,iBAAA,IAAA;AACD;;AAED,YAAM,KAAK,GAAG,QAAG,CAAH,IAAA,CAAA,cAAA,EAEZ,UAAA,CAAA,EAAA;AAAA,iBAAO,CAAC,CAAD,OAAA,KAAA,OAAA,KAA0B,UAAU,IAAI,CAAC,CAAD,YAAA,CAAA,SAAA,CAA/C,MAA+C,CAAxC,CAAP;AAFF,SAAc,CAAd;;AAKA,eAAO,KAAK,IAAI,KAAK,CAArB,YAAA;AACD;;;aAED,SAAA,YAAA,CAAA,IAAA,EAAA,QAAA,EAA0E;AACxE,aAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAA2B,KAA3B,IAA2B,CAA3B,MAAA,EAAA,EAAA,EAAA,EAAsC;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAX,KAAK,IAAL,CAAW,EAAX,CAAW;AAAA,cAA3B,aAA2B,GAAA,KAAA;AACpC,cAAI,GAAa,GAAA,KAAjB,CAAA;;AAEA,cACE,CAAC,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,aAAY,CAAtB,MAAA,IAAA;AAEC,UAAA,OAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,KAAoB,aAAQ,CAAR,eAAA,CAAA,IAAA,EAA+B,aAAY,CAFhE,MAEqB,CAFrB,GAAA;AAIC,UAAA,IAAI,KAAK,aAAY,CAJvB,MAAA,KAAA;AAMA,UAAA,aAAY,CAAZ,SAAA,CAPF,IAOE,CAPF,EAQE;AACA,YAAA,GAAG,GAAG,QAAQ,CAAd,aAAc,CAAd;AACD;;AAED,cAAI,GAAG,KAAP,SAAA,EAAuB;AACrB,mBAAA,GAAA;AACD;AACF;AACF;;;;GAzGU,E;;;;;;;;;;ACvBb;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,WAAA,YAAA,CAAA,KAAA,EAAgC;AAAA,QAAA,eAAA;;AAC9B,QAAM,OAGJ,GAHF,EAAA;AAKA,QAAM,eAML,GAND,EAAA;AAOA,QAAM,SAAqB,GAA3B,EAAA;AAEA,QAAM,aAAa,GAAG;AACpB,MAAA,GAAG,EADiB,GAAA;AAEpB,MAAA,MAAM,EAFc,MAAA;AAIpB,MAAA,WAAW,EAJS,WAAA;AAKpB,MAAA,cAAc,EALM,cAAA;AAOpB,MAAA,gBAAgB,EAPI,gBAAA;AAQpB,MAAA,kBAAkB,EARE,kBAAA;AASpB,MAAA,eAAe,EATK,eAAA;AAUpB,MAAA,SAAS,EAVW,SAAA;AAYpB,MAAA,OAAO,EAZa,OAAA;AAcpB,MAAA,eAAe,EAdK,KAAA;AAepB,MAAA,eAAe,EAAE;AAfG,KAAtB,CAf8B,CAAA;;AAkC9B,KAAA,eAAA,GAAA,KAAK,CAAL,QAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,aAAA,CAAA,KAAA,EAAA,gBAAA,CAAA,MAAA,EAAA,IAAA,EAAoE;AAClE,UAAA,OAAA,GAAe;AACb,eAAQ,aAAa,CAAb,eAAA,GAAR,IAAA;AAFgE,OAAA;;AAIlE,UAAA,OAAA,GAAe;AACb,eAAQ,aAAa,CAAb,eAAA,GAAR,IAAA;AACD;;AANiE,KAApE,CAAA;AASA,IAAA,KAAK,CAAL,MAAA,GAAA,aAAA;;AAEA,aAAA,GAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAuG;AACrG,UAAM,OAAO,GAAG,eAAU,CAA1B,WAA0B,CAA1B;;AACA,UAAI,MAAM,GAAG,QAAG,CAAH,IAAA,CAAA,OAAA,EAAkB,UAAA,CAAA,EAAA;AAAA,eAAO,CAAC,CAAD,WAAA,KAAP,WAAA;AAA/B,OAAa,CAAb;;AAEA,UAAI,CAAJ,MAAA,EAAa;AACX,QAAA,MAAM,GAAG;AACP,UAAA,WAAW,EADJ,WAAA;AAEP,UAAA,MAAM,EAAE;AAFD,SAAT;AAKA,QAAA,OAAO,CAAP,IAAA,CAAA,MAAA;AACD;;AAED,UAAI,CAAC,MAAM,CAAN,MAAA,CAAL,IAAK,CAAL,EAA0B;AACxB,QAAA,MAAM,CAAN,MAAA,CAAA,IAAA,IAAA,EAAA;AACD;;AAED,UAAI,WAAW,CAAX,gBAAA,IAAgC,CAAC,QAAG,CAAH,QAAA,CAAa,MAAM,CAAN,MAAA,CAAb,IAAa,CAAb,EAArC,QAAqC,CAArC,EAAkF;AAChF,QAAA,WAAW,CAAX,gBAAA,CAAA,IAAA,EAAA,QAAA,EAGE,aAAa,CAAb,eAAA,GAAA,OAAA,GAA0C,OAAO,CAHnD,OAAA;AAKA,QAAA,MAAM,CAAN,MAAA,CAAA,IAAA,EAAA,IAAA,CAAA,QAAA;AACD;AACF;;AAED,aAAA,MAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAKE;AACA,UAAM,OAAO,GAAG,eAAU,CAA1B,WAA0B,CAA1B;;AACA,UAAM,WAAW,GAAG,QAAG,CAAH,SAAA,CAAA,OAAA,EAAuB,UAAA,CAAA,EAAA;AAAA,eAAO,CAAC,CAAD,WAAA,KAAP,WAAA;AAA3C,OAAoB,CAApB;;AACA,UAAM,MAAM,GAAG,OAAO,CAAtB,WAAsB,CAAtB;;AAEA,UAAI,CAAA,MAAA,IAAW,CAAC,MAAM,CAAtB,MAAA,EAA+B;AAC7B;AACD;;AAED,UAAI,IAAI,KAAR,KAAA,EAAoB;AAClB,aAAA,IAAA,IAAa,MAAM,CAAnB,MAAA,EAA4B;AAC1B,cAAI,MAAM,CAAN,MAAA,CAAA,cAAA,CAAJ,IAAI,CAAJ,EAAwC;AACtC,YAAA,MAAM,CAAA,WAAA,EAAA,IAAA,EAAN,KAAM,CAAN;AACD;AACF;;AACD;AACD;;AAED,UAAI,WAAW,GAAf,KAAA;AACA,UAAM,aAAa,GAAG,MAAM,CAAN,MAAA,CAAtB,IAAsB,CAAtB;;AAEA,UAAA,aAAA,EAAmB;AACjB,YAAI,QAAQ,KAAZ,KAAA,EAAwB;AACtB,eAAK,IAAI,CAAC,GAAG,aAAa,CAAb,MAAA,GAAb,CAAA,EAAuC,CAAC,IAAxC,CAAA,EAA+C,CAA/C,EAAA,EAAoD;AAClD,YAAA,MAAM,CAAA,WAAA,EAAA,IAAA,EAAoB,aAAa,CAAjC,CAAiC,CAAjC,EAAN,OAAM,CAAN;AACD;;AACD;AAJF,SAAA,MAKO;AACL,eAAK,IAAI,EAAC,GAAV,CAAA,EAAgB,EAAC,GAAG,aAAa,CAAjC,MAAA,EAA0C,EAA1C,EAAA,EAA+C;AAC7C,gBAAI,aAAa,CAAb,EAAa,CAAb,KAAJ,QAAA,EAAmC;AACjC,cAAA,WAAW,CAAX,mBAAA,CAAA,IAAA,EAAA,QAAA,EAGE,aAAa,CAAb,eAAA,GAAA,OAAA,GAA0C,OAAO,CAHnD,OAAA;AAKA,cAAA,aAAa,CAAb,MAAA,CAAA,EAAA,EAAA,CAAA;;AAEA,kBAAI,aAAa,CAAb,MAAA,KAAJ,CAAA,EAAgC;AAC9B,uBAAO,MAAM,CAAN,MAAA,CAAP,IAAO,CAAP;AACA,gBAAA,WAAW,GAAX,IAAA;AACD;;AAED;AACD;AACF;AACF;AACF;;AAED,UAAI,WAAW,IAAI,CAAC,MAAM,CAAN,IAAA,CAAY,MAAM,CAAlB,MAAA,EAApB,MAAA,EAAuD;AACrD,QAAA,OAAO,CAAP,MAAA,CAAA,WAAA,EAAA,CAAA;AACD;AACF;;AAED,aAAA,WAAA,CAAA,QAAA,EAAA,OAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAA4G;AAC1G,UAAM,OAAO,GAAG,eAAU,CAA1B,WAA0B,CAA1B;;AACA,UAAI,CAAC,eAAe,CAApB,IAAoB,CAApB,EAA4B;AAC1B,QAAA,eAAe,CAAf,IAAe,CAAf,GAD0B,EAC1B,CAD0B,CAAA;;AAI1B,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAkB,SAAlB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA6B;AAAA,cAAA,IAAA;;AAAA,UAAA,IAAA,GAAX,SAAW,CAAA,GAAA,CAAA;AAAA,cAAlB,GAAkB,GAAA,IAAA;AAC3B,UAAA,GAAG,CAAA,GAAA,EAAA,IAAA,EAAH,gBAAG,CAAH;AACA,UAAA,GAAG,CAAA,GAAA,EAAA,IAAA,EAAA,kBAAA,EAAH,IAAG,CAAH;AACD;AACF;;AAED,UAAM,SAAS,GAAG,eAAe,CAAjC,IAAiC,CAAjC;;AACA,UAAI,QAAQ,GAAG,QAAG,CAAH,IAAA,CAAA,SAAA,EAAoB,UAAA,CAAA,EAAA;AAAA,eAAO,CAAC,CAAD,QAAA,KAAA,QAAA,IAA2B,CAAC,CAAD,OAAA,KAAlC,OAAA;AAAnC,OAAe,CAAf;;AAEA,UAAI,CAAJ,QAAA,EAAe;AACb,QAAA,QAAQ,GAAG;AAAE,UAAA,QAAQ,EAAV,QAAA;AAAY,UAAA,OAAO,EAAnB,OAAA;AAAqB,UAAA,SAAS,EAAE;AAAhC,SAAX;AACA,QAAA,SAAS,CAAT,IAAA,CAAA,QAAA;AACD;;AAED,MAAA,QAAQ,CAAR,SAAA,CAAA,IAAA,CAAwB,CAAA,QAAA,EAAxB,OAAwB,CAAxB;AACD;;AAED,aAAA,cAAA,CAAA,QAAA,EAAA,OAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAME;AACA,UAAM,OAAO,GAAG,eAAU,CAA1B,WAA0B,CAA1B;;AACA,UAAM,SAAS,GAAG,eAAe,CAAjC,IAAiC,CAAjC;AACA,UAAI,UAAU,GAAd,KAAA;AACA,UAAA,KAAA;AAEA,UAAI,CAAJ,SAAA,EANA,OAAA,CAAA;;AASA,WAAK,KAAK,GAAG,SAAS,CAAT,MAAA,GAAb,CAAA,EAAmC,KAAK,IAAxC,CAAA,EAA+C,KAA/C,EAAA,EAAwD;AACtD,YAAM,GAAG,GAAG,SAAS,CADiC,KACjC,CAArB,CADsD,CAAA;;AAGtD,YAAI,GAAG,CAAH,QAAA,KAAA,QAAA,IAA6B,GAAG,CAAH,OAAA,KAAjC,OAAA,EAA0D;AAAA,cAChD,SADgD,GAClC,GADkC,CAAA,SAAA,CAAA,CAAA;;AAIxD,eAAK,IAAI,CAAC,GAAG,SAAS,CAAT,MAAA,GAAb,CAAA,EAAmC,CAAC,IAApC,CAAA,EAA2C,CAA3C,EAAA,EAAgD;AAAA,gBAAA,YAAA,GAAA,mBAAA,CACX,SAAS,CADE,CACF,CADE,EAAA,CAAA,CAAA;AAAA,gBACvC,EADuC,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,gBAAA,aAAA,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,gBACjC,OADiC,GAAA,aAAA,CAAA,OAAA;AAAA,gBACxB,OADwB,GAAA,aAAA,CAAA,OAAA,CAAA,CAAA;;;AAI9C,gBAAI,EAAE,KAAF,QAAA,IAAmB,OAAO,KAAK,OAAO,CAAtC,OAAA,IAAkD,OAAO,KAAK,OAAO,CAAzE,OAAA,EAAmF;;AAEjF,cAAA,SAAS,CAAT,MAAA,CAAA,CAAA,EAFiF,CAEjF,EAFiF,CAAA;;;AAMjF,kBAAI,CAAC,SAAS,CAAd,MAAA,EAAuB;AACrB,gBAAA,SAAS,CAAT,MAAA,CAAA,KAAA,EADqB,CACrB,EADqB,CAAA;;AAIrB,gBAAA,MAAM,CAAA,OAAA,EAAA,IAAA,EAAN,gBAAM,CAAN;AACA,gBAAA,MAAM,CAAA,OAAA,EAAA,IAAA,EAAA,kBAAA,EAAN,IAAM,CAAN;AAX+E,eAAA,CAAA;;;AAejF,cAAA,UAAU,GAAV,IAAA;AACA;AACD;AACF;;AAED,cAAA,UAAA,EAAgB;AACd;AACD;AACF;AACF;AA3M2B,KAAA,CAAA;;;;AAgN9B,aAAA,gBAAA,CAAA,KAAA,EAAA,WAAA,EAAwE;AACtE,UAAM,OAAO,GAAG,eAAU,CAA1B,WAA0B,CAA1B;;AACA,UAAM,SAAS,GAAG,IAAA,SAAA,CAAlB,KAAkB,CAAlB;AACA,UAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAvC,IAAiC,CAAjC;;AAHsE,UAAA,qBAAA,GAIhD,iBAAY,CAAZ,eAAA,CAJgD,KAIhD,CAJgD;AAAA,UAAA,sBAAA,GAAA,mBAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;AAAA,UAI/D,WAJ+D,GAAA,sBAAA,CAAA,CAAA,CAAA;;AAKtE,UAAI,OAAa,GALqD,WAKtE,CALsE,CAAA;;AAQtE,aAAO,OAAA,CAAA,OAAA,CAAA,OAAA,CAAP,OAAO,CAAP,EAA4B;AAC1B,aAAK,IAAI,CAAC,GAAV,CAAA,EAAgB,CAAC,GAAG,SAAS,CAA7B,MAAA,EAAsC,CAAtC,EAAA,EAA2C;AACzC,cAAM,GAAG,GAAG,SAAS,CAArB,CAAqB,CAArB;AADyC,cAEjC,QAFiC,GAEX,GAFW,CAAA,QAAA;AAAA,cAEvB,OAFuB,GAEX,GAFW,CAAA,OAAA;;AAIzC,cACE,aAAQ,CAAR,eAAA,CAAA,OAAA,EAAA,QAAA,KACA,aAAQ,CAAR,YAAA,CAAA,OAAA,EADA,WACA,CADA,IAEA,aAAQ,CAAR,YAAA,CAAA,OAAA,EAHF,OAGE,CAHF,EAIE;AAAA,gBACQ,SADR,GACsB,GADtB,CAAA,SAAA;AAGA,YAAA,SAAS,CAAT,aAAA,GAAA,OAAA;;AAEA,iBAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAyC,SAAzC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAoD;AAAA,kBAAA,KAAA;;AAAA,cAAA,KAAA,GAAX,SAAW,CAAA,GAAA,CAAA;;AAAA,kBAAA,KAAA,GAAA,KAAA;AAAA,kBAAA,KAAA,GAAA,mBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,kBAAxC,EAAwC,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,kBAAA,MAAA,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,kBAAlC,OAAkC,GAAA,MAAA,CAAlC,OAAkC;AAAA,kBAAzB,OAAyB,GAAA,MAAA,CAAzB,OAAyB;;AAClD,kBAAI,OAAO,KAAK,OAAO,CAAnB,OAAA,IAA+B,OAAO,KAAK,OAAO,CAAtD,OAAA,EAAgE;AAC9D,gBAAA,EAAE,CAAF,SAAE,CAAF;AACD;AACF;AACF;AACF;;AAED,QAAA,OAAO,GAAG,aAAQ,CAAR,UAAA,CAAV,OAAU,CAAV;AACD;AACF;;AAED,aAAA,kBAAA,CAAA,KAAA,EAAsE;AACpE,aAAO,gBAAgB,CAAhB,IAAA,CAAA,IAAA,EAAA,KAAA,EAAP,IAAO,CAAP;AAnP4B,KAAA,CAAA;;;AAuP9B,WAAA,aAAA;AACD;;MAEK,SAAA,GAAA,aAAA,YAAA;AAKJ,aAAA,SAAA,CAAA,aAAA,EAAmC;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AACjC,WAAA,aAAA,GADiC,aACjC,CADiC,CAAA;;AAGjC,OAAA,GAAA,kBAAA,CAAA,OAAA,EAAA,IAAA,EAAA,aAAA;AACD;;;;aAED,SAAA,sBAAA,GAA0B;AACxB,aAAA,aAAA,CAAA,cAAA;AACD;;;aAED,SAAA,eAAA,GAAmB;AACjB,aAAA,aAAA,CAAA,eAAA;AACD;;;aAED,SAAA,wBAAA,GAA4B;AAC1B,aAAA,aAAA,CAAA,wBAAA;AACD;;;;GArBG,E;;AAwBN,WAAA,eAAA,CAAA,KAAA,EAAwG;AACtG,QAAI,CAAC,OAAA,CAAA,OAAA,CAAA,MAAA,CAAL,KAAK,CAAL,EAAuB;AACrB,aAAO;AAAE,QAAA,OAAO,EAAE,CAAC,CAAZ,KAAA;AAAoB,QAAA,OAAO,EAAE;AAA7B,OAAP;AACD;;AAED,QAAM,OAAO,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAhB,KAAgB,CAAhB;AAEA,IAAA,OAAO,CAAP,OAAA,GAAkB,CAAC,CAAC,KAAK,CAAzB,OAAA;AACA,IAAA,OAAO,CAAP,OAAA,GAAkB,CAAC,CAAC,KAAK,CAAzB,OAAA;AAEA,WAAA,OAAA;AACD;;sBAEc;AACb,IAAA,EAAE,EADW,QAAA;AAEb,IAAA,OAAO,EAAP;AAFa,G;;;;;;;;;AC7Sf;;AAAA;AAYA,MAAM,MAAM,GAAG;AACb,IAAA,WAAW,EAAE,CAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EADA,MACA,CADA;AAGb,IAAA,MAHa,EAAA,SAAA,MAAA,CAAA,OAAA,EAGmB;AAC9B,WAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,MAAM,CAA3B,WAAqB,CAArB,MAAA,EAAA,EAAA,EAAA,EAAyC;AAAA,YAAA,IAAA;;AAAA,QAAA,IAAA,GAApB,MAAM,CAAC,WAAP,CAAoB,EAApB,CAAoB;AAAA,YAA9B,MAA8B,GAAA,IAAA;AACvC,YAAM,WAAW,GAAG,MAAM,CAAN,MAAM,CAAN,CAApB,OAAoB,CAApB;;AAEA,YAAA,WAAA,EAAiB;AACf,iBAAA,WAAA;AACD;AACF;;AAED,aAAA,IAAA;AAZW,KAAA;;AAgBb,IAAA,gBAhBa,EAAA,SAAA,gBAAA,CAAA,KAAA,EAgBoE;AAAA,UAA7D,WAA6D,GAAA,KAAA,CAA7D,WAA6D;AAAA,UAAhD,SAAgD,GAAA,KAAA,CAAhD,SAAgD;AAAA,UAArC,WAAqC,GAAA,KAAA,CAArC,WAAqC;AAAA,UAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;;AAC/E,UAAI,CAAC,cAAA,IAAA,CAAL,SAAK,CAAL,EAAoC;AAClC,eAAA,IAAA;AACD;;AAED,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,GAAzB,CAAyB;AAAA,YAAxC,WAAwC,GAAA,KAAA;AACjD,YAAI,OAAO,GAAX,WAAA;;AAEA,YACE,WAAW,CAAX,UAAA,IACA,WAAW,CAAX,UAAA,CADA,WAAA,IAEA,WAAW,CAAX,WAAA,KAHF,WAAA,EAIE;AACA,iBAAA,OAAA,EAAgB;;AAEd,gBAAI,OAAO,KAAK,WAAW,CAA3B,OAAA,EAAqC;AACnC,qBAAA,WAAA;AACD;;AACD,YAAA,OAAO,GAAG,aAAG,CAAH,UAAA,CAAV,OAAU,CAAV;AACD;AACF;AACF;;AAED,aAAA,IAAA;AAvCW,KAAA;;AA2Cb,IAAA,UA3Ca,EAAA,SAAA,UAAA,CAAA,KAAA,EA2C4D;AAAA,UAA3D,SAA2D,GAAA,KAAA,CAA3D,SAA2D;AAAA,UAAhD,WAAgD,GAAA,KAAA,CAAhD,WAAgD;AAAA,UAAnC,SAAmC,GAAA,KAAA,CAAnC,SAAmC;AAAA,UAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;;AACvE,UAAI,WAAW,KAAX,OAAA,IAA2B,WAAW,KAA1C,KAAA,EAAsD;AACpD,eAAA,IAAA;AACD;;AAED,UAAA,cAAA;;AAEA,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,GAAzB,CAAyB;AAAA,YAAxC,WAAwC,GAAA,KAAA;;AACjD,YAAI,WAAW,CAAX,WAAA,KAAJ,WAAA,EAA6C;;AAE3C,cAAI,WAAW,CAAX,UAAA,IAA0B,CAAC,YAAY,CAAA,WAAA,EAA3C,SAA2C,CAA3C,EAAqE;AACnE;AAHyC,WAAA,CAAA;;;AAO3C,cAAI,WAAW,CAAf,WAAI,EAAJ,EAA+B;AAC7B,mBAAA,WAAA;AADF,WAAA,CAAA;AAAA,eAIK,IAAI,CAAJ,cAAA,EAAqB;AACxB,cAAA,cAAc,GAAd,WAAA;AACD;AACF;AAtBoE,OAAA,CAAA;;;;AA2BvE,UAAA,cAAA,EAAoB;AAClB,eAAA,cAAA;AA5BqE,OAAA,CAAA;;;;;AAkCvE,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,GAAzB,CAAyB;AAAA,YAAxC,YAAwC,GAAA,KAAA;;AACjD,YAAI,YAAW,CAAX,WAAA,KAAA,WAAA,IAA2C,EAAE,QAAA,IAAA,CAAA,SAAA,KAA2B,YAAW,CAAvF,UAA+C,CAA/C,EAAqG;AACnG,iBAAA,YAAA;AACD;AACF;;AAED,aAAA,IAAA;AAnFW,KAAA;;AAuFb,IAAA,UAvFa,EAAA,SAAA,UAAA,CAAA,KAAA,EAuFoC;AAAA,UAAnC,SAAmC,GAAA,KAAA,CAAnC,SAAmC;AAAA,UAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;;AAC/C,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,GAAzB,CAAyB;AAAA,YAAxC,WAAwC,GAAA,KAAA;;AACjD,YAAI,YAAY,CAAA,WAAA,EAAhB,SAAgB,CAAhB,EAA0C;AACxC,iBAAA,WAAA;AACD;AACF;;AAED,aAAA,IAAA;AA9FW,KAAA;;AAkGb,IAAA,IAlGa,EAAA,SAAA,IAAA,CAAA,KAAA,EAkGgC;AAAA,UAArC,WAAqC,GAAA,KAAA,CAArC,WAAqC;AAAA,UAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;;AAC3C,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,YAAA,MAAA;;AAAA,QAAA,MAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,GAAzB,CAAyB;AAAA,YAAxC,WAAwC,GAAA,MAAA,CAAA,C;;AAEjD,YAAI,WAAW,CAAX,QAAA,CAAA,MAAA,KAAJ,CAAA,EAAuC;AACrC,cAAM,MAAM,GAAG,WAAW,CADW,YACrC,CADqC,CAAA;;;AAIrC,cAAI,MAAM,IAAI,EAAE,MAAM,CAAN,OAAA,CAAA,OAAA,IAA0B,MAAM,CAAN,OAAA,CAAA,OAAA,CAA1C,OAAc,CAAd,EAA2E;AACzE;AACD;AANH,SAAA,CAAA;AAAA,aASK,IAAI,WAAW,CAAX,QAAA,CAAA,MAAA,IAAJ,CAAA,EAAsC;AACzC;AACD;;AAED,YAAI,CAAC,WAAW,CAAZ,WAAC,EAAD,IAA8B,WAAW,KAAK,WAAW,CAA7D,WAAA,EAA2E;AACzE,iBAAA,WAAA;AACD;AACF;;AAED,aAAA,IAAA;AACD;AAxHY,GAAf;;AA2HA,WAAA,YAAA,CAAA,WAAA,EAAA,SAAA,EAAoE;AAClE,WAAO,WAAW,CAAX,QAAA,CAAA,IAAA,CAA0B,UAAA,MAAA,EAAA;AAAA,UAAG,EAAH,GAAA,MAAA,CAAA,EAAA;AAAA,aAAY,EAAE,KAAd,SAAA;AAAjC,KAAO,CAAP;AACD;;sBAEc,M;;;;;;;;;;;;;;;;;;;;;;;;;AC5If;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;AACA;;AAAA;AAEA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,WAAW,GAAG,CAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAApB,YAAoB,CAApB;;AASA,WAAA,YAAA,CAAA,KAAA,EAAgC;AAC9B,QAAM,SAAS,GAAf,EAAA;;AAEA,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,WAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAkC;AAAA,UAAA,IAAA;;AAAA,MAAA,IAAA,GAAb,WAAa,CAAA,EAAA,CAAA;AAAA,UAAvB,MAAuB,GAAA,IAAA;AAChC,MAAA,SAAS,CAAT,MAAS,CAAT,GAAoB,gBAAgB,CAAA,MAAA,EAApC,KAAoC,CAApC;AACD;;AAED,QAAM,WAAW,GAAG,YAAA,CAAA,OAAA,CAApB,WAAA;AACA,QAAA,SAAA;;AAEA,QAAI,eAAA,CAAA,OAAA,CAAJ,YAAA,EAA6B;AAC3B,MAAA,SAAS,GAAG,CACV;AAAE,QAAA,IAAI,EAAE,WAAW,CAAnB,IAAA;AAA0B,QAAA,QAAQ,EAAE;AAApC,OADU,EAEV;AAAE,QAAA,IAAI,EAAE,WAAW,CAAnB,IAAA;AAA0B,QAAA,QAAQ,EAAE,SAAS,CAAC;AAA9C,OAFU,EAGV;AAAE,QAAA,IAAI,EAAE,WAAW,CAAnB,IAAA;AAA0B,QAAA,QAAQ,EAAE,SAAS,CAAC;AAA9C,OAHU,EAIV;AAAE,QAAA,IAAI,EAAE,WAAW,CAAnB,EAAA;AAAwB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAA5C,OAJU,EAKV;AAAE,QAAA,IAAI,EAAE,WAAW,CAAnB,MAAA;AAA4B,QAAA,QAAQ,EAAE,SAAS,CAAC;AAAhD,OALU,CAAZ;AADF,KAAA,MAQO;AACL,MAAA,SAAS,GAAG,CACV;AAAE,QAAA,IAAI,EAAN,WAAA;AAAqB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAAzC,OADU,EAEV;AAAE,QAAA,IAAI,EAAN,WAAA;AAAqB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAAzC,OAFU,EAGV;AAAE,QAAA,IAAI,EAAN,SAAA;AAAmB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAAvC,OAHU,EAKV;AAAE,QAAA,IAAI,EAAN,YAAA;AAAsB,QAAA,QAAQ,EAAE;AAAhC,OALU,EAMV;AAAE,QAAA,IAAI,EAAN,YAAA;AAAsB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAA1C,OANU,EAOV;AAAE,QAAA,IAAI,EAAN,WAAA;AAAqB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAAzC,OAPU,EAQV;AAAE,QAAA,IAAI,EAAN,UAAA;AAAoB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAAxC,OARU,EASV;AAAE,QAAA,IAAI,EAAN,aAAA;AAAuB,QAAA,QAAQ,EAAE,SAAS,CAAC;AAA3C,OATU,CAAZ;AAWD;;AAED,IAAA,SAAS,CAAT,IAAA,CAAe;AACb,MAAA,IAAI,EADS,MAAA;AAEb,MAAA,QAFa,EAAA,SAAA,QAAA,CAAA,KAAA,EAEI;AACf,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,GAAzB,CAAyB;AAAA,cAAxC,WAAwC,GAAA,KAAA;AACjD,UAAA,WAAW,CAAX,YAAA,CAAA,KAAA;AACD;AACF;AANY,KAAf,EAhC8B,CAAA;;AA0C9B,IAAA,KAAK,CAAL,aAAA,GAAA,CAAA;;AAEA,IAAA,KAAK,CAAL,WAAA,GAAA,aAAA,UAAA,gBAAA,EAAA;AAAA,MAAA,cAAA,CAAA,MAAA,EAAA,gBAAA,CAAA;;AAAA,UAAA,MAAA,GAAA,iBAAA,CAAA,MAAA,CAAA;;AAAA,eAAA,MAAA,GAAA;AAAA,QAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,CAAA;;AAAA,eAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;;AAAA,MAAA,iBAAA,CAAA,MAAA,EAAA,CAAA;AAAA,QAAA,GAAA,EAAA,sBAAA;AAAA,QAAA,GAAA,EACE,SAAA,GAAA,GAA4B;AAC1B,iBAAO,KAAK,CAAL,YAAA,CAAP,oBAAA;AAFJ,SAAA;AAAA,QAAA,GAAA,EAKE,SAAA,GAAA,CAAA,KAAA,EAAiC;AAC/B,UAAA,KAAK,CAAL,YAAA,CAAA,oBAAA,GAAA,KAAA;AACD;AAPH,OAAA,EAAA;AAAA,QAAA,GAAA,EAAA,MAAA;AAAA,QAAA,KAAA,EASE,SAAA,IAAA,GAAQ;AACN,iBAAO,KAAK,CAAZ,GAAO,EAAP;AACD;AAXH,OAAA,CAAA,CAAA;;AAAA,aAAA,MAAA;AAAA,KAAA,CAAyD,gBAAA,CAAzD,OAAA,CAAA;;AAcA,IAAA,KAAK,CAAL,YAAA,GAAqB;;AAEnB,MAAA,IAAI,EAFe,EAAA;AAGnB,MAAA,GAHmB,EAAA,SAAA,IAAA,CAAA,OAAA,EAGsE;AACvF,QAAA,OAAO,CAAP,SAAA,GAAoB,UAAA,IAAA,EAAA,GAAA,EAAA;AAAA,iBAAe,KAAK,CAAL,IAAA,CAAA,IAAA,EAAf,GAAe,CAAf;AAApB,SAAA;;AAEA,YAAM,WAAW,GAAG,IAAI,KAAK,CAAT,WAAA,CAApB,OAAoB,CAApB;AAEA,QAAA,KAAK,CAAL,YAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA;AACA,eAAA,WAAA;AATiB,OAAA;AAWnB,MAAA,SAAS,EAXU,SAAA;AAYnB,MAAA,SAAS,EAZU,SAAA;AAanB,MAAA,oBAAoB,EAAE;AAbH,KAArB;;AAgBA,aAAA,2BAAA,GAAwC;;AAEtC,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAL,YAAA,CAA1B,IAA0B,CAA1B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAAzB,KAAK,CAAL,YAAA,CAAmB,IAAnB,CAAyB,GAAzB,CAAyB;AAAA,YAAxC,WAAwC,GAAA,KAAA;;AACjD,YAAI,CAAC,WAAW,CAAZ,aAAA,IAA8B,WAAW,CAAX,WAAA,KAA9B,OAAA,IAAqE,WAAW,CAApF,YAAA,EAAmG;AACjG;AAF+C,SAAA,CAAA;;;AAAA,YAAA,KAAA,GAAA,SAAA,KAAA,GAAA;AAAA,UAAA,KAAA,GAM3B,WAAW,CANgB,QAM3B,CAN2B,GAM3B,CAN2B;AAAA,cAMtC,OANsC,GAAA,KAAA;;AAO/C,cAAI,CAAC,KAAK,CAAL,SAAA,CAAA,IAAA,CAAqB,UAAA,KAAA,EAAA;AAAA,gBAAG,GAAH,GAAA,KAAA,CAAA,GAAA;AAAA,mBAAa,CAAA,GAAA,aAAA,CAAA,YAAA,EAAA,GAAA,EAAkB,OAAO,CAAtC,UAAa,CAAb;AAA1B,WAAK,CAAL,EAA+E;;AAE7E,YAAA,WAAW,CAAX,aAAA,CAA0B,OAAO,CAAjC,OAAA,EAA2C,OAAO,CAAlD,KAAA;AACD;AAV8C,SAAA;;AAMjD,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAsB,WAAW,CAAjC,QAAsB,CAAtB,MAAA,EAAA,GAAA,EAAA,EAA4C;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA;AAK3C;AACF;AACF;;AAED,IAAA,KAAK,CAAL,SAAA,CAAgB,+BAAA,CAAhB,OAAA;AACD;;AAED,WAAA,gBAAA,CAAA,MAAA,EAAA,KAAA,EAAyD;AACvD,WAAO,UAAA,KAAA,EAAwB;AAC7B,UAAM,YAAY,GAAG,KAAK,CAAL,YAAA,CAArB,IAAA;;AAEA,UAAM,WAAW,GAAG,iBAAY,CAAZ,cAAA,CAApB,KAAoB,CAApB;;AAH6B,UAAA,qBAAA,GAIS,iBAAY,CAAZ,eAAA,CAJT,KAIS,CAJT;AAAA,UAAA,sBAAA,GAAA,mBAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;AAAA,UAItB,WAJsB,GAAA,sBAAA,CAAA,CAAA,CAAA;AAAA,UAIT,cAJS,GAAA,sBAAA,CAAA,CAAA,CAAA;;AAK7B,UAAM,OAAc,GALS,EAK7B,CAL6B,CAAA;;AAO7B,UAAI,SAAA,IAAA,CAAc,KAAK,CAAvB,IAAI,CAAJ,EAA+B;AAC7B,QAAA,KAAK,CAAL,aAAA,GAAsB,KAAK,CADE,GACP,EAAtB,CAD6B,CAAA;;AAI7B,aAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA2B,KAAK,CAAhC,cAA2B,CAA3B,MAAA,EAAA,GAAA,EAAA,EAAiD;AAAA,cAAA,KAAA;;AAAA,UAAA,KAAA,GAAtB,KAAK,CAAC,cAAN,CAAsB,GAAtB,CAAsB;AAAA,cAAtC,YAAsC,GAAA,KAAA;AAC/C,cAAM,OAAO,GAAb,YAAA;;AACA,cAAM,SAAS,GAAG,iBAAY,CAAZ,YAAA,CAAlB,OAAkB,CAAlB;;AACA,cAAM,aAA4B,GAAG;AACnC,YAAA,OAAO,EAD4B,OAAA;AAEnC,YAAA,SAAS,EAF0B,SAAA;AAGnC,YAAA,WAAW,EAHwB,WAAA;AAInC,YAAA,SAAS,EAAE,KAAK,CAJmB,IAAA;AAKnC,YAAA,WAAW,EALwB,WAAA;AAMnC,YAAA,cAAc,EANqB,cAAA;AAOnC,YAAA,KAAK,EAAL;AAPmC,WAArC;AASA,cAAM,WAAW,GAAG,cAAc,CAAlC,aAAkC,CAAlC;AAEA,UAAA,OAAO,CAAP,IAAA,CAAa,CACX,aAAa,CADF,OAAA,EAEX,aAAa,CAFF,WAAA,EAGX,aAAa,CAHF,cAAA,EAAb,WAAa,CAAb;AAMD;AAxBH,OAAA,MAyBO;AACL,YAAI,cAAc,GAAlB,KAAA;;AAEA,YAAI,CAAC,YAAA,CAAA,OAAA,CAAD,oBAAA,IAAiC,QAAA,IAAA,CAAa,KAAK,CAAvD,IAAqC,CAArC,EAA+D;;AAE7D,eAAK,IAAI,CAAC,GAAV,CAAA,EAAgB,CAAC,GAAG,YAAY,CAAhB,MAAA,IAA2B,CAA3C,cAAA,EAA4D,CAA5D,EAAA,EAAiE;AAC/D,YAAA,cAAc,GAAG,YAAY,CAAZ,CAAY,CAAZ,CAAA,WAAA,KAAA,OAAA,IAA2C,YAAY,CAAZ,CAAY,CAAZ,CAA5D,aAAA;AAH2D,WAAA,CAAA;;;;AAQ7D,UAAA,cAAc,GACZ,cAAc,IACd,KAAK,CAAL,GAAA,KAAc,KAAK,CAAnB,aAAA,GADA,GAAA,IAAA;AAGA,UAAA,KAAK,CAAL,SAAA,KAJF,CAAA;AAKD;;AAED,YAAI,CAAJ,cAAA,EAAqB;AACnB,cAAM,cAAa,GAAG;AACpB,YAAA,OAAO,EADa,KAAA;AAEpB,YAAA,SAAS,EAAE,iBAAY,CAAZ,YAAA,CAFS,KAET,CAFS;AAGpB,YAAA,WAAW,EAHS,WAAA;AAIpB,YAAA,SAAS,EAAE,KAAK,CAJI,IAAA;AAKpB,YAAA,cAAc,EALM,cAAA;AAMpB,YAAA,WAAW,EANS,WAAA;AAOpB,YAAA,KAAK,EAAL;AAPoB,WAAtB;;AAUA,cAAM,YAAW,GAAG,cAAc,CAAlC,cAAkC,CAAlC;;AAEA,UAAA,OAAO,CAAP,IAAA,CAAa,CACX,cAAa,CADF,OAAA,EAEX,cAAa,CAFF,WAAA,EAGX,cAAa,CAHF,cAAA,EAAb,YAAa,CAAb;AAMD;AArE0B,OAAA,CAAA;;;AAyE7B,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAkE,OAAlE,CAAA,MAAA,EAAA,GAAA,EAAA,EAA2E;AAAA,YAAA,WAAA,GAAA,mBAAA,CAAT,OAAS,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;AAAA,YAA/D,QAA+D,GAAA,WAAA,CAAA,CAAA,CAAA;AAAA,YAAtD,YAAsD,GAAA,WAAA,CAAA,CAAA,CAAA;AAAA,YAAzC,eAAyC,GAAA,WAAA,CAAA,CAAA,CAAA;AAAA,YAAzB,aAAyB,GAAA,WAAA,CAAA,CAAA,CAAA;;AACzE,QAAA,aAAW,CAAX,MAAW,CAAX,CAAA,QAAA,EAAA,KAAA,EAAA,YAAA,EAAA,eAAA;AACD;AA3EH,KAAA;AA6ED;;AAED,WAAA,cAAA,CAAA,aAAA,EAAuD;AAAA,QAC7C,WAD6C,GACtB,aADsB,CAAA,WAAA;AAAA,QAChC,KADgC,GACtB,aADsB,CAAA,KAAA;;AAGrD,QAAM,gBAAgB,GAAG,sBAAA,CAAA,OAAA,CAAA,MAAA,CAAzB,aAAyB,CAAzB;;AACA,QAAM,SAAS,GAAG;AAAE,MAAA,WAAW,EAAb,gBAAA;AAAiC,MAAA,aAAa,EAAb;AAAjC,KAAlB;AAEA,IAAA,KAAK,CAAL,IAAA,CAAA,mBAAA,EAAA,SAAA;AAEA,WAAO,SAAS,CAAT,WAAA,IAAyB,KAAK,CAAL,YAAA,CAAA,GAAA,CAAuB;AAAE,MAAA,WAAW,EAAX;AAAF,KAAvB,CAAhC;AACD;;AAED,WAAA,WAAA,CAAA,KAAA,EAAA,eAAA,EAGE;AAAA,QAFE,GAEF,GAAA,KAAA,CAFE,GAEF;AAAA,QAFO,KAEP,GAAA,KAAA,CAFO,KAEP;AAAA,QAFc,OAEd,GAAA,KAAA,CAFc,OAEd;AAAA,QAEkB,SAFlB,GAII,KAJJ,CAAA,YAII,CAJJ,SAAA;AAAA,QAGE,MAHF,GAII,KAJJ,CAAA,MAAA;AAKA,QAAM,WAAW,GAAG,MAAM,CAA1B,eAA0B,CAA1B;;AAEA,QAAI,KAAK,CAAL,OAAA,CAAA,KAAA,IAAuB,CAAC,OAAO,CAAnC,MAAA,EAA4C;AAC1C,MAAA,OAAO,CAAP,MAAA,GAAiB;AAAE,QAAA,OAAO,EAAE;AAAX,OAAjB;AARF,KAAA,CAAA;;;AAYA,SAAK,IAAL,SAAA,IAAwB,MAAM,CAA9B,eAAA,EAAgD;AAC9C,MAAA,WAAW,CAAA,GAAA,EAAA,SAAA,EAAiB,MAAM,CAAlC,gBAAW,CAAX;AACA,MAAA,WAAW,CAAA,GAAA,EAAA,SAAA,EAAiB,MAAM,CAAvB,kBAAA,EAAX,IAAW,CAAX;AACD;;AAED,QAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAvC,MAAA;;AAEA,SAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAiC,SAAjC,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAAX,SAAW,CAAA,GAAA,CAAA;AAAA,UAAA,KAAA,GAAA,KAAA;AAAA,UAA/B,KAA+B,GAAA,KAAA,CAA/B,IAA+B;AAAA,UAAzB,QAAyB,GAAA,KAAA,CAAzB,QAAyB;AAC1C,MAAA,WAAW,CAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAX,YAAW,CAAX;AACD;AACF;;AAED,MAAM,YAAoB,GAAG;AAC3B,IAAA,EAAE,EADyB,mBAAA;AAE3B,IAAA,OAAO,EAFoB,YAAA;AAG3B,IAAA,SAAS,EAAE;AACT,4BAAsB,SAAA,gBAAA,CAAA,GAAA,EAAA;AAAA,eAAS,WAAW,CAAA,GAAA,EAApB,KAAoB,CAApB;AADb,OAAA;AAET,+BAAyB,SAAA,mBAAA,CAAA,GAAA,EAAA;AAAA,eAAS,WAAW,CAAA,GAAA,EAApB,QAAoB,CAApB;AAFhB,OAAA;AAGT,4BAAsB,SAAA,iBAAA,CAAA,MAAA,EAAA,KAAA,EAA6B;AAAA,YAA1B,YAA0B,GAAA,MAAA,CAA1B,YAA0B,CAAA,C;;AAEjD,aAAK,IAAI,CAAC,GAAG,KAAK,CAAL,YAAA,CAAA,IAAA,CAAA,MAAA,GAAb,CAAA,EAAiD,CAAC,IAAlD,CAAA,EAAyD,CAAzD,EAAA,EAA8D;AAC5D,cAAM,WAAW,GAAG,KAAK,CAAL,YAAA,CAAA,IAAA,CAApB,CAAoB,CAApB;;AAEA,cAAI,WAAW,CAAX,YAAA,KAAJ,YAAA,EAA+C;AAC7C;AACD;;AAED,UAAA,WAAW,CAAX,IAAA;AACA,UAAA,KAAK,CAAL,IAAA,CAAA,sBAAA,EAAmC;AAAE,YAAA,WAAW,EAAX;AAAF,WAAnC;AACA,UAAA,WAAW,CAAX,OAAA;;AAEA,cAAI,KAAK,CAAL,YAAA,CAAA,IAAA,CAAA,MAAA,GAAJ,CAAA,EAAwC;AACtC,YAAA,KAAK,CAAL,YAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA;AACD;AACF;AACF;AApBQ,KAHgB;AAyB3B,IAAA,WAAW,EAzBgB,WAAA;AA0B3B,IAAA,gBAAgB,EA1BW,gBAAA;AA2B3B,IAAA,WAAW,EAAX;AA3B2B,GAA7B;sBA8Be,Y;;;;;;;;;;;;;;;;;;;;;;;;;;AC7Rf;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;AAEA;;AAAA;AACA;;AAAA;AAEA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0Ca,KAAA,GAAA,aAAA,YAAA;;;;;AA+CX,aAAA,KAAA,GAAe;AAAA,UAAA,KAAA,GAAA,IAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,KAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,MAAA,CA9CU,IAAI,CAAJ,KAAA,CAAW,IAAI,CAAJ,MAAA,KAAX,GAAA,CA8CV,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EA7CC,KA6CD,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAzCV,EAyCU,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EAvCL,YAAA,CAAA,OAuCK,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAtCJ,CAAA,GAAA,UAAA,CAAA,OAAA,EAAM,YAAA,CAAN,QAAA,CAsCI,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EArCH,cAAA,CAAA,SAqCG,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,EApCI;AACjB,QAAA,GAAG,EADc,EAAA;AAEjB,QAAA,MAAM,EAAE;AACN,UAAA,KAAK,EADC,IAAA;AAEN,UAAA,IAAI,EAFE,IAAA;AAGN,UAAA,GAAG,EAAE;AAHC,SAFS;AAOjB,QAAA,UAAU,EAPO,EAAA;AAQjB,QAAA,cAAc,EAAE;AARC,OAoCJ,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,gBAAA,EAzBE,CAAA,GAAA,mBAAA,CAAA,oBAAA,EAAA,IAAA,CAyBF,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EAxBC,kBAAA,CAAA,aAwBD,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,EAtBC,IAAI,oBAAA,CAAJ,eAAA,CAAA,IAAA,CAsBD,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,EAVqC,EAUrC,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,UAAA,EALX;AACF,QAAA,IAAI,EADF,EAAA;AAEF,QAAA,GAAG,EAAE;AAFH,OAKW,CAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,gBAAA,EA0CE,UAAA,KAAA,EAAA;AAAA,eAA8B,KAAI,CAAJ,cAAA,CAAoB,KAAK,CAAvD,MAA8B,CAA9B;AA1CF,OAAA,CAAA;;AACb,UAAM,KAAK,GAAX,IAAA;;AAEA,WAAA,YAAA,GAAA,aAAA,UAAA,iBAAA,EAAA;AAAA,QAAA,cAAA,CAAA,MAAA,EAAA,iBAAA,CAAA;;AAAA,YAAA,MAAA,GAAA,iBAAA,CAAA,MAAA,CAAA;;AAAA,iBAAA,MAAA,GAAA;AAAA,UAAA,oBAAA,CAAA,IAAA,EAAA,MAAA,CAAA;;AAAA,iBAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;;AAAA,QAAA,iBAAA,CAAA,MAAA,EAAA,CAAA;AAAA,UAAA,GAAA,EAAA,WAAA;AAAA,UAAA,GAAA,EACE,SAAA,GAAA,GAAiB;AACf,mBAAO,KAAK,CAAZ,QAAA;AACD;AAHH,SAAA,EAAA;AAAA,UAAA,GAAA,EAAA,KAAA;AAAA,UAAA,KAAA,EAKE,SAAA,GAAA,CAAA,OAAA,EAA+D;AAC7D,YAAA,IAAA,CAAA,oBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,EAAA,KAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,OAAA;;AAEA,YAAA,KAAK,CAAL,IAAA,CAAA,kBAAA,EAA+B;AAC7B,cAAA,OAAO,EADsB,OAAA;AAE7B,cAAA,YAAY,EAAE;AAFe,aAA/B;AAKA,mBAAA,IAAA;AACD;AAdH,SAAA,EAAA;AAAA,UAAA,GAAA,EAAA,OAAA;AAAA,UAAA,KAAA,EAgBE,SAAA,KAAA,GAA+B;AAC7B,YAAA,IAAA,CAAA,oBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA;;AACA,YAAA,KAAK,CAAL,aAAA,CAAA,IAAA,CAAA,MAAA,CAAgC,KAAK,CAAL,aAAA,CAAA,IAAA,CAAA,OAAA,CAAhC,IAAgC,CAAhC,EAAA,CAAA;AAEA,YAAA,KAAK,CAAL,IAAA,CAAA,oBAAA,EAAiC;AAAE,cAAA,YAAY,EAAE;AAAhB,aAAjC;AACD;AArBH,SAAA,CAAA,CAAA;;AAAA,eAAA,MAAA;AAAA,OAAA,CAAkC,iBAAA,CAAlC,YAAA,CAAA;AAuBD;;;;aAED,SAAA,YAAA,CAAA,GAAA,EAAA,EAAA,EAA6C;AAC3C,aAAA,YAAA,CAAA,IAAA,CAAuB;AAAE,UAAA,EAAE,EAAJ,EAAA;AAAM,UAAA,GAAG,EAAH;AAAN,SAAvB;AACD;;;aAED,SAAA,IAAA,CAAA,IAAA,EAAA,GAAA,EAAyE;AACvE,aAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAEK,KAFL,YAEK,CAFL,MAAA,EAAA,EAAA,EAAA,EAEwB;AAAA,cAAA,IAAA;;AAAA,UAAA,IAAA,GAAnB,KAAK,YAAL,CAAmB,EAAnB,CAAmB;AAAA,cAAA,KAAA,GAAA,IAAA;AAAA,cADP,QACO,GAAA,KAAA,CADtB,GACsB,CADd,IACc,CAAA;;AACtB,cAAI,CAAC,CAAD,QAAA,IAAc,QAAQ,CAAA,GAAA,EAAA,IAAA,EAAR,IAAQ,CAAR,KAAlB,KAAA,EAAuE;AACrE,mBAAA,KAAA;AACD;AACF;AACF;;;aAID,SAAA,IAAA,CAAA,MAAA,EAA0C;AACxC,eAAO,KAAA,aAAA,GAAA,IAAA,GAA4B,SAAS,CAAA,IAAA,EAA5C,MAA4C,CAA5C;AACD;;;aAED,SAAA,iBAAA,CAAA,MAAA,EAAmC;AACjC,eAAO,KAAA,QAAA,CAAA,GAAA,CAAkB,MAAM,CAAxB,EAAA,KAAgC,KAAA,QAAA,CAAA,IAAA,CAAA,OAAA,CAAA,MAAA,MAAuC,CAA9E,CAAA;AACD;;;aAED,SAAA,SAAA,CAAA,MAAA,EAAA,OAAA,EAA6D;AAC3D,YAAI,CAAC,KAAL,aAAA,EAAyB;AACvB,iBAAA,IAAA;AACD;;AAED,YAAI,KAAA,iBAAA,CAAJ,MAAI,CAAJ,EAAoC;AAClC,iBAAA,IAAA;AACD;;AAED,YAAI,MAAM,CAAV,EAAA,EAAe;AACb,eAAA,QAAA,CAAA,GAAA,CAAkB,MAAM,CAAxB,EAAA,IAAA,MAAA;AACD;;AACD,aAAA,QAAA,CAAA,IAAA,CAAA,IAAA,CAAA,MAAA;;AAEA,YAAI,MAAM,CAAV,OAAA,EAAoB;AAClB,UAAA,MAAM,CAAN,OAAA,CAAA,IAAA,EAAA,OAAA;AACD;;AAED,YAAI,MAAM,CAAN,SAAA,IAAoB,MAAM,CAA9B,MAAA,EAAuC;AACrC,cAAI,KAAK,GAAT,CAAA;AACA,cAAM,GAAG,GAAG,KAAA,YAAA,CAAZ,MAAA;AACA,cAAM,MAAM,GAAG,MAAM,CAAN,MAAA,CAAA,MAAA,CAAqB,UAAA,GAAA,EAAA,EAAA,EAAa;AAC/C,YAAA,GAAG,CAAH,EAAG,CAAH,GAAA,IAAA;AACA,YAAA,GAAG,CAAC,YAAY,CAAhB,EAAgB,CAAb,CAAH,GAAA,IAAA;AACA,mBAAA,GAAA;AAHa,WAAA,EAAf,EAAe,CAAf;;AAMA,iBAAO,KAAK,GAAZ,GAAA,EAAoB,KAApB,EAAA,EAA6B;AAC3B,gBAAM,OAAO,GAAG,KAAA,YAAA,CAAA,KAAA,EAAhB,EAAA;;AAEA,gBAAI,MAAM,CAAN,OAAM,CAAN,IAAmB,MAAM,CAAC,YAAY,CAA1C,OAA0C,CAAb,CAA7B,EAAsD;AACpD;AACD;AACF;;AAED,eAAA,YAAA,CAAA,MAAA,CAAA,KAAA,EAAA,CAAA,EAAmC;AAAE,YAAA,EAAE,EAAE,MAAM,CAAZ,EAAA;AAAiB,YAAA,GAAG,EAAE,MAAM,CAAC;AAA7B,WAAnC;AAjBF,SAAA,MAkBO,IAAI,MAAM,CAAV,SAAA,EAAsB;AAC3B,eAAA,YAAA,CAAA,IAAA,CAAuB;AAAE,YAAA,EAAE,EAAE,MAAM,CAAZ,EAAA;AAAiB,YAAA,GAAG,EAAE,MAAM,CAAC;AAA7B,WAAvB;AACD;;AAED,eAAA,IAAA;AACD;;;aAED,SAAA,WAAA,CAAA,GAAA,EAAA,OAAA,EAAyD;;AAEvD,YAAI,KAAA,WAAA,CAAA,GAAA,MAA0B,CAA9B,CAAA,EAAkC;AAChC,iBAAA,KAAA;AACD;;AAED,YAAM,MAAM,GAAG,WAAG,CAAH,SAAA,CAAf,GAAe,CAAf;;AAEA,QAAA,OAAO,GAAG,OAAO,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAH,OAAG,CAAH,GAAjB,EAAA;AAEA,aAAA,SAAA,CAAA,IAAA,CAAoB;AAAE,UAAA,GAAG,EAAL,GAAA;AAAO,UAAA,OAAO,EAAP;AAAP,SAApB;AACA,aAAA,MAAA,CAAA,SAAA,CAAA,IAAA,CAXuD,GAWvD,EAXuD,CAAA;;;AAevD,YAAI,GAAG,KAAK,KAAZ,QAAA,EAA2B;AACzB,eAAA,MAAA,CAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAkC,KAAlC,cAAA;AACD;;AAED,aAAA,IAAA,CAAA,oBAAA,EAAgC;AAAE,UAAA,GAAG,EAAL,GAAA;AAAO,UAAA,MAAM,EAAb,MAAA;AAAe,UAAA,KAAK,EAApB,IAAA;AAA4B,UAAA,OAAO,EAAP;AAA5B,SAAhC;AACD;;;aAED,SAAA,cAAA,CAAA,GAAA,EAA+B;AAC7B,YAAM,KAAK,GAAG,KAAA,WAAA,CAAd,GAAc,CAAd;;AAEA,YAAM,MAAM,GAAG,WAAG,CAAH,SAAA,CAAf,GAAe,CAAf;;AACA,YAAM,OAAO,GAAG,KAAA,SAAA,CAAA,KAAA,EAAhB,OAAA;AAEA,aAAA,MAAA,CAAA,MAAA,CAAA,MAAA,EAAA,QAAA,EAAqC,KAArC,cAAA;AAEA,aAAA,SAAA,CAAA,MAAA,CAAA,KAAA,EAAA,CAAA;AACA,aAAA,MAAA,CAAA,SAAA,CAAA,MAAA,CAAA,KAAA,EAAA,CAAA;AAEA,aAAA,IAAA,CAAA,uBAAA,EAAmC;AAAE,UAAA,GAAG,EAAL,GAAA;AAAO,UAAA,MAAM,EAAb,MAAA;AAAe,UAAA,KAAK,EAApB,IAAA;AAA4B,UAAA,OAAO,EAAP;AAA5B,SAAnC;AACD;;;aAED,SAAA,WAAA,CAAA,GAAA,EAA4B;AAC1B,aAAK,IAAI,CAAC,GAAV,CAAA,EAAgB,CAAC,GAAG,KAAA,SAAA,CAApB,MAAA,EAA2C,CAA3C,EAAA,EAAgD;AAC9C,cAAI,KAAA,SAAA,CAAA,CAAA,EAAA,GAAA,KAAJ,GAAA,EAAmC;AACjC,mBAAA,CAAA;AACD;AACF;;AAED,eAAO,CAAP,CAAA;AACD;;;aAED,SAAA,aAAA,CAAA,GAAA,EAA8B;AAC5B,YAAM,QAAQ,GAAG,KAAA,WAAA,CAAjB,GAAiB,CAAjB;AAEA,eAAO,QAAQ,KAAK,CAAb,CAAA,GAAA,IAAA,GAAyB,KAAA,SAAA,CAAA,QAAA,EAAhC,OAAA;AACD;;;aAED,SAAA,GAAA,GAAO;AACL,eAAO,CAAG,KAAD,MAAC,CAAF,IAAE,IAAH,IAAA,EAAP,GAAO,EAAP;AACD;;;;GApMU,E;;;;AAuMN,WAAA,SAAA,CAAA,KAAA,EAAA,MAAA,EAAsE;AAC3E,IAAA,KAAK,CAAL,aAAA,GAAA,IAAA;;AAEA,QAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAJ,MAAI,CAAJ,EAAuB;AACrB,MAAA,WAAG,CAAH,IAAA,CAAA,MAAA;AACD;;AAED,IAAA,eAAA,CAAA,OAAA,CAAA,IAAA,CAAA,MAAA;;AACA,IAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,MAAA;;AACA,IAAA,QAAA,CAAA,OAAA,CAAA,IAAA,CAT2E,MAS3E,EAT2E,CAAA;;;AAY3E,IAAA,KAAK,CAAL,MAAA,GAAA,MAAA;AACA,IAAA,KAAK,CAAL,QAAA,GAAiB,MAAM,CAAvB,QAAA;AAEA,IAAA,KAAK,CAAL,SAAA,CAAgB,iBAAA,CAAhB,OAAA;AACA,IAAA,KAAK,CAAL,SAAA,CAAgB,WAAA,CAAhB,OAAA;AAEA,WAAA,KAAA;AACD;;AAED,WAAA,YAAA,CAAA,EAAA,EAAmC;AACjC,WAAO,EAAE,IAAI,EAAE,CAAF,OAAA,CAAA,OAAA,EAAb,EAAa,CAAb;AACD;;;;;;;;;AC3RD;;AAAA;AAEA,MAAM,KAAK,GAAG,IAAI,UAAA,CAAlB,KAAc,EAAd;AAEA,MAAM,QAAQ,GAAG,KAAK,CAAtB,cAAA;sBAEe,Q;;;AAEf,MAAM,OAAO,GAAG,OAAA,UAAA,KAAA,WAAA,GAAA,UAAA,GAAiD,OAAA,MAAA,KAAA,WAAA,GAAA,MAAA,GAAA,KAAjE,CAAA;;AACA,EAAA,KAAK,CAAL,IAAA,CAAA,OAAA;;;;;;;;;sBCTe,SAAA,QAAA,GAAM,CAAA,C;;;;;;;;;;;sBCAN,SAAA,QAAA,GAAM,CAAA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBCSN,SAAA,QAAA,CAAA,IAAA,EAAuB;AACpC,QAAM,WAAW,GAAI,CACnB,CAAA,GAAA,EADmB,GACnB,CADmB,EAEnB,CAAA,MAAA,EAFmB,KAEnB,CAFmB,EAGnB,CAAA,OAAA,EAHmB,QAGnB,CAHmB,EAInB,CAAA,OAAA,EAJkB,QAIlB,CAJmB,EAAD,MAAC,CAKF,UAAA,IAAA,EAAA;AAAA,UAAA,KAAA,GAAA,mBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,UAAE,MAAF,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,UAAU,MAAV,GAAA,KAAA,CAAA,CAAA,CAAA;;AAAA,aAAsB,MAAM,IAAN,IAAA,IAAkB,MAAM,IAA9C,IAAA;AALnB,KAAqB,CAArB;;AAOA,QAAM,QAGL,GAAG,SAHE,QAGF,CAAA,CAAA,EAAA,CAAA,EAAU;AAAA,UAEV,KAFU,GAUR,IAVQ,CAAA,KAAA;AAAA,UAAA,YAAA,GAUR,IAVQ,CAAA,MAAA;AAAA,UAGV,MAHU,GAAA,YAAA,KAAA,KAAA,CAAA,GAGD;AACP,QAAA,IAAI,EAAE,CADC,QAAA;AAEP,QAAA,KAAK,EAFE,QAAA;AAGP,QAAA,GAAG,EAAE,CAHE,QAAA;AAIP,QAAA,MAAM,EAAE;AAJD,OAHC,GAAA,YAAA;AAAA,UAAA,YAAA,GAUR,IAVQ,CAAA,MAAA;AAAA,UASV,MATU,GAAA,YAAA,KAAA,KAAA,CAAA,GASD;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX,OATC,GAAA,YAAA;AAYZ,UAAM,MAEL,GAAG;AAAE,QAAA,KAAK,EAAP,KAAA;AAAS,QAAA,IAAI,EAAb,IAAA;AAAe,QAAA,CAAC,EAAhB,IAAA;AAAkC,QAAA,CAAC,EAAE;AAArC,OAFJ;;AAIA,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA+B,WAA/B,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAAb,WAAa,CAAA,GAAA,CAAA;;AAAA,YAAA,KAAA,GAAA,KAAA;AAAA,YAAA,KAAA,GAAA,mBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,YAAhC,MAAgC,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,YAAxB,MAAwB,GAAA,KAAA,CAAA,CAAA,CAAA;;AAC1C,YAAM,KAAK,GAAG,IAAI,CAAJ,KAAA,CAAW,CAAC,CAAC,GAAG,MAAM,CAAX,CAAA,IAAkB,IAAD,CAA1C,MAA0C,CAA5B,CAAd;AACA,YAAM,KAAK,GAAG,IAAI,CAAJ,KAAA,CAAW,CAAC,CAAC,GAAG,MAAM,CAAX,CAAA,IAAkB,IAAD,CAA1C,MAA0C,CAA5B,CAAd;AAEA,QAAA,MAAM,CAAN,MAAM,CAAN,GAAiB,IAAI,CAAJ,GAAA,CAAS,MAAM,CAAf,IAAA,EAAsB,IAAI,CAAJ,GAAA,CAAS,MAAM,CAAf,KAAA,EAAuB,KAAK,GAAI,IAAD,CAAR,MAAQ,CAAR,GAAgC,MAAM,CAApG,CAAuC,CAAtB,CAAjB;AACA,QAAA,MAAM,CAAN,MAAM,CAAN,GAAiB,IAAI,CAAJ,GAAA,CAAS,MAAM,CAAf,GAAA,EAAqB,IAAI,CAAJ,GAAA,CAAS,MAAM,CAAf,MAAA,EAAwB,KAAK,GAAI,IAAD,CAAR,MAAQ,CAAR,GAAgC,MAAM,CAApG,CAAsC,CAArB,CAAjB;AACD;;AAED,aAAA,MAAA;AA3BF,KAAA;;AA8BA,IAAA,QAAQ,CAAR,IAAA,GAAA,IAAA;AACA,IAAA,QAAQ,CAAR,WAAA,GAAA,WAAA;AAEA,WAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjDF;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;ACFA;;AAAA;AAEA;;AAAA;AASA,MAAM,cAAsB,GAAG;AAC7B,IAAA,EAAE,EAD2B,UAAA;AAE7B,IAAA,OAF6B,EAAA,SAAA,OAAA,CAAA,KAAA,EAEb;AAAA,UACU,QADV,GACuB,KADvB,CAAA,cAAA;AAGd,MAAA,QAAQ,CAAR,QAAA,GAAoB,CAAA,GAAA,WAAA,CAAA,OAAA,EAAO,QAAQ,CAAR,QAAA,IAAP,EAAA,EAApB,QAAoB,CAApB;AACA,MAAA,QAAQ,CAAR,cAAA,GAA0B,QAAQ,CAAR,QAAA,CAA1B,IAAA;AACD;AAP4B,GAA/B;sBAUe,c;;;;;;;;;ACHf;;AAAA;AACA;;AAAA;AAEA;;AAAA;AAEA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,WAAiE,GAAG;AACxE,IAAA,KADwE,EAAA,SAAA,KAAA,CAAA,GAAA,EAC5D;AAAA,UACF,KADE,GACwD,GADxD,CAAA,KAAA;AAAA,UACK,IADL,GACwD,GADxD,CAAA,IAAA;AAAA,UACkB,aADlB,GACwD,GADxD,CAAA,KAAA;AAAA,UAC6C,MAD7C,GACwD,GADxD,CAAA,UAAA;AAAA,UAEJ,KAFI,GAEM,KAAK,CAFX,OAEM,CAFN,KAAA;AAAA,UAAA,cAAA,GAGwB,KAAK,CAH7B,OAAA;AAAA,UAGF,UAHE,GAAA,cAAA,CAAA,UAAA;AAAA,UAGU,SAHV,GAAA,cAAA,CAAA,SAAA;;AAKV,UAAI,KAAK,KAAT,UAAA,EAA0B;AACxB,QAAA,KAAK,GAAG,IAAI,CAAJ,KAAA,GAAa,IAAI,CAAzB,MAAA;AACD;;AAED,MAAA,KAAK,CAAL,WAAA,GAAoB,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAApB,MAAoB,CAApB;AACA,MAAA,KAAK,CAAL,SAAA,GAAkB,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAlB,IAAkB,CAAlB;AACA,MAAA,KAAK,CAAL,KAAA,GAAA,KAAA;AACA,MAAA,KAAK,CAAL,UAAA,GAAA,UAAA;AAEA,UAAM,WAAW,GAAI,KAAK,CAAL,WAAA,GAAoB;AACvC,QAAA,GAAG,EAAE,aAAa,CAAb,GAAA,IAAsB,aAAa,CAAb,IAAA,IAAsB,CAAC,aAAa,CADxB,MAAA;AAEvC,QAAA,IAAI,EAAE,aAAa,CAAb,IAAA,IAAuB,aAAa,CAAb,GAAA,IAAqB,CAAC,aAAa,CAFzB,KAAA;AAGvC,QAAA,MAAM,EAAE,aAAa,CAAb,MAAA,IAAyB,aAAa,CAAb,KAAA,IAAuB,CAAC,aAAa,CAH/B,GAAA;AAIvC,QAAA,KAAK,EAAE,aAAa,CAAb,KAAA,IAAwB,aAAa,CAAb,MAAA,IAAwB,CAAC,aAAa,CAAC;AAJ/B,OAAzC;AAOA,MAAA,KAAK,CAAL,cAAA,GAAuB,CAAC,EAAE,aAAa,CAAb,IAAA,IAAsB,aAAa,CAA7D,KAAwB,CAAxB;;AAEA,UAAI,KAAK,CAAT,UAAA,EAAsB;AACpB,QAAA,KAAK,CAAL,QAAA,GAAkB,CAAC,WAAW,CAAX,IAAA,GAAA,CAAA,GAAuB,CAAxB,CAAA,KAA+B,WAAW,CAAX,GAAA,GAAA,CAAA,GAAsB,CAAvE,CAAkB,CAAlB;AADF,OAAA,MAEO;AACL,YAAM,qBAAqB,GAAG,KAAK,CAAL,cAAA,GAAuB,WAAW,CAAlC,GAAA,GAAyC,WAAW,CAAlF,IAAA;AACA,QAAA,KAAK,CAAL,QAAA,GAAiB,qBAAqB,GAAG,CAAH,CAAA,GAAtC,CAAA;AACD;;AAED,OAAA,GAAA,WAAA,CAAA,OAAA,EAAO,GAAG,CAAV,KAAA,EAAA,WAAA;AAEA,UAAI,CAAA,SAAA,IAAc,CAAC,SAAS,CAA5B,MAAA,EAAqC;AAErC,UAAM,eAAe,GAAG,IAAI,iBAAA,CAAJ,OAAA,CAAiB,GAAG,CAA5C,WAAwB,CAAxB;AAEA,MAAA,eAAe,CAAf,QAAA,CAAyB,GAAG,CAAH,WAAA,CAAzB,YAAA;AACA,MAAA,eAAe,CAAf,aAAA,CAAA,SAAA;AAEA,MAAA,KAAK,CAAL,eAAA,GAAA,eAAA;AACA,MAAA,eAAe,CAAf,QAAA,CAAA,aAAA,CAAA,EAAA,EAAA,GAAA,CAAA;AAzCsE,KAAA;AA4CxE,IAAA,GA5CwE,EAAA,SAAA,GAAA,CAAA,GAAA,EA4C9D;AAAA,UACA,KADA,GACwB,GADxB,CAAA,KAAA;AAAA,UACO,IADP,GACwB,GADxB,CAAA,IAAA;AAAA,UACa,MADb,GACwB,GADxB,CAAA,MAAA;AAER,UAAM,aAAa,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAtB,MAAsB,CAAtB;AACA,UAAM,YAAY,GAAG,KAAK,CAAL,UAAA,GAAA,aAAA,GAArB,QAAA;AAEA,MAAA,YAAY,CAAA,KAAA,EAAQ,KAAK,CAAb,cAAA,EAAA,MAAA,EAAZ,IAAY,CAAZ;;AAEA,UAAI,CAAC,KAAK,CAAV,eAAA,EAA4B;AAC1B,eAAA,IAAA;AACD;;AAED,UAAM,aAAa,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAtB,IAAsB,CAAtB;AAEA,OAAA,GAAA,SAAA,CAAA,QAAA,EAAS,KAAK,CAAd,WAAA,EAAA,aAAA,EAA2C;AACzC,QAAA,CAAC,EAAE,MAAM,CAAN,CAAA,GAAW,aAAa,CADc,CAAA;AAEzC,QAAA,CAAC,EAAE,MAAM,CAAN,CAAA,GAAW,aAAa,CAAC;AAFa,OAA3C;AAKA,UAAM,MAAM,GAAG,KAAK,CAAL,eAAA,CAAA,MAAA,CAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAA,EAAA,EAAA;AAEb,QAAA,IAAI,EAFS,aAAA;AAGb,QAAA,KAAK,EAAE,KAAK,CAHC,WAAA;AAIb,QAAA,UAAU,EAJG,MAAA;AAKb,QAAA,UAAU,EALG,MAAA;AAMb,QAAA,QAAQ,EAAE;AANG,OAAA,CAAA,CAAf;AAlBQ,UA2BA,KA3BA,GA2BU,MA3BV,CAAA,KAAA;;AA6BR,UAAI,MAAM,CAAV,OAAA,EAAoB;AAClB,YAAM,eAAe,GAAG,IAAI,CAAJ,GAAA,CAAS,KAAK,CAAd,CAAA,IAAoB,IAAI,CAAJ,GAAA,CAAS,KAAK,CADxC,CAC0B,CAA5C,CADkB,CAAA;;AAIlB,QAAA,YAAY,CAAA,KAAA,EAAA,eAAA,EAAyB,MAAM,CAA/B,MAAA,EAAwC,MAAM,CAA1D,IAAY,CAAZ;AACA,SAAA,GAAA,WAAA,CAAA,OAAA,EAAA,MAAA,EAAe,MAAM,CAArB,MAAA;AACD;;AAED,aAAO,MAAM,CAAb,UAAA;AAjFsE,KAAA;AAoFxE,IAAA,QAAQ,EAAE;AACR,MAAA,KAAK,EADG,UAAA;AAER,MAAA,UAAU,EAFF,KAAA;AAGR,MAAA,SAAS,EAHD,EAAA;AAIR,MAAA,OAAO,EAAE;AAJD;AApF8D,GAA1E;;;AA4FA,WAAA,aAAA,CAAA,IAAA,EAAA,cAAA,EAAA,MAAA,EAA6G;AAAA,QAAnF,WAAmF,GAAA,IAAA,CAAnF,WAAmF;AAAA,QAAtE,QAAsE,GAAA,IAAA,CAAtE,QAAsE;;AAC3G,QAAA,cAAA,EAAoB;AAClB,MAAA,MAAM,CAAN,CAAA,GAAW,WAAW,CAAX,CAAA,GAAgB,CAAC,MAAM,CAAN,CAAA,GAAW,WAAW,CAAvB,CAAA,IAA3B,QAAA;AADF,KAAA,MAEO;AACL,MAAA,MAAM,CAAN,CAAA,GAAW,WAAW,CAAX,CAAA,GAAgB,CAAC,MAAM,CAAN,CAAA,GAAW,WAAW,CAAvB,CAAA,IAA3B,QAAA;AACD;AACF;;AAED,WAAA,QAAA,CAAA,KAAA,EAAA,cAAA,EAAA,MAAA,EAAA,IAAA,EAKE;AAAA,QAJE,SAIF,GAAA,KAAA,CAJE,SAIF;AAAA,QAJa,WAIb,GAAA,KAAA,CAJa,WAIb;AAAA,QAJ0B,KAI1B,GAAA,KAAA,CAJ0B,KAI1B;AAAA,QAJiC,QAIjC,GAAA,KAAA,CAJiC,QAIjC;;AACA,QAAA,cAAA,EAAoB;AAClB,UAAM,SAAS,GAAG,IAAI,CAAJ,KAAA,GAAlB,KAAA;AAEA,MAAA,MAAM,CAAN,CAAA,GAAW,WAAW,CAAX,CAAA,GAAgB,CAAC,SAAS,GAAG,SAAS,CAAtB,MAAA,IAA3B,QAAA;AAHF,KAAA,MAIO;AACL,UAAM,QAAQ,GAAG,IAAI,CAAJ,MAAA,GAAjB,KAAA;AAEA,MAAA,MAAM,CAAN,CAAA,GAAW,WAAW,CAAX,CAAA,GAAgB,CAAC,QAAQ,GAAG,SAAS,CAArB,KAAA,IAA3B,QAAA;AACD;AACF;;sBAEc,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,WAAA,EAAA,aAAA,C;;;;;;;;;;;AClKf,MAAM,IAAI,GAAK,SAAT,IAAS,GAAM,CAArB,CAAA;;AAEA,EAAA,IAAI,CAAJ,SAAA,GAAA,EAAA;sBAEe,I;;;;;;;;;;;;;;ACNf;;AAAA;;;;;;;;;ACEA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAGA;;AAAA;;AAoBA,WAAA,UAAA,CAAA,IAAA,EAAmG;AAAA,QAAjF,IAAiF,GAAA,IAAA,CAAjF,IAAiF;AAAA,QAA3E,WAA2E,GAAA,IAAA,CAA3E,WAA2E;AAAA,QAA9D,KAA8D,GAAA,IAAA,CAA9D,KAA8D;AAAA,QAAvD,WAAuD,GAAA,IAAA,CAAvD,WAAuD;AAAA,QAA1C,UAA0C,GAAA,IAAA,CAA1C,UAA0C;AAAA,QACzF,OADyF,GAC7E,KAD6E,CAAA,OAAA;AAAA,QAEzF,WAFyF,GAEzE,OAFyE,CAAA,WAAA;AAGjG,QAAM,MAAY,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EACnB;AACE,MAAA,IAAI,EADN,CAAA;AAEE,MAAA,GAAG,EAFL,CAAA;AAGE,MAAA,KAAK,EAHP,CAAA;AAIE,MAAA,MAAM,EAAE;AAJV,KADmB,EAOnB,OAAO,CAAP,MAAA,IAPF,EAAqB,CAArB;;AAUA,QAAI,IAAI,IAAR,WAAA,EAAyB;AACvB,UAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAR,WAAA,EAAA,WAAA,EAAtC,UAAsC,CAAtC;;AAEA,UAAA,WAAA,EAAiB;AACf,YAAM,SAAS,GAAG,WAAW,CAAX,KAAA,GAAoB,WAAW,CAA/B,IAAA,GAAuC,IAAI,CAA7D,KAAA;AACA,YAAM,UAAU,GAAG,WAAW,CAAX,MAAA,GAAqB,WAAW,CAAhC,GAAA,GAAuC,IAAI,CAA9D,MAAA;;AAEA,YAAI,SAAS,GAAb,CAAA,EAAmB;AACjB,UAAA,MAAM,CAAN,IAAA,IAAA,SAAA;AACA,UAAA,MAAM,CAAN,KAAA,IAAA,SAAA;AACD;;AACD,YAAI,UAAU,GAAd,CAAA,EAAoB;AAClB,UAAA,MAAM,CAAN,GAAA,IAAA,UAAA;AACA,UAAA,MAAM,CAAN,MAAA,IAAA,UAAA;AACD;AACF;;AAED,MAAA,MAAM,CAAN,IAAA,IAAe,WAAW,CAAX,IAAA,GAAmB,IAAI,CAAJ,KAAA,GAAa,WAAW,CAA1D,IAAA;AACA,MAAA,MAAM,CAAN,GAAA,IAAc,WAAW,CAAX,GAAA,GAAkB,IAAI,CAAJ,MAAA,GAAc,WAAW,CAAzD,GAAA;AAEA,MAAA,MAAM,CAAN,KAAA,IAAgB,WAAW,CAAX,KAAA,GAAoB,IAAI,CAAJ,KAAA,IAAc,IAAI,WAAW,CAAjE,KAAoC,CAApC;AACA,MAAA,MAAM,CAAN,MAAA,IAAiB,WAAW,CAAX,MAAA,GAAqB,IAAI,CAAJ,MAAA,IAAe,IAAI,WAAW,CAApE,MAAsC,CAAtC;AACD;;AAED,IAAA,KAAK,CAAL,MAAA,GAAA,MAAA;AACD;;AAED,WAAA,GAAA,CAAA,KAAA,EAA0E;AAAA,QAA1D,MAA0D,GAAA,KAAA,CAA1D,MAA0D;AAAA,QAAlD,WAAkD,GAAA,KAAA,CAAlD,WAAkD;AAAA,QAArC,KAAqC,GAAA,KAAA,CAArC,KAAqC;AAAA,QAChE,OADgE,GAC5C,KAD4C,CAAA,OAAA;AAAA,QACvD,MADuD,GAC5C,KAD4C,CAAA,MAAA;AAGxE,QAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAR,WAAA,EAAA,WAAA,EAAtC,MAAsC,CAAtC;AAEA,QAAI,CAAJ,WAAA,EAAkB;;AAElB,QAAM,IAAI,GAAG,SAAS,CAAT,UAAA,CAAb,WAAa,CAAb;;AAEA,IAAA,MAAM,CAAN,CAAA,GAAW,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,KAAA,GAAa,MAAM,CAA5B,KAAA,EAAoC,MAAM,CAAnD,CAAS,CAAT,EAAwD,IAAI,CAAJ,IAAA,GAAY,MAAM,CAArF,IAAW,CAAX;AACA,IAAA,MAAM,CAAN,CAAA,GAAW,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,MAAA,GAAc,MAAM,CAA7B,MAAA,EAAsC,MAAM,CAArD,CAAS,CAAT,EAA0D,IAAI,CAAJ,GAAA,GAAW,MAAM,CAAtF,GAAW,CAAX;AACD;;AAEM,WAAA,kBAAA,CAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAIL;AACA,QAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,KAAI,CAAJ,EAAoB;AAClB,aAAO,SAAS,CAAT,eAAA,CAAA,KAAA,EAAiC,WAAW,CAA5C,YAAA,EAA2D,WAAW,CAAtE,OAAA,EAAgF,CACrF,MAAM,CAD+E,CAAA,EAErF,MAAM,CAF+E,CAAA,EAAvF,WAAuF,CAAhF,CAAP;AADF,KAAA,MAMO;AACL,aAAO,SAAS,CAAT,eAAA,CAAA,KAAA,EAAiC,WAAW,CAA5C,YAAA,EAA2D,WAAW,CAA7E,OAAO,CAAP;AACD;AACF;;AAED,MAAM,aAAyB,GAAG;AAChC,IAAA,WAAW,EADqB,IAAA;AAEhC,IAAA,WAAW,EAFqB,IAAA;AAGhC,IAAA,MAAM,EAH0B,IAAA;AAIhC,IAAA,OAAO,EAJyB,KAAA;AAKhC,IAAA,OAAO,EAAE;AALuB,GAAlC;AAQA,MAAM,QAAwD,GAAG;AAC/D,IAAA,KAAK,EAD0D,UAAA;AAE/D,IAAA,GAAG,EAF4D,GAAA;AAG/D,IAAA,QAAQ,EAAR;AAH+D,GAAjE;;;sBAMe,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,QAAA,EAAA,UAAA,C;;;;;;;;;;AClGf;;AAAA;AACA;;AAAA;AAGA;;AAAA;AAGA;;AAAA,G7DnBA,C;;;;;;;;;;;A6DsCA,MAAM,OAAO,GAAG;AAAE,IAAA,GAAG,EAAE,CAAP,QAAA;AAAkB,IAAA,IAAI,EAAE,CAAxB,QAAA;AAAmC,IAAA,MAAM,EAAE,CAA3C,QAAA;AAAsD,IAAA,KAAK,EAAE,CAAC;AAA9D,GAAhB;AACA,MAAM,OAAO,GAAG;AAAE,IAAA,GAAG,EAAE,CAAP,QAAA;AAAkB,IAAA,IAAI,EAAE,CAAxB,QAAA;AAAmC,IAAA,MAAM,EAAE,CAA3C,QAAA;AAAsD,IAAA,KAAK,EAAE,CAAC;AAA9D,GAAhB;;AAEA,WAAA,UAAA,CAAA,IAAA,EAAsF;AAAA,QAApE,WAAoE,GAAA,IAAA,CAApE,WAAoE;AAAA,QAAvD,WAAuD,GAAA,IAAA,CAAvD,WAAuD;AAAA,QAA1C,KAA0C,GAAA,IAAA,CAA1C,KAA0C;AAAA,QAC5E,OAD4E,GAChE,KADgE,CAAA,OAAA;AAEpF,QAAA,MAAA;;AAEA,QAAA,OAAA,EAAa;AACX,UAAM,UAAU,GAAG,CAAA,GAAA,YAAA,CAAA,kBAAA,EAAmB,OAAO,CAA1B,MAAA,EAAA,WAAA,EAAgD,WAAW,CAAX,MAAA,CAAA,KAAA,CAAnE,IAAmB,CAAnB;AAEA,MAAA,MAAM,GAAG,SAAS,CAAT,QAAA,CAAT,UAAS,CAAT;AACD;;AAED,IAAA,MAAM,GAAG,MAAM,IAAI;AAAE,MAAA,CAAC,EAAH,CAAA;AAAQ,MAAA,CAAC,EAAE;AAAX,KAAnB;AAEA,IAAA,KAAK,CAAL,MAAA,GAAe;AACb,MAAA,GAAG,EAAE,MAAM,CAAN,CAAA,GAAW,WAAW,CADd,GAAA;AAEb,MAAA,IAAI,EAAE,MAAM,CAAN,CAAA,GAAW,WAAW,CAFf,IAAA;AAGb,MAAA,MAAM,EAAE,MAAM,CAAN,CAAA,GAAW,WAAW,CAHjB,MAAA;AAIb,MAAA,KAAK,EAAE,MAAM,CAAN,CAAA,GAAW,WAAW,CAAC;AAJjB,KAAf;AAMD;;AAED,WAAA,QAAA,CAAA,KAAA,EAAsF;AAAA,QAAtE,MAAsE,GAAA,KAAA,CAAtE,MAAsE;AAAA,QAA9D,KAA8D,GAAA,KAAA,CAA9D,KAA8D;AAAA,QAAvD,WAAuD,GAAA,KAAA,CAAvD,WAAuD;AAAA,QAA1C,KAA0C,GAAA,KAAA,CAA1C,KAA0C;AAAA,QAC5E,MAD4E,GACxD,KADwD,CAAA,MAAA;AAAA,QACpE,OADoE,GACxD,KADwD,CAAA,OAAA;;AAGpF,QAAI,CAAJ,KAAA,EAAY;AACV;AACD;;AAED,QAAM,IAAI,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAb,MAAa,CAAb;AACA,QAAM,KAAK,GAAG,CAAA,GAAA,YAAA,CAAA,kBAAA,EAAmB,OAAO,CAA1B,KAAA,EAAA,WAAA,EAAA,IAAA,KAAd,EAAA;AACA,QAAM,KAAK,GAAG,CAAA,GAAA,YAAA,CAAA,kBAAA,EAAmB,OAAO,CAA1B,KAAA,EAAA,WAAA,EAAA,IAAA,KAAd,EAAA;AAEA,IAAA,OAAO,CAAA,KAAA,EAAP,OAAO,CAAP;AACA,IAAA,OAAO,CAAA,KAAA,EAAP,OAAO,CAAP;;AAEA,QAAI,KAAK,CAAT,GAAA,EAAe;AACb,MAAA,MAAM,CAAN,CAAA,GAAW,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,GAAA,CAAS,KAAK,CAAL,GAAA,GAAY,MAAM,CAA3B,GAAA,EAAiC,IAAI,CAA9C,CAAS,CAAT,EAAmD,KAAK,CAAL,GAAA,GAAY,MAAM,CAAhF,GAAW,CAAX;AADF,KAAA,MAEO,IAAI,KAAK,CAAT,MAAA,EAAkB;AACvB,MAAA,MAAM,CAAN,CAAA,GAAW,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,GAAA,CAAS,KAAK,CAAL,MAAA,GAAe,MAAM,CAA9B,MAAA,EAAuC,IAAI,CAApD,CAAS,CAAT,EAAyD,KAAK,CAAL,MAAA,GAAe,MAAM,CAAzF,MAAW,CAAX;AACD;;AACD,QAAI,KAAK,CAAT,IAAA,EAAgB;AACd,MAAA,MAAM,CAAN,CAAA,GAAW,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,GAAA,CAAS,KAAK,CAAL,IAAA,GAAa,MAAM,CAA5B,IAAA,EAAmC,IAAI,CAAhD,CAAS,CAAT,EAAqD,KAAK,CAAL,IAAA,GAAa,MAAM,CAAnF,IAAW,CAAX;AADF,KAAA,MAEO,IAAI,KAAK,CAAT,KAAA,EAAiB;AACtB,MAAA,MAAM,CAAN,CAAA,GAAW,IAAI,CAAJ,GAAA,CAAS,IAAI,CAAJ,GAAA,CAAS,KAAK,CAAL,KAAA,GAAc,MAAM,CAA7B,KAAA,EAAqC,IAAI,CAAlD,CAAS,CAAT,EAAuD,KAAK,CAAL,KAAA,GAAc,MAAM,CAAtF,KAAW,CAAX;AACD;AACF;;AAED,WAAA,OAAA,CAAA,IAAA,EAAA,QAAA,EAA8C;AAAA,QAAA,IAAA,GACzB,CAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EADyB,OACzB,CADyB;;AAC5C,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAuD;AAAlD,UAAM,IAAI,GAAA,IAAA,CAAV,EAAU,CAAV;;AACH,UAAI,EAAE,IAAI,IAAV,IAAI,CAAJ,EAAqB;AACnB,QAAA,IAAI,CAAJ,IAAI,CAAJ,GAAa,QAAQ,CAArB,IAAqB,CAArB;AACD;AACF;;AAED,WAAA,IAAA;AACD;;AAED,MAAM,aAA8B,GAAG;AACrC,IAAA,KAAK,EADgC,IAAA;AAErC,IAAA,KAAK,EAFgC,IAAA;AAGrC,IAAA,MAAM,EAH+B,IAAA;AAIrC,IAAA,OAAO,EAJ8B,KAAA;AAKrC,IAAA,OAAO,EAAE;AAL4B,GAAvC;AAQA,MAAM,aAAa,GAAG;AACpB,IAAA,OAAO,EADa,OAAA;AAEpB,IAAA,OAAO,EAFa,OAAA;AAGpB,IAAA,KAAK,EAHe,UAAA;AAIpB,IAAA,GAAG,EAJiB,QAAA;AAKpB,IAAA,QAAQ,EAAR;AALoB,GAAtB;;;sBAQe,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,aAAA,EAAA,eAAA,C;;;;;;;;;;ACjHf;;AAAA;AAEA;;AAAA;AAEA;;AAAA;;AAEA,MAAM,aAAQ,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EACf;AACE,QAAA,WAAA,GAAmB;AACjB,aAAO;AAAE,QAAA,GAAG,EAAL,CAAA;AAAU,QAAA,IAAI,EAAd,CAAA;AAAmB,QAAA,MAAM,EAAzB,CAAA;AAA8B,QAAA,KAAK,EAAE;AAArC,OAAP;AAFJ,KAAA;;AAIE,QAAA,WAAA,CAAA,CAAA,EAAoB,CAAE;;AAJxB,GADe,EAOf,YAAA,CAAA,QAAA,CAPF,QAAiB,CAAjB;;AAUA,MAAM,YAAY,GAAG;AACnB,IAAA,KAAK,EAAE,YAAA,CAAA,QAAA,CADY,KAAA;AAEnB,IAAA,GAAG,EAAE,YAAA,CAAA,QAAA,CAFc,GAAA;AAGnB,IAAA,QAAQ,EAAR;AAHmB,GAArB;;;sBAMe,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,C;;;;;;;;;;ACrBf;;AAAA;AACA;;AAAA;AAGA;;AAAA;AAGA;;AAAA;AAEA;;AAAA;AAEA,MAAM,KAAK,GAAG;AAAE,IAAA,KAAK,EAAE,CAAT,QAAA;AAAoB,IAAA,MAAM,EAAE,CAAC;AAA7B,GAAd;AACA,MAAM,KAAK,GAAG;AAAE,IAAA,KAAK,EAAE,CAAT,QAAA;AAAoB,IAAA,MAAM,EAAE,CAAC;AAA7B,GAAd;;AASA,WAAA,UAAA,CAAA,GAAA,EAAsD;AACpD,WAAO,UAAA,CAAA,aAAA,CAAA,KAAA,CAAP,GAAO,CAAP;AACD;;AAWD,WAAA,QAAA,CAAA,GAAA,EAAmD;AAAA,QACzC,WADyC,GACL,GADK,CAAA,WAAA;AAAA,QAC5B,KAD4B,GACL,GADK,CAAA,KAAA;AAAA,QACrB,IADqB,GACL,GADK,CAAA,IAAA;AAAA,QACf,KADe,GACL,GADK,CAAA,KAAA;AAAA,QAEzC,OAFyC,GAE7B,KAF6B,CAAA,OAAA;;AAIjD,QAAI,CAAJ,KAAA,EAAY;AACV;AACD;;AAED,QAAM,OAAO,GACX,SAAS,CAAT,UAAA,CAAqB,CAAA,GAAA,YAAA,CAAA,kBAAA,EAAmB,OAAO,CAA1B,GAAA,EAAA,WAAA,EAAoD,GAAG,CAA5E,MAAqB,CAArB,KADF,KAAA;AAEA,QAAM,OAAO,GACX,SAAS,CAAT,UAAA,CAAqB,CAAA,GAAA,YAAA,CAAA,kBAAA,EAAmB,OAAO,CAA1B,GAAA,EAAA,WAAA,EAAoD,GAAG,CAA5E,MAAqB,CAArB,KADF,KAAA;AAGA,IAAA,KAAK,CAAL,OAAA,GAAgB;AACd,MAAA,OAAO,EAAE,OAAO,CADF,OAAA;AAEd,MAAA,KAAK,EAAE,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,UAAA,CAAA,aAAA,CAFJ,OAEP,CAFO;AAGd,MAAA,KAAK,EAAE,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAW,UAAA,CAAA,aAAA,CAAX,OAAA;AAHO,KAAhB;;AAMA,QAAI,KAAK,CAAT,GAAA,EAAe;AACb,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,GAAA,GAA0B,IAAI,CAAJ,MAAA,GAAc,OAAO,CAA/C,MAAA;AACA,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,GAAA,GAA0B,IAAI,CAAJ,MAAA,GAAc,OAAO,CAA/C,MAAA;AAFF,KAAA,MAGO,IAAI,KAAK,CAAT,MAAA,EAAkB;AACvB,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,MAAA,GAA6B,IAAI,CAAJ,GAAA,GAAW,OAAO,CAA/C,MAAA;AACA,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,MAAA,GAA6B,IAAI,CAAJ,GAAA,GAAW,OAAO,CAA/C,MAAA;AACD;;AACD,QAAI,KAAK,CAAT,IAAA,EAAgB;AACd,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,IAAA,GAA2B,IAAI,CAAJ,KAAA,GAAa,OAAO,CAA/C,KAAA;AACA,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,IAAA,GAA2B,IAAI,CAAJ,KAAA,GAAa,OAAO,CAA/C,KAAA;AAFF,KAAA,MAGO,IAAI,KAAK,CAAT,KAAA,EAAiB;AACtB,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,KAAA,GAA4B,IAAI,CAAJ,IAAA,GAAY,OAAO,CAA/C,KAAA;AACA,MAAA,KAAK,CAAL,OAAA,CAAA,KAAA,CAAA,KAAA,GAA4B,IAAI,CAAJ,IAAA,GAAY,OAAO,CAA/C,KAAA;AACD;;AAED,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,CAAA,GAAA;;AAEA,IAAA,KAAK,CAAL,OAAA,GAAA,OAAA;AACD;;AAED,MAAM,aAA6B,GAAG;AACpC,IAAA,GAAG,EADiC,IAAA;AAEpC,IAAA,GAAG,EAFiC,IAAA;AAGpC,IAAA,OAAO,EAH6B,KAAA;AAIpC,IAAA,OAAO,EAAE;AAJ2B,GAAtC;AAOA,MAAM,YAAY,GAAG;AACnB,IAAA,KAAK,EADc,UAAA;AAEnB,IAAA,GAAG,EAFgB,QAAA;AAGnB,IAAA,QAAQ,EAAR;AAHmB,GAArB;;;sBAMe,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,C;;;;;;;;;;;;;;;ACvFf;;AAAA;;;;;;;;ACGA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AAGA;;AAAA;;AAgDA,WAAA,UAAA,CAAA,GAAA,EAA6C;AAAA,QACnC,WADmC,GAC8B,GAD9B,CAAA,WAAA;AAAA,QACtB,YADsB,GAC8B,GAD9B,CAAA,YAAA;AAAA,QACR,OADQ,GAC8B,GAD9B,CAAA,OAAA;AAAA,QACC,IADD,GAC8B,GAD9B,CAAA,IAAA;AAAA,QACO,KADP,GAC8B,GAD9B,CAAA,KAAA;AAAA,QACc,WADd,GAC8B,GAD9B,CAAA,WAAA;AAAA,QAEnC,OAFmC,GAEvB,KAFuB,CAAA,OAAA;AAG3C,QAAM,MAAM,GAAG,OAAO,CAAP,gBAAA,GAA2B,SAAS,CAApC,GAAoC,CAApC,GAA4C;AAAE,MAAA,CAAC,EAAH,CAAA;AAAQ,MAAA,CAAC,EAAE;AAAX,KAA3D;AAEA,QAAA,UAAA;;AAEA,QAAI,OAAO,CAAP,MAAA,KAAJ,aAAA,EAAsC;AACpC,MAAA,UAAU,GAAG;AACX,QAAA,CAAC,EAAE,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,IAAA,CADQ,CAAA;AAEX,QAAA,CAAC,EAAE,WAAW,CAAX,MAAA,CAAA,KAAA,CAAA,IAAA,CAA8B;AAFtB,OAAb;AADF,KAAA,MAKO;AACL,UAAM,UAAU,GAAG,CAAA,GAAA,SAAA,CAAA,eAAA,EAAgB,OAAO,CAAvB,MAAA,EAAA,YAAA,EAAA,OAAA,EAA8D,CAAjF,WAAiF,CAA9D,CAAnB;AAEA,MAAA,UAAU,GAAG,CAAA,GAAA,SAAA,CAAA,QAAA,EAAA,UAAA,KAAwB;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX,OAArC;AACA,MAAA,UAAU,CAAV,CAAA,IAAgB,MAAM,CAAtB,CAAA;AACA,MAAA,UAAU,CAAV,CAAA,IAAgB,MAAM,CAAtB,CAAA;AACD;;AAlB0C,QAoBnC,cApBmC,GAoBhB,OApBgB,CAAA,cAAA;AAsB3C,IAAA,KAAK,CAAL,OAAA,GACE,IAAI,IAAJ,cAAA,IAA0B,cAAc,CAAxC,MAAA,GACI,cAAc,CAAd,GAAA,CAAmB,UAAA,aAAA,EAAA,KAAA,EAAA;AAAA,aAA2B;AAC9C,QAAA,KAAK,EADyC,KAAA;AAE9C,QAAA,aAAa,EAFiC,aAAA;AAG9C,QAAA,CAAC,EAAE,WAAW,CAAX,IAAA,GAAmB,IAAI,CAAJ,KAAA,GAAa,aAAa,CAA7C,CAAA,GAAkD,UAAU,CAHjB,CAAA;AAI9C,QAAA,CAAC,EAAE,WAAW,CAAX,GAAA,GAAkB,IAAI,CAAJ,MAAA,GAAc,aAAa,CAA7C,CAAA,GAAkD,UAAU,CAAC;AAJlB,OAA3B;AADvB,KACI,CADJ,GAOI,CACA;AACE,MAAA,KAAK,EADP,CAAA;AAEE,MAAA,aAAa,EAFf,IAAA;AAGE,MAAA,CAAC,EAAE,UAAU,CAHf,CAAA;AAIE,MAAA,CAAC,EAAE,UAAU,CAAC;AAJhB,KADA,CARN;AAgBD;;AAED,WAAA,QAAA,CAAA,GAAA,EAA2C;AAAA,QACjC,WADiC,GACF,GADE,CAAA,WAAA;AAAA,QACpB,MADoB,GACF,GADE,CAAA,MAAA;AAAA,QACZ,KADY,GACF,GADE,CAAA,KAAA;AAAA,QAEjC,OAFiC,GAEZ,KAFY,CAAA,OAAA;AAAA,QAExB,OAFwB,GAEZ,KAFY,CAAA,OAAA;AAIzC,QAAM,MAAM,GAAG,CAAA,GAAA,gBAAA,CAAA,OAAA,EAAY,WAAW,CAAvB,YAAA,EAAsC,WAAW,CAAjD,OAAA,EAA2D,WAAW,CAAX,QAAA,CAA1E,IAAe,CAAf;AACA,QAAM,IAAI,GAAG,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAb,MAAa,CAAb;AACA,QAAM,OAAO,GAAb,EAAA;;AAEA,QAAI,CAAC,OAAO,CAAZ,gBAAA,EAA+B;AAC7B,MAAA,IAAI,CAAJ,CAAA,IAAU,MAAM,CAAhB,CAAA;AACA,MAAA,IAAI,CAAJ,CAAA,IAAU,MAAM,CAAhB,CAAA;AACD;;AAED,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,OAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA8B;AAAA,UAAA,IAAA;;AAAA,MAAA,IAAA,GAAT,OAAS,CAAA,EAAA,CAAA;AAAA,UAAnB,OAAmB,GAAA,IAAA;AAC5B,UAAM,SAAS,GAAG,IAAI,CAAJ,CAAA,GAAS,OAAM,CAAjC,CAAA;AACA,UAAM,SAAS,GAAG,IAAI,CAAJ,CAAA,GAAS,OAAM,CAAjC,CAAA;;AAEA,WAAK,IAAI,MAAK,GAAT,CAAA,EAAe,GAAG,GAAG,OAAO,CAAP,OAAA,CAA1B,MAAA,EAAkD,MAAK,GAAvD,GAAA,EAA+D,MAA/D,EAAA,EAAwE;AACtE,YAAM,UAAU,GAAG,OAAO,CAAP,OAAA,CAAnB,MAAmB,CAAnB;AACA,YAAI,MAAoB,GAAA,KAAxB,CAAA;;AAEA,YAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,UAAI,CAAJ,EAAyB;AACvB,UAAA,MAAM,GAAG,UAAU,CAAA,SAAA,EAAA,SAAA,EAAuB,WAAW,CAAlC,MAAA,EAAA,OAAA,EAAnB,MAAmB,CAAnB;AADF,SAAA,MAEO;AACL,UAAA,MAAM,GAAN,UAAA;AACD;;AAED,YAAI,CAAJ,MAAA,EAAa;AACX;AACD;;AAED,QAAA,OAAO,CAAP,IAAA,CAAa;AACX,UAAA,CAAC,EAAE,CAAC,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,MAAM,CAAhB,CAAA,IAAsB,MAAM,CAA5B,CAAA,GAAD,SAAA,IAA+C,OAAM,CAD7C,CAAA;AAEX,UAAA,CAAC,EAAE,CAAC,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,MAAM,CAAhB,CAAA,IAAsB,MAAM,CAA5B,CAAA,GAAD,SAAA,IAA+C,OAAM,CAF7C,CAAA;AAIX,UAAA,KAAK,EAAE,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,MAAM,CAAhB,KAAA,IAA0B,MAAM,CAAhC,KAAA,GAAyC,OAAO,CAJ5C,KAAA;AAKX,UAAA,MAAM,EALK,UAAA;AAMX,UAAA,KAAK,EANM,MAAA;AAOX,UAAA,MAAM,EAAN;AAPW,SAAb;AASD;AACF;;AAED,QAAM,OAAO,GAAG;AACd,MAAA,MAAM,EADQ,IAAA;AAEd,MAAA,OAAO,EAFO,KAAA;AAGd,MAAA,QAAQ,EAHM,CAAA;AAId,MAAA,KAAK,EAJS,CAAA;AAKd,MAAA,KAAK,EAAE;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX;AALO,KAAhB;;AAQA,SAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAqB,OAArB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA8B;AAAzB,UAAM,OAAM,GAAI,OAAJ,CAAZ,GAAY,CAAZ;AACH,UAAM,KAAK,GAAG,OAAM,CAApB,KAAA;AACA,UAAM,EAAE,GAAG,OAAM,CAAN,CAAA,GAAW,IAAI,CAA1B,CAAA;AACA,UAAM,EAAE,GAAG,OAAM,CAAN,CAAA,GAAW,IAAI,CAA1B,CAAA;AACA,UAAM,QAAQ,GAAG,CAAA,GAAA,UAAA,CAAA,OAAA,EAAA,EAAA,EAAjB,EAAiB,CAAjB;AACA,UAAI,OAAO,GAAG,QAAQ,IALM,KAK5B,CAL4B,CAAA;;;AAS5B,UAAI,KAAK,KAAL,QAAA,IAAsB,OAAO,CAA7B,OAAA,IAAyC,OAAO,CAAP,KAAA,KAA7C,QAAA,EAAyE;AACvE,QAAA,OAAO,GAAP,KAAA;AACD;;AAED,UACE,CAAC,OAAO,CAAR,MAAA,KACC,OAAO,GAAA;AAEN,MAAA,OAAO,CAAP,OAAA,IAAmB,KAAK,KAAxB,QAAA,GAAA;AAEE,MAAA,QAAQ,GAAR,KAAA,GAAmB,OAAO,CAAP,QAAA,GAAmB,OAAO,CAF/C,KAAA,GAAA;AAIG,MAAA,KAAK,KAAL,QAAA,IAAsB,OAAO,CAAP,KAAA,KAAvB,QAAC,IAAD;AAEE,MAAA,QAAQ,GAAG,OAAO,CARhB,QAAA,GAAA;AAUN,OAAC,OAAO,CAAR,OAAA,IAAoB,QAAQ,GAAG,OAAO,CAZ1C,QACE,CADF,EAaE;AACA,QAAA,OAAO,CAAP,MAAA,GAAA,OAAA;AACA,QAAA,OAAO,CAAP,QAAA,GAAA,QAAA;AACA,QAAA,OAAO,CAAP,KAAA,GAAA,KAAA;AACA,QAAA,OAAO,CAAP,OAAA,GAAA,OAAA;AACA,QAAA,OAAO,CAAP,KAAA,CAAA,CAAA,GAAA,EAAA;AACA,QAAA,OAAO,CAAP,KAAA,CAAA,CAAA,GAAA,EAAA;AACD;AACF;;AAED,QAAI,OAAO,CAAX,OAAA,EAAqB;AACnB,MAAA,MAAM,CAAN,CAAA,GAAW,OAAO,CAAP,MAAA,CAAX,CAAA;AACA,MAAA,MAAM,CAAN,CAAA,GAAW,OAAO,CAAP,MAAA,CAAX,CAAA;AACD;;AAED,IAAA,KAAK,CAAL,OAAA,GAAA,OAAA;AACA,WAAA,OAAA;AACD;;AAED,WAAA,SAAA,CAAA,GAAA,EAA0D;AAAA,QAChD,OADgD,GACpC,GAAG,CADiC,WACpC,CADoC,OAAA;AAExD,QAAM,aAAa,GAAG,CAAA,GAAA,SAAA,CAAA,QAAA,EAAS,CAAA,GAAA,SAAA,CAAA,eAAA,EAAgB,GAAG,CAAH,KAAA,CAAA,OAAA,CAAhB,MAAA,EAAA,IAAA,EAAA,IAAA,EAA6D,CAA5F,OAA4F,CAA7D,CAAT,CAAtB;AACA,QAAM,MAAM,GAAG,aAAa,IAAI,CAAA,GAAA,gBAAA,CAAA,OAAA,EAAY,GAAG,CAAf,YAAA,EAAA,OAAA,EAAuC,GAAG,CAAH,WAAA,CAAA,QAAA,CAAvE,IAAgC,CAAhC;AAEA,WAAA,MAAA;AACD;;AAED,MAAM,aAAqB,GAAG;AAC5B,IAAA,KAAK,EADuB,QAAA;AAE5B,IAAA,OAAO,EAFqB,IAAA;AAG5B,IAAA,MAAM,EAHsB,IAAA;AAI5B,IAAA,gBAAgB,EAJY,IAAA;AAK5B,IAAA,MAAM,EALsB,IAAA;AAM5B,IAAA,cAAc,EANc,IAAA;AAO5B,IAAA,OAAO,EAPqB,KAAA;AAQ5B,IAAA,OAAO,EAAE;AARmB,GAA9B;AAUA,MAAM,IAAI,GAAG;AACX,IAAA,KAAK,EADM,UAAA;AAEX,IAAA,GAAG,EAFQ,QAAA;AAGX,IAAA,QAAQ,EAAR;AAHW,GAAb;;;sBAMe,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,IAAA,EAAA,MAAA,C;;;;;;;;;;ACvNf;;AAAA;AACA;;AAAA;AAGA;;AAAA;AAGA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,WAAA,UAAA,CAAA,GAAA,EAA6C;AAAA,QACnC,KADmC,GAClB,GADkB,CAAA,KAAA;AAAA,QAC5B,KAD4B,GAClB,GADkB,CAAA,KAAA;AAAA,QAEnC,OAFmC,GAEvB,KAFuB,CAAA,OAAA;;AAI3C,QAAI,CAAJ,KAAA,EAAY;AACV,aAAA,IAAA;AACD;;AAED,IAAA,GAAG,CAAH,KAAA,GAAY;AACV,MAAA,OAAO,EAAE;AACP,QAAA,OAAO,EADA,IAAA;AAEP,QAAA,cAAc,EAAE,CACd;AACE,UAAA,CAAC,EAAE,KAAK,CAAL,IAAA,GAAA,CAAA,GADL,CAAA;AAEE,UAAA,CAAC,EAAE,KAAK,CAAL,GAAA,GAAA,CAAA,GAAgB;AAFrB,SADc,CAFT;AAQP,QAAA,MAAM,EAAE,OAAO,CAAP,MAAA,IARD,MAAA;AASP,QAAA,MAAM,EAAE;AAAE,UAAA,CAAC,EAAH,CAAA;AAAQ,UAAA,CAAC,EAAE;AAAX,SATD;AAUP,QAAA,KAAK,EAAE,OAAO,CAAC;AAVR;AADC,KAAZ;AAeA,IAAA,KAAK,CAAL,YAAA,GAAqB,KAAK,CAAL,YAAA,IAAsB,CACzC,CAAA,OAAA,EADyC,QACzC,CADyC,EAEzC,CAAA,GAAA,EAFF,GAEE,CAFyC,CAA3C;;AAKA,IAAA,YAAA,CAAA,IAAA,CAAA,KAAA,CAAA,GAAA;;AACA,IAAA,KAAK,CAAL,OAAA,GAAgB,GAAG,CAAH,KAAA,CAAhB,OAAA;AAEA,IAAA,GAAG,CAAH,KAAA,GAAA,KAAA;AACD;;AAED,WAAA,QAAA,CAAA,GAAA,EAAmB;AAAA,QACT,WADS,GACsB,GADtB,CAAA,WAAA;AAAA,QACI,KADJ,GACsB,GADtB,CAAA,KAAA;AAAA,QACW,MADX,GACsB,GADtB,CAAA,MAAA;AAAA,QAET,OAFS,GAEY,KAFZ,CAAA,OAAA;AAAA,QAEA,OAFA,GAEY,KAFZ,CAAA,OAAA;AAGjB,QAAM,QAAQ,GAAG;AACf,MAAA,CAAC,EAAE,MAAM,CAAN,CAAA,GAAW,OAAO,CAAP,CAAO,CAAP,CADC,CAAA;AAEf,MAAA,CAAC,EAAE,MAAM,CAAN,CAAA,GAAW,OAAO,CAAP,CAAO,CAAP,CAAW;AAFV,KAAjB;AAKA,IAAA,KAAK,CAAL,OAAA,GAAgB,CAAA,GAAA,WAAA,CAAA,OAAA,EAAA,EAAA,EAAhB,OAAgB,CAAhB;AACA,IAAA,KAAK,CAAL,OAAA,CAAA,OAAA,GAAA,EAAA;;AAEA,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,CAAyB,OAAO,CAAP,OAAA,IAAzB,EAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAgD;AAAA,UAAA,IAAA;;AAAA,MAAA,IAAA,GAAA,CAAvB,OAAO,CAAP,OAAA,IAAmB,EAAI,EAAA,EAAA,CAAA;AAAA,UAArC,UAAqC,GAAA,IAAA;AAC9C,UAAI,MAAM,GAAA,KAAV,CAAA;;AAEA,UAAI,OAAA,CAAA,OAAA,CAAA,IAAA,CAAJ,UAAI,CAAJ,EAAyB;AACvB,QAAA,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAT,CAAA,EAAa,QAAQ,CAArB,CAAA,EAAnB,WAAmB,CAAnB;AADF,OAAA,MAEO;AACL,QAAA,MAAM,GAAN,UAAA;AACD;;AAED,UAAI,CAAJ,MAAA,EAAa;AACX;AACD;;AAED,WAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA+B,KAAK,CAApC,YAA+B,CAA/B,MAAA,EAAA,GAAA,EAAA,EAAmD;AAAA,YAAA,KAAA;;AAAA,QAAA,KAAA,GAApB,KAAK,CAAC,YAAN,CAAoB,GAApB,CAAoB;;AAAA,YAAA,KAAA,GAAA,KAAA;AAAA,YAAA,KAAA,GAAA,mBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,YAAvC,MAAuC,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,YAA/B,MAA+B,GAAA,KAAA,CAAA,CAAA,CAAA;;AACjD,YAAI,MAAM,IAAN,MAAA,IAAoB,MAAM,IAA9B,MAAA,EAA0C;AACxC,UAAA,MAAM,CAAN,CAAA,GAAW,MAAM,CAAjB,MAAiB,CAAjB;AACA,UAAA,MAAM,CAAN,CAAA,GAAW,MAAM,CAAjB,MAAiB,CAAjB;AAEA;AACD;AACF;;AAED,MAAA,KAAK,CAAL,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,MAAA;AACD;;AAED,QAAM,WAAW,GAAG,YAAA,CAAA,IAAA,CAAA,GAAA,CAApB,GAAoB,CAApB;;AAEA,IAAA,KAAK,CAAL,OAAA,GAAA,OAAA;AAEA,WAAA,WAAA;AACD;;AAED,MAAM,aAAyB,GAAG;AAChC,IAAA,KAAK,EAD2B,QAAA;AAEhC,IAAA,OAAO,EAFyB,IAAA;AAGhC,IAAA,MAAM,EAH0B,IAAA;AAIhC,IAAA,OAAO,EAJyB,KAAA;AAKhC,IAAA,OAAO,EAAE;AALuB,GAAlC;AAQA,MAAM,QAAQ,GAAG;AACf,IAAA,KAAK,EADU,UAAA;AAEf,IAAA,GAAG,EAFY,QAAA;AAGf,IAAA,QAAQ,EAAR;AAHe,GAAjB;;;sBAMe,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,QAAA,EAAA,UAAA,C;;;;;;;;;;AC5Ef;;AAAA;AACA;;AAAA;AAGA;;AAAA;AAGA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,WAAA,UAAA,CAAA,GAAA,EAA6C;AAAA,QACnC,KADmC,GACzB,GADyB,CAAA,KAAA;;AAG3C,QAAI,CAAJ,KAAA,EAAY;AACV,aAAA,IAAA;AACD;;AAED,IAAA,GAAG,CAAH,KAAA,CAAA,YAAA,GAAyB,GAAG,CAAH,KAAA,CAAA,YAAA,IAA0B,CACjD,CAAC,KAAK,CAAL,IAAA,GAAA,MAAA,GAAD,OAAA,EAAgC,KAAK,CAAL,GAAA,GAAA,KAAA,GADlC,QACE,CADiD,CAAnD;AAIA,WAAO,SAAA,CAAA,QAAA,CAAA,KAAA,CAAP,GAAO,CAAP;AACD;;AAED,MAAM,SAAuF,GAAG;AAC9F,IAAA,KAAK,EADyF,UAAA;AAE9F,IAAA,GAAG,EAAE,SAAA,CAAA,QAAA,CAFyF,GAAA;AAG9F,IAAA,QAAQ,EAAE,CAAA,GAAA,WAAA,CAAA,OAAA,EAAO,CAAA,GAAA,UAAA,CAAA,OAAA,EAAM,SAAA,CAAA,QAAA,CAAb,QAAO,CAAP,EAAiC;AACzC,MAAA,OAAO,EADkC,IAAA;AAEzC,MAAA,KAAK,EAFoC,IAAA;AAGzC,MAAA,MAAM,EAAE;AAAE,QAAA,CAAC,EAAH,CAAA;AAAQ,QAAA,CAAC,EAAE;AAAX;AAHiC,KAAjC;AAHoF,GAAhG;;;sBAUe,CAAA,GAAA,SAAA,CAAA,YAAA,EAAA,SAAA,EAAA,WAAA,C;;;;;;;;;;;;;;;AChEf;;AAAA;;;;;;;;;;;;;AAAA;;AAAA;;;;;;;;ACCA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;;sBAEe;AACb,IAAA,WAAW,EAAX,gBAAA,CADa,OAAA;AAEb,IAAA,aAAa,EAAb,UAAA,CAFa,OAAA;AAGb,IAAA,QAAQ,EAAR,YAAA,CAHa,OAAA;AAIb,IAAA,YAAY,EAAZ,SAAA,CAJa,OAAA;AAKb,IAAA,YAAY,EAAZ,SAAA,CALa,OAAA;AAMb,IAAA,SAAS,EAAT,UAAA,CANa,OAAA;AAOb,IAAA,IAAI,EAAJ,YAAA,CAPa,OAAA;AAQb,IAAA,QAAQ,EAAR,SAAA,CARa,OAAA;AAUb,IAAA,MAAM,EAAN,WAAA,CAVa,OAAA;AAWb,IAAA,KAAK,EAAL,UAAA,CAXa,OAAA;AAYb,IAAA,SAAS,EAAT,cAAA,CAZa,OAAA;AAab,IAAA,UAAU,EAAV,eAAA,CAAA;AAba,G;;;;;;;;;ACbf;;AAAA;AAEA;;AAAA;AACA;;AAAA;AAQA,MAAM,cAAiB,GAAG;AACxB,IAAA,EAAE,EADsB,WAAA;AAExB,IAAA,OAFwB,EAAA,SAAA,OAAA,CAAA,KAAA,EAER;AAAA,UACU,QADV,GACuB,KADvB,CAAA,cAAA;AAGd,MAAA,KAAK,CAAL,SAAA,CAAgB,SAAA,CAAhB,OAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,WAAA,CAAhB,OAAA;AAEA,MAAA,QAAQ,CAAR,SAAA,GAAqB,QAAA,CANP,OAMd,CANc,CAAA;;AASd,WAAK,IAAL,IAAA,IAAmB,QAAA,CAAnB,OAAA,EAAwB;AAAA,YAAA,IAAA,GACU,QAAA,CAAA,OAAA,CADV,IACU,CADV;AAAA,YACd,SADc,GAAA,IAAA,CAAA,SAAA;AAAA,YACH,QADG,GAAA,IAAA,CAAA,QAAA;AAGpB,QAAA,SAAD,CAAA,QAAC,GAAD,QAAC;AACA,QAAA,KAAK,CAAL,QAAA,CAAD,SAAC,CAAD,IAAC,IAAD,SAAC;AACH;AACF;AAjBuB,GAA1B;sBAoBe,c;;;;;;;;;;;;;;;;;;;;;;;;;AChCf;;AAAA;AAGA;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEqB,YAAA,GAAA,aAAA,UAAA,UAAA,EAAA;;;;;;;AAenB,aAAA,YAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAOE;AAAA,UAAA,KAAA;;AAAA,MAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA;;AACA,MAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAA,WAAA,CAAA;;AADA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;AAAA,MAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;AAEA,MAAA,iBAAY,CAAZ,aAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,KAAA;;AAEA,UAAI,KAAK,KAAT,OAAA,EAAuB;AACrB,QAAA,iBAAY,CAAZ,aAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAA,OAAA;AACD;;AAED,MAAA,KAAA,CAAA,SAAA,GAAA,SAAA;AACA,MAAA,KAAA,CAAA,aAAA,GAAA,KAAA;AACA,MAAA,KAAA,CAAA,IAAA,GAAA,IAAA;AACA,MAAA,KAAA,CAAA,SAAA,GAAiB,iBAAY,CAAZ,YAAA,CAAjB,OAAiB,CAAjB;AACA,MAAA,KAAA,CAAA,WAAA,GAAmB,iBAAY,CAAZ,cAAA,CAAnB,OAAmB,CAAnB;AACA,MAAA,KAAA,CAAA,MAAA,GAAA,WAAA;AACA,MAAA,KAAA,CAAA,aAAA,GAAA,IAAA;;AAEA,UAAI,IAAI,KAAR,KAAA,EAAoB;AAClB,YAAM,YAAY,GAAG,WAAW,CAAX,eAAA,CAArB,OAAqB,CAArB;AACA,QAAA,KAAA,CAAA,EAAA,GAAU,KAAA,CAAA,SAAA,GAAiB,WAAW,CAAX,QAAA,CAAA,YAAA,EAA3B,QAAA;AAEA,YAAM,QAAQ,GAAG,KAAA,CAAA,SAAA,GAAiB,WAAW,CAA7C,OAAA;AAEA,QAAA,KAAA,CAAA,MAAA,GAAc,CAAC,EACb,WAAW,CAAX,OAAA,IACA,WAAW,CAAX,OAAA,CAAA,IAAA,KADA,WAAA,IAEA,WAAW,CAAX,OAAA,CAAA,MAAA,KAA+B,KAAA,CAF/B,MAAA,IAGA,QAAQ,GAJV,GAAe,CAAf;AANF,OAAA,MAYO,IAAI,IAAI,KAAR,WAAA,EAA0B;AAC/B,QAAA,KAAA,CAAA,EAAA,GAAW,OAAD,CAAA,SAAC,GAA4C,WAAW,CAAlE,OAAA;AACD;;AA9BD,aAAA,KAAA;AA+BD;;;;aAED,SAAA,eAAA,CAAA,IAAA,EAAoD;AAAA,YAA9B,OAA8B,GAAA,IAAA,CAAjC,CAAiC;AAAA,YAAlB,OAAkB,GAAA,IAAA,CAArB,CAAqB;AAClD,aAAA,KAAA,IAAA,OAAA;AACA,aAAA,KAAA,IAAA,OAAA;AACA,aAAA,OAAA,IAAA,OAAA;AACA,aAAA,OAAA,IAAA,OAAA;AAEA,eAAA,IAAA;AACD;;;aAED,SAAA,UAAA,CAAA,KAAA,EAA+C;AAAA,YAA9B,OAA8B,GAAA,KAAA,CAAjC,CAAiC;AAAA,YAAlB,OAAkB,GAAA,KAAA,CAArB,CAAqB;AAC7C,aAAA,KAAA,IAAA,OAAA;AACA,aAAA,KAAA,IAAA,OAAA;AACA,aAAA,OAAA,IAAA,OAAA;AACA,aAAA,OAAA,IAAA,OAAA;AAEA,eAAA,IAAA;AACD;;;;;;;aAKD,SAAA,cAAA,GAAkB;AAChB,aAAA,aAAA,CAAA,cAAA;AACD;;;;GA9EkB,CAA6C,cAAA,CAAA,SAA7C,C;;;;;;;;;;ACArB;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA;;AAAA;AAqEA,MAAM,aAA6B,GAAG;AACpC,IAAA,YAAY,EADwB,GAAA;AAEpC,IAAA,UAAU,EAF0B,IAAA;AAGpC,IAAA,SAAS,EAH2B,IAAA;AAIpC,IAAA,MAAM,EAAE;AAAE,MAAA,CAAC,EAAH,CAAA;AAAQ,MAAA,CAAC,EAAE;AAAX;AAJ4B,GAAtC;AAOA,MAAM,aAAqB,GAAG;AAC5B,IAAA,EAAE,EAD0B,qBAAA;AAE5B,IAAA,MAAM,EAAE,CAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAFoB,SAEpB,CAFoB;AAG5B,IAAA,OAAO,EAHqB,YAAA;AAI5B,IAAA,SAAS,EAAE;AACT,0BADS,mBAAA;AAET,qCAFS,WAAA;AAGT,2BAHS,gBAAA;AAIT,2BAAqB,SAAA,gBAAA,CAAA,GAAA,EAAA,KAAA,EAAgB;AACnC,QAAA,gBAAgB,CAAA,GAAA,EAAhB,KAAgB,CAAhB;AACA,QAAA,IAAI,CAAA,GAAA,EAAJ,KAAI,CAAJ;AANO,OAAA;AAQT,yBAAmB,SAAA,cAAA,CAAA,GAAA,EAAA,KAAA,EAAgB;AACjC,QAAA,SAAS,CAAT,GAAS,CAAT;AACA,QAAA,IAAI,CAAA,GAAA,EAAJ,KAAI,CAAJ;AACA,QAAA,UAAU,CAAA,GAAA,EAAV,KAAU,CAAV;AAXO,OAAA;AAaT,6BAAuB,SAAA,kBAAA,CAAA,GAAA,EAAA,KAAA,EAAgB;AACrC,QAAA,SAAS,CAAT,GAAS,CAAT;AACA,QAAA,IAAI,CAAA,GAAA,EAAJ,KAAI,CAAJ;AACD;AAhBQ,KAJiB;AAsB5B,IAAA,YAAY,EAAZ,iBAAA,CAtB4B,YAAA;AAuB5B,IAAA,IAAI,EAvBwB,IAAA;AAwB5B,IAAA,mBAAmB,EAxBS,mBAAA;AAyB5B,IAAA,QAAQ,EAzBoB,aAAA;AA0B5B,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EADC,IAAA;AAEL,MAAA,IAAI,EAFC,IAAA;AAGL,MAAA,EAAE,EAHG,IAAA;AAIL,MAAA,MAAM,EAJD,IAAA;AAKL,MAAA,GAAG,EALE,IAAA;AAML,MAAA,SAAS,EANJ,IAAA;AAOL,MAAA,IAAI,EAAE;AAPD;AA1BqB,GAA9B;;AAqCA,WAAA,IAAA,CAAA,GAAA,EAAA,KAAA,EAUE;AAAA,QACQ,WADR,GACsG,GADtG,CAAA,WAAA;AAAA,QACqB,OADrB,GACsG,GADtG,CAAA,OAAA;AAAA,QAC8B,KAD9B,GACsG,GADtG,CAAA,KAAA;AAAA,QACqC,WADrC,GACsG,GADtG,CAAA,WAAA;AAAA,QACkD,IADlD,GACsG,GADtG,CAAA,IAAA;AAAA,QAAA,YAAA,GACsG,GADtG,CAAA,OAAA;AAAA,QACwD,OADxD,GAAA,YAAA,KAAA,KAAA,CAAA,GACkE,mBAAmB,CAAA,GAAA,EADrF,KACqF,CADrF,GAAA,YAAA;AAGA,QAAM,YAAY,GAAG,IAAI,iBAAA,CAAJ,YAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,EAAiE,KAAK,CAA3F,GAAsF,EAAjE,CAArB;AAEA,IAAA,KAAK,CAAL,IAAA,CAAA,mBAAA,EAAgC;AAAE,MAAA,YAAY,EAAZ;AAAF,KAAhC;AAEA,QAAM,SAAS,GAAG;AAChB,MAAA,WAAW,EADK,WAAA;AAEhB,MAAA,OAAO,EAFS,OAAA;AAGhB,MAAA,KAAK,EAHW,KAAA;AAIhB,MAAA,WAAW,EAJK,WAAA;AAKhB,MAAA,OAAO,EALS,OAAA;AAMhB,MAAA,IAAI,EANY,IAAA;AAOhB,MAAA,YAAY,EAAZ;AAPgB,KAAlB;;AAUA,SAAK,IAAI,CAAC,GAAV,CAAA,EAAgB,CAAC,GAAG,OAAO,CAA3B,MAAA,EAAoC,CAApC,EAAA,EAAyC;AACvC,UAAM,MAAM,GAAG,OAAO,CAAtB,CAAsB,CAAtB;;AAEA,WAAK,IAAL,IAAA,IAAmB,MAAM,CAAN,KAAA,IAAnB,EAAA,EAAuC;AACrC;AAAE,QAAA,YAAD,CAAA,IAAA,CAAC,GAA6B,MAAM,CAAN,KAAA,CAA9B,IAA8B,CAA7B;AACH;;AAED,UAAM,MAAM,GAAG,CAAA,GAAA,gBAAA,CAAA,OAAA,EAAY,MAAM,CAAlB,SAAA,EAA8B,MAAM,CAAnD,IAAe,CAAf;;AAEA,MAAA,YAAY,CAAZ,eAAA,CAAA,MAAA;;AACA,MAAA,YAAY,CAAZ,SAAA,GAAyB,MAAM,CAA/B,SAAA;AACA,MAAA,YAAY,CAAZ,aAAA,GAA6B,MAAM,CAAnC,IAAA;AAEA,MAAA,MAAM,CAAN,SAAA,CAAA,IAAA,CAAA,YAAA;;AAEA,MAAA,YAAY,CAAZ,UAAA,CAAA,MAAA;;AAEA,UACE,YAAY,CAAZ,2BAAA,IACC,YAAY,CAAZ,kBAAA,IACC,CAAC,GAAD,CAAA,GAAQ,OAAO,CADhB,MAAA,IAEC,OAAO,CAAC,CAAC,GAAT,CAAO,CAAP,CAAA,IAAA,KAAwB,YAAY,CAJxC,aAAA,EAKE;AACA;AACD;AACF;;AAED,IAAA,KAAK,CAAL,IAAA,CAAA,qBAAA,EAAA,SAAA;;AAEA,QAAI,IAAI,KAAR,KAAA,EAAoB;;;AAGlB,UAAM,OAAO,GAAG,YAAY,CAAZ,MAAA,GACZ,IAAI,CACJ;AACE,QAAA,WAAW,EADb,WAAA;AAEE,QAAA,OAAO,EAFT,OAAA;AAGE,QAAA,KAAK,EAHP,KAAA;AAIE,QAAA,WAAW,EAJb,WAAA;AAKE,QAAA,IAAI,EAAE;AALR,OADI,EADQ,KACR,CADQ,GAAhB,YAAA;AAaA,MAAA,WAAW,CAAX,OAAA,GAAA,OAAA;AACA,MAAA,WAAW,CAAX,OAAA,GAAsB,OAAO,CAA7B,SAAA;AACD;;AAED,WAAA,YAAA;AACD;;AAED,WAAA,mBAAA,CAAA,IAAA,EAAA,KAAA,EAeE;AAAA,QAbE,WAaF,GAAA,IAAA,CAbE,WAaF;AAAA,QAZE,OAYF,GAAA,IAAA,CAZE,OAYF;AAAA,QAXE,KAWF,GAAA,IAAA,CAXE,KAWF;AAAA,QAVE,WAUF,GAAA,IAAA,CAVE,WAUF;AAAA,QATE,IASF,GAAA,IAAA,CATE,IASF;AACA,QAAM,YAAY,GAAG,WAAW,CAAX,eAAA,CAArB,OAAqB,CAArB;AACA,QAAM,WAAW,GAAG,WAAW,CAAX,QAAA,CAFpB,YAEoB,CAApB,CAFA,CAAA;;AAKA,QACE,IAAI,KAAJ,KAAA,KACC,WAAW,CAAX,eAAA,IAAA;AAEC,MAAE,WAAW,IAAI,WAAW,CAAX,UAAA,KAJrB,WAII,CAHF,CADF,EAKE;AACA,aAAA,EAAA;AACD;;AAED,QAAM,IAAI,GAAG,aAAQ,CAAR,OAAA,CAAb,WAAa,CAAb;;AACA,QAAM,SAAS,GAAG;AAChB,MAAA,WAAW,EADK,WAAA;AAEhB,MAAA,OAAO,EAFS,OAAA;AAGhB,MAAA,KAAK,EAHW,KAAA;AAIhB,MAAA,WAAW,EAJK,WAAA;AAKhB,MAAA,IAAI,EALY,IAAA;AAMhB,MAAA,IAAI,EANY,IAAA;AAOhB,MAAA,OAAO,EAPS,EAAA;AAQhB,MAAA,IAAI,EAAE;AARU,KAAlB;;AAWA,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAmB,IAAnB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyB;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAAN,IAAM,CAAA,EAAA,CAAA;AAAA,UAAd,IAAc,GAAA,KAAA;AACvB,MAAA,SAAS,CAAT,IAAA,GAAA,IAAA;AAEA,MAAA,KAAK,CAAL,IAAA,CAAA,+BAAA,EAAA,SAAA;AACD;;AAED,QAAI,IAAI,KAAR,MAAA,EAAqB;AACnB,MAAA,SAAS,CAAT,OAAA,GAAoB,SAAS,CAAT,OAAA,CAAA,MAAA,CAClB,UAAA,MAAA,EAAA;AAAA,YAAA,qBAAA;;AAAA,eAAY,MAAM,CAAN,SAAA,CAAA,OAAA,CAAA,YAAA,MAAA,CAAA,qBAAA,GAA0C,WAAW,CAAX,QAAA,CAA1C,YAA0C,CAA1C,KAAA,IAAA,GAAA,KAAA,CAAA,GAA0C,qBAAA,CAAA,IAAA,CAAtD,QAAY,CAAZ;AADF,OAAoB,CAApB;AAGD;;AAED,WAAO,SAAS,CAAhB,OAAA;AACD;;AAED,WAAA,mBAAA,CAAA,KAAA,EAA+C;AAAA,QAAf,WAAe,GAAA,KAAA,CAAf,WAAe;AAC7C,IAAA,WAAW,CAAX,OAAA,GAD6C,IAC7C,CAD6C,CAAA;;AAE7C,IAAA,WAAW,CAAX,OAAA,GAF6C,CAE7C,CAF6C,CAAA;AAG9C;;AAED,WAAA,WAAA,CAAA,KAAA,EAAwF;AAAA,QAAhE,IAAgE,GAAA,KAAA,CAAhE,IAAgE;AAAA,QAA1D,WAA0D,GAAA,KAAA,CAA1D,WAA0D;;AACtF,QAAI,CAAA,IAAA,IAAS,WAAW,CAAxB,IAAA,EAA+B;AAC7B;AACD;;AAED,IAAA,WAAW,CAAX,IAAA,GAAmB;AAAE,MAAA,QAAQ,EAAV,QAAA;AAAsB,MAAA,OAAO,EAAE;AAA/B,KAAnB;AACD;;AAED,WAAA,SAAA,CAAA,KAAA,EAAmD;AAAA,QAA7B,WAA6B,GAAA,KAAA,CAA7B,WAA6B;AAAA,QAAhB,YAAgB,GAAA,KAAA,CAAhB,YAAgB;AACjD,QAAM,IAAI,GAAG,WAAW,CAAX,QAAA,CAAA,YAAA,EAAb,IAAA;;AAEA,QAAI,IAAI,IAAI,IAAI,CAAhB,OAAA,EAA0B;AACxB,MAAA,YAAY,CAAC,IAAI,CAAjB,OAAY,CAAZ;AACA,MAAA,IAAI,CAAJ,OAAA,GAAA,IAAA;AACD;AACF;;AAED,WAAA,gBAAA,CAAA,GAAA,EAAA,KAAA,EAA+E;AAAA,QACrE,WADqE,GACb,GADa,CAAA,WAAA;AAAA,QACxD,OADwD,GACb,GADa,CAAA,OAAA;AAAA,QAC/C,KAD+C,GACb,GADa,CAAA,KAAA;AAAA,QACxC,WADwC,GACb,GADa,CAAA,WAAA;AAAA,QAC3B,SAD2B,GACb,GADa,CAAA,SAAA;;AAG7E,QAAI,CAAA,SAAA,KAAe,CAAC,WAAW,CAAZ,aAAA,IAA8B,WAAW,CAA5D,eAAI,CAAJ,EAA+E;AAC7E,UAAI,WAAW,CAAf,aAAA,EAA+B;AAC7B,QAAA,SAAS,CAAT,GAAS,CAAT;AACD;;AAED,MAAA,IAAI,CACF;AACE,QAAA,WAAW,EADb,WAAA;AAEE,QAAA,OAAO,EAFT,OAAA;AAGE,QAAA,KAAK,EAHP,KAAA;AAIE,QAAA,WAAW,EAJb,WAAA;AAKE,QAAA,IAAI,EAAE;AALR,OADE,EAAJ,KAAI,CAAJ;AAUD;AACF;;AAED,WAAA,gBAAA,CAAA,KAAA,EAAA,KAAA,EAGE;AAAA,QAFE,WAEF,GAAA,KAAA,CAFE,WAEF;AAAA,QAFe,OAEf,GAAA,KAAA,CAFe,OAEf;AAAA,QAFwB,KAExB,GAAA,KAAA,CAFwB,KAExB;AAAA,QAF+B,WAE/B,GAAA,KAAA,CAF+B,WAE/B;AAAA,QAF4C,YAE5C,GAAA,KAAA,CAF4C,YAE5C;AACA,QAAM,KAAK,GAAG,WAAW,CAAX,QAAA,CAAA,YAAA,EAAd,IAAA;;AACA,QAAM,IAAI,GAAG,aAAQ,CAAR,OAAA,CAAb,WAAa,CAAb;;AACA,QAAM,SAAS,GAAG;AAChB,MAAA,WAAW,EADK,WAAA;AAEhB,MAAA,OAAO,EAFS,OAAA;AAGhB,MAAA,KAAK,EAHW,KAAA;AAIhB,MAAA,WAAW,EAJK,WAAA;AAKhB,MAAA,IAAI,EALY,MAAA;AAMhB,MAAA,OAAO,EANS,EAAA;AAOhB,MAAA,IAAI,EAPY,IAAA;AAQhB,MAAA,IAAI,EAAE;AARU,KAAlB;;AAWA,SAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAmB,IAAnB,CAAA,MAAA,EAAA,GAAA,EAAA,EAAyB;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAAN,IAAM,CAAA,GAAA,CAAA;AAAA,UAAd,IAAc,GAAA,KAAA;AACvB,MAAA,SAAS,CAAT,IAAA,GAAA,IAAA;AAEA,MAAA,KAAK,CAAL,IAAA,CAAA,+BAAA,EAAA,SAAA;AACD;;AAED,QAAI,CAAC,SAAS,CAAT,OAAA,CAAL,MAAA,EAA+B;AAE/B,QAAI,WAAW,GAAf,QAAA;;AAEA,SAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAqB,SAAS,CAA9B,OAAqB,CAArB,MAAA,EAAA,GAAA,EAAA,EAAwC;AAAA,UAAA,KAAA;;AAAA,MAAA,KAAA,GAAnB,SAAS,CAAC,OAAV,CAAmB,GAAnB,CAAmB;AAAA,UAA7B,MAA6B,GAAA,KAAA;AACtC,UAAM,YAAY,GAAG,MAAM,CAAN,SAAA,CAAA,OAAA,CAArB,YAAA;;AAEA,UAAI,YAAY,GAAhB,WAAA,EAAgC;AAC9B,QAAA,WAAW,GAAX,YAAA;AACD;AACF;;AAED,IAAA,KAAK,CAAL,QAAA,GAAA,WAAA;AACA,IAAA,KAAK,CAAL,OAAA,GAAgB,UAAU,CAAC,YAAM;AAC/B,MAAA,IAAI,CACF;AACE,QAAA,WAAW,EADb,WAAA;AAEE,QAAA,WAAW,EAFb,WAAA;AAGE,QAAA,OAAO,EAHT,OAAA;AAIE,QAAA,KAAK,EAJP,KAAA;AAKE,QAAA,IAAI,EAAE;AALR,OADE,EAAJ,KAAI,CAAJ;AADwB,KAAA,EAA1B,WAA0B,CAA1B;AAYD;;AAED,WAAA,UAAA,CAAA,KAAA,EAAA,KAAA,EAGE;AAAA,QAFE,WAEF,GAAA,KAAA,CAFE,WAEF;AAAA,QAFe,OAEf,GAAA,KAAA,CAFe,OAEf;AAAA,QAFwB,KAExB,GAAA,KAAA,CAFwB,KAExB;AAAA,QAF+B,WAE/B,GAAA,KAAA,CAF+B,WAE/B;;AACA,QAAI,CAAC,WAAW,CAAhB,eAAA,EAAkC;AAChC,MAAA,IAAI,CAAC;AAAE,QAAA,WAAW,EAAb,WAAA;AAAe,QAAA,WAAW,EAA1B,WAAA;AAA4B,QAAA,OAAO,EAAnC,OAAA;AAAqC,QAAA,KAAK,EAA1C,KAAA;AAA4C,QAAA,IAAI,EAAE;AAAlD,OAAD,EAAJ,KAAI,CAAJ;AACD;AACF;;AAED,WAAA,YAAA,CAAA,KAAA,EAAgC;AAC9B,IAAA,KAAK,CAAL,aAAA,GAAA,aAAA;AACA,IAAA,KAAK,CAAL,QAAA,CAAA,OAAA,CAAA,aAAA,GAAuC,aAAa,CAApD,QAAA;AACA,KAAA,GAAA,WAAA,CAAA,OAAA,EAAO,KAAK,CAAL,OAAA,CAAP,cAAA,EAAqC,aAAa,CAAlD,KAAA;AACD;;sBAEc,a;;;;;;;;;ACzWf;;AAAA;;AAoBA,WAAA,YAAA,CAAA,KAAA,EAAgC;AAC9B,IAAA,KAAK,CAAL,SAAA,CAAgB,SAAA,CAAhB,OAAA;AAD8B,QAGtB,aAHsB,GAGJ,KAHI,CAAA,aAAA,CAAA,CAAA;;AAM9B,IAAA,aAAa,CAAb,QAAA,CAAA,kBAAA,GAAA,CAAA;AACA,IAAA,aAAa,CAAb,KAAA,CAAA,UAAA,GAAiC,KAAK,CAAL,OAAA,CAAA,cAAA,CAAA,UAAA,GAAjC,IAAA;AACD;;AAED,WAAA,KAAA,CAAA,IAAA,EAAuE;AAAA,QAArD,YAAqD,GAAA,IAAA,CAArD,YAAqD;AACrE,QAAI,YAAY,CAAZ,IAAA,KAAJ,MAAA,EAAkC;AAElC,IAAA,YAAY,CAAZ,KAAA,GAAqB,CAAC,YAAY,CAAZ,KAAA,IAAD,CAAA,IAArB,CAAA;AACD;;AAED,WAAA,OAAA,CAAA,KAAA,EAAA,KAAA,EAGE;AAAA,QAFE,WAEF,GAAA,KAAA,CAFE,WAEF;AAAA,QAFe,YAEf,GAAA,KAAA,CAFe,YAEf;AAAA,QAF6B,WAE7B,GAAA,KAAA,CAF6B,WAE7B;AAAA,QAF0C,OAE1C,GAAA,KAAA,CAF0C,OAE1C;AACA,QAAI,YAAY,CAAZ,IAAA,KAAA,MAAA,IAAgC,CAAC,OAAO,CAA5C,MAAA,EADA,OAAA,CAAA;;AAIA,QAAM,QAAQ,GAAG,OAAO,CAAP,CAAO,CAAP,CAAA,SAAA,CAAA,OAAA,CAJjB,kBAIA,CAJA,CAAA;;AAOA,QAAI,QAAQ,IAAZ,CAAA,EAPA,OAAA,CAAA;;AAUA,IAAA,WAAW,CAAX,kBAAA,GAAiC,UAAU,CAAC,YAAM;AAChD,MAAA,KAAK,CAAL,aAAA,CAAA,IAAA,CACE;AACE,QAAA,WAAW,EADb,WAAA;AAEE,QAAA,WAAW,EAFb,WAAA;AAGE,QAAA,IAAI,EAHN,MAAA;AAIE,QAAA,OAAO,EAJT,YAAA;AAKE,QAAA,KAAK,EAAE;AALT,OADF,EAAA,KAAA;AADyC,KAAA,EAA3C,QAA2C,CAA3C;AAYD;;AAED,WAAA,aAAA,CAAA,KAAA,EAAuE;AAAA,QAA7C,WAA6C,GAAA,KAAA,CAA7C,WAA6C,CAAA,C;;;AAGrE,QAAI,WAAW,CAAf,kBAAA,EAAoC;AAClC,MAAA,aAAa,CAAC,WAAW,CAAzB,kBAAa,CAAb;AACA,MAAA,WAAW,CAAX,kBAAA,GAAA,IAAA;AACD;AACF;;AAED,MAAM,UAAkB,GAAG;AACzB,IAAA,EAAE,EADuB,2BAAA;AAEzB,IAAA,OAAO,EAFkB,YAAA;AAGzB,IAAA,SAAS,EAAE,CAAA,MAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CACT,UAAA,GAAA,EAAA,UAAA,EAAqB;AACnB;AAAE,MAAA,GAAD,CAAA,iBAAA,MAAA,CAAA,UAAA,CAAA,CAAC,GAAD,aAAC;AACF,aAAA,GAAA;AAHO,KAAA,EAKT;AACE,2BADF,KAAA;AAEE,6BAAuB;AAFzB,KALS;AAHc,GAA3B;sBAee,U;;;;;;;;;ACxFf;;AAAA;;AASA,WAAA,YAAA,CAAA,KAAA,EAAgC;AAAA,QACtB,YADsB,GACL,KADK,CAAA,YAAA;AAG9B,IAAA,YAAY,CAAZ,SAAA,CAAA,aAAA,GAAA,mBAAA;AAEA,QAAM,kBAAkB,GAAG,YAAY,CAAZ,SAAA,CAA3B,iBAAA;;AAEA,IAAA,YAAY,CAAZ,SAAA,CAAA,iBAAA,GAA2C,UAAA,UAAA,EAAA,QAAA,EAAgC;AACzE,UAAM,GAAG,GAAG,kBAAkB,CAAlB,IAAA,CAAA,IAAA,EAAA,UAAA,EAAZ,QAAY,CAAZ;;AAEA,UAAI,GAAG,KAAP,IAAA,EAAkB;AAChB,aAAA,MAAA,CAAA,OAAA,CAAA,UAAA,IAAA,QAAA;AACD;;AAED,aAAA,GAAA;AAPF,KAAA;AASD;;AAED,WAAA,mBAAA,CAAA,OAAA,EAAgE;AAC9D,KAAA,GAAA,WAAA,CAAA,OAAA,EAAO,KAAA,MAAA,CAAP,OAAA,EAAA,OAAA;AAEA,WAAA,IAAA;AACD;;AAED,MAAM,MAAc,GAAG;AACrB,IAAA,EAAE,EADmB,oCAAA;AAErB,IAAA,OAAO,EAFc,YAAA;AAGrB,IAAA,SAAS,EAAE;AACT,uCAAiC,SAAA,2BAAA,CAAA,IAAA,EAAA,KAAA,EAAiD;AAAA,YAA9C,OAA8C,GAAA,IAAA,CAA9C,OAA8C;AAAA,YAArC,IAAqC,GAAA,IAAA,CAArC,IAAqC;AAAA,YAA/B,IAA+B,GAAA,IAAA,CAA/B,IAA+B;AAAA,YAAzB,WAAyB,GAAA,IAAA,CAAzB,WAAyB;AAChF,QAAA,KAAK,CAAL,aAAA,CAAA,YAAA,CAAA,IAAA,EAAuC,UAAA,YAAA,EAAgC;AACrE,cAAM,SAAS,GAAG,YAAY,CAA9B,MAAA;AACA,cAAM,OAAO,GAAG,SAAS,CAAzB,OAAA;;AAEA,cACE,SAAS,CAAT,KAAA,CAAA,IAAA,KACA,SAAS,CAAT,KAAA,CAAA,IAAA,EADA,MAAA,IAEA,YAAY,CAAZ,eAAA,CAAA,OAAA,EAAA,IAAA,EAHF,WAGE,CAHF,EAIE;AACA,YAAA,OAAO,CAAP,IAAA,CAAa;AACX,cAAA,IAAI,EADO,IAAA;AAEX,cAAA,SAAS,EAFE,SAAA;AAGX,cAAA,KAAK,EAAE;AAAE,gBAAA,YAAY,EAAZ;AAAF;AAHI,aAAb;AAKD;AAdH,SAAA;AAFO,OAAA;AAoBT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAsB;AAAA,YAAnB,YAAmB,GAAA,KAAA,CAAnB,YAAmB;;AACxC,QAAA,YAAY,CAAZ,MAAA,CAAA,OAAA,GAA8B,UAAA,OAAA,EAA4B;AACxD,iBAAO,YAAY,CAAZ,OAAA,CAAP,OAAO,CAAP;AADF,SAAA;AArBO,OAAA;AA0BT,0BAAoB,SAAA,eAAA,CAAA,KAAA,EAAA,KAAA,EAAsC;AAAA,YAAnC,YAAmC,GAAA,KAAA,CAAnC,YAAmC;AAAA,YAArB,OAAqB,GAAA,KAAA,CAArB,OAAqB;AACxD,SAAA,GAAA,WAAA,CAAA,OAAA,EAAO,YAAY,CAAZ,MAAA,CAAP,OAAA,EAAoC,KAAK,CAAL,aAAA,CAApC,QAAA;AACA,SAAA,GAAA,WAAA,CAAA,OAAA,EAAO,YAAY,CAAZ,MAAA,CAAP,OAAA,EAAoC,OAAO,CAAP,aAAA,IAApC,EAAA;AACD;AA7BQ;AAHU,GAAvB;sBAoCe,M;;;;;;;;;ACtEf;;AAAA;AACA;;AAAA;AACA;;AAAA;AAEA,MAAM,WAAc,GAAG;AACrB,IAAA,EAAE,EADmB,gBAAA;AAErB,IAAA,OAFqB,EAAA,SAAA,OAAA,CAAA,KAAA,EAEL;AACd,MAAA,KAAK,CAAL,SAAA,CAAA,SAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,eAAA,CAAhB,OAAA;AACA,MAAA,KAAK,CAAL,SAAA,CAAgB,wBAAA,CAAhB,OAAA;AACD;AANoB,GAAvB;sBASe,W;;;;;;;;;;ACXf;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;AA6BO,WAAA,YAAA,CAAA,KAAA,EAAgC;AAAA,QAGnC,YAHmC,GAIjC,KAJiC,CAAA,YAAA;AAMrC,IAAA,KAAK,CAAL,OAAA,CAAA,MAAA,CAAA,MAAA,GAAA,IAAA;;;;;;;;;;;;;;;;;;AAkBA,IAAA,YAAY,CAAZ,SAAA,CAAA,MAAA,GAAgC,UAAA,MAAA,EAA+B;AAC7D,aAAO,QAAQ,CAAA,IAAA,EAAA,MAAA,EAAf,KAAe,CAAf;AADF,KAAA;AAGD;;AAED,WAAA,QAAA,CAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAIyB;AACvB,QAAM,QAAQ,GAAI,OAAA,CAAA,OAAA,CAAA,MAAA,CAAU,YAAY,CAAtB,MAAA,IACd,QAAG,CAAH,IAAA,CAAS,YAAY,CAAZ,QAAA,CAAA,gBAAA,CAAuC,YAAY,CAD9C,MACL,CAAT,CADc,GAEd,CAAC,YAAY,CAHM,MAGnB,CAFJ,CADuB,CAAA;;AAMvB,QAAM,OAAO,GAAI,KAAK,CAAN,MAAC,CAAjB,OAAA;AACA,QAAM,QAAqC,GAAG,OAAO,GAAA,EAAA,GAArD,IAAA;;AAPuB,QAAA,KAAA,GAAA,SAAA,KAAA,GAAA;AAAA,MAAA,IAAA,GASD,QATC,CAAA,EAAA,CAAA;AAAA,UASZ,OATY,GAAA,IAAA;AAUrB,UAAM,IAAI,GAAG,YAAY,CAAZ,OAAA,CAAb,OAAa,CAAb;;AAEA,UAAI,CAAJ,IAAA,EAAW;AACT,eAAA,OAAA;AACD;;AAED,UAAM,kBAAkB,GAAG,QAAG,CAAH,IAAA,CAAS,KAAK,CAAL,YAAA,CAAT,IAAA,EAAkC,UAAA,WAAA,EAA8B;AACzF,eACE,WAAW,CAAX,WAAA,MACA,WAAW,CAAX,YAAA,KADA,YAAA,IAEA,WAAW,CAAX,OAAA,KAFA,OAAA,IAGA,WAAW,CAAX,QAAA,CAAA,IAAA,KAA8B,MAAM,CAJtC,IAAA;AADF,OAA2B,CAA3B;;AAQA,UAAI,aAA4B,GAAA,KAAhC,CAAA;;AAEA,UAAA,kBAAA,EAAwB;AACtB,QAAA,kBAAkB,CAAlB,IAAA;;AAEA,YAAA,QAAA,EAAc;AACZ,UAAA,aAAa,GACX,kBAAkB,CAAlB,cAAA,IACA,IAAA,OAAA,CAAY,UAAA,OAAA,EAAkB;AAC5B,YAAA,kBAAkB,CAAlB,cAAA,GAAA,OAAA;AAHJ,WAEE,CAFF;AAKD;AATH,OAAA,MAUO;AACL,YAAM,IAAI,GAAG,CAAA,GAAA,SAAA,CAAA,UAAA,EAAb,IAAa,CAAb;AACA,YAAM,MAAM,GAAG;AACb,UAAA,IAAI,EAAE;AAAE,YAAA,CAAC,EAAE,IAAI,CAAT,CAAA;AAAa,YAAA,CAAC,EAAE,IAAI,CAAC;AAArB,WADO;AAEb,UAAA,MAAM,EAAE;AAAE,YAAA,CAAC,EAAE,IAAI,CAAT,CAAA;AAAa,YAAA,CAAC,EAAE,IAAI,CAAC;AAArB,WAFK;AAGb,UAAA,SAAS,EAAE,KAAK,CAAL,GAAA;AAHE,SAAf;;AAMA,YAAM,KAAK,GAAG,iBAAY,CAAZ,aAAA,CAAd,MAAc,CAAd;;AACA,QAAA,aAAa,GAAG,WAAW,CAAA,KAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAA3B,KAA2B,CAA3B;AACD;;AAED,UAAA,QAAA,EAAc;AACZ,QAAA,QAAQ,CAAR,IAAA,CAAA,aAAA;AACD;AAlDoB,KAAA;;AASvB,SAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAsB,QAAtB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAgC;AAAA,UAAA,IAAA;;AAAA,UAAA,IAAA,GAAA,KAAA,EAAA;;AAAA,UAAA,IAAA,KAAA,OAAA,EAI5B;AAsCH;;AAED,WAAO,QAAQ,IAAI,OAAO,CAAP,GAAA,CAAA,QAAA,EAAA,IAAA,CAA2B,YAAA;AAAA,aAAA,YAAA;AAA9C,KAAmB,CAAnB;AACD;;AAED,WAAA,WAAA,CAAA,KAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAME;AACA,QAAM,WAAW,GAAG,KAAK,CAAL,YAAA,CAAA,GAAA,CAAuB;AAAE,MAAA,WAAW,EAAE;AAAf,KAAvB,CAApB;AACA,QAAM,SAAS,GAAG;AAChB,MAAA,WAAW,EADK,WAAA;AAEhB,MAAA,KAAK,EAFW,KAAA;AAGhB,MAAA,OAAO,EAHS,KAAA;AAIhB,MAAA,WAAW,EAJK,OAAA;AAKhB,MAAA,KAAK,EAAE;AALS,KAAlB;AAQA,IAAA,WAAW,CAAX,YAAA,GAAA,YAAA;AACA,IAAA,WAAW,CAAX,OAAA,GAAA,OAAA;AACA,IAAA,WAAW,CAAX,SAAA,GAAA,KAAA;AACA,IAAA,WAAW,CAAX,aAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA;;AACA,IAAA,iBAAY,CAAZ,aAAA,CAA2B,WAAW,CAAX,MAAA,CAA3B,KAAA;;AAEA,KAAA,GAAA,SAAA,CAAA,UAAA,EAAW,WAAW,CAAtB,QAAA,EAAA,MAAA;;AACA,IAAA,WAAW,CAAX,QAAA,CAAA,SAAA;;AAjBA,QAAA,KAAA,GAmBqB,KAAK,CAnB1B,MAAA;AAAA,QAmBQ,OAnBR,GAAA,KAAA,CAAA,OAAA;AAoBA,QAAM,aAAa,GAAG,OAAO,GACzB,IAAA,OAAA,CAAuB,UAAA,OAAA,EAAa;AACpC,MAAA,WAAW,CAAX,cAAA,GAAA,OAAA;AAFyB,KACzB,CADyB,GAA7B,SAAA;AAMA,IAAA,WAAW,CAAX,cAAA,GAAA,aAAA;AACA,IAAA,WAAW,CAAX,KAAA,CAAA,MAAA,EAAA,YAAA,EAAA,OAAA;;AAEA,QAAI,WAAW,CAAf,YAAA,EAA8B;AAC5B,MAAA,WAAW,CAAX,IAAA,CAAA,SAAA;AACA,MAAA,WAAW,CAAX,GAAA,CAAA,KAAA;AAFF,KAAA,MAGO;AACL,MAAA,WAAW,CAAX,IAAA;;AACA,MAAA,WAAW,CAAX,cAAA;AACD;;AAED,IAAA,WAAW,CAAX,aAAA,CAAA,KAAA,EAAA,KAAA;AAEA,WAAA,aAAA;AACD;;AAED,MAAM,MAAc,GAAG;AACrB,IAAA,EAAE,EADmB,QAAA;AAErB,IAAA,OAAO,EAFc,YAAA;AAGrB,IAAA,SAAS,EAAE;;AAET,2BAAqB,SAAA,gBAAA,CAAA,KAAA,EAAA,KAAA,EAA4B;AAAA,YAAzB,WAAyB,GAAA,KAAA,CAAzB,WAAyB;;AAC/C,YAAI,WAAW,CAAX,WAAA,KAAJ,QAAA,EAA0C;AACxC,cAAI,WAAW,CAAf,cAAA,EAAgC;AAC9B,YAAA,WAAW,CAAX,cAAA;AACD;;AAED,UAAA,QAAG,CAAH,MAAA,CAAW,KAAK,CAAL,YAAA,CAAX,IAAA,EAAA,WAAA;AACD;AACF;AAVQ;AAHU,GAAvB;sBAiBe,M;;;;;;;;;;;AC/Lf;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;AACA;;AAAA;;;;;;;;;;;;;;;;;;AAEA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,+BAAA,CAAb,OAAA;;AAEA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,WAAA,CAAb,OAAA,E7EdA,C6EcA;;;AAGA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,WAAA,CAAb,OAAA,E7EjBA,C6EiBA;;;AAGA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,WAAA,CAAb,OAAA,E7EpBA,C6EoBA;;;AAGA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,WAAA,CAAb,OAAA,E7EvBA,C6EuBA;;;AAGA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,WAAA,CAAb,OAAA,E7E1BA,C6E0BA;;;AAGA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,UAAA,CAAb,OAAA,E7E7BA,C6E6BA;;;AAGA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,UAAA,CAAb,OAAA,E7EhCA,C6EgCA;;;AAGA,EAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,WAAA,CAAb,OAAA,E7EnCA,C6EmCA;;;AAGA,MAAI,kBAAJ,YAAA,EAA2C;AACzC,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAa,WAAA,CAAb,OAAA;AACD;;sBAEc,UAAA,CAAA,O;;;AAEf,MAAI,CAAA,aAAA,WAAA,GAAA,WAAA,GAAA,YAAA,CAAA,UAAA,CAAA,MAAA,QAAA,IAA8B,CAAC,CAAnC,UAAA,EAA4C;AAC1C,QAAI;AACF,MAAA,UAAA,CAAA,OAAA,GAAiB,UAAA,CAAjB,OAAA;AADF,KAAA,CAEE,OAAA,OAAA,EAAM,CAAE;AACX;;AAED;AAAE,EAAA,UAAA,CAAD,OAAC,CAAD,OAAC,GAA2B,UAAA,CAA5B,OAAC;;;;;;;;;;;ACjDF;;AAAA;;;;;;;;;;;;;;;;;;sBAEe,UAAA,CAAA,O;;;AAEf,MAAI,CAAA,aAAA,WAAA,GAAA,WAAA,GAAA,YAAA,CAAA,UAAA,CAAA,MAAA,QAAA,IAA8B,CAAC,CAAnC,UAAA,EAA4C;AAC1C,QAAI;AACF,MAAA,UAAA,CAAA,OAAA,GAAiB,UAAA,CAAjB,OAAA;AADF,KAAA,CAEE,OAAA,OAAA,EAAM,CAAE;AACX;;AAED;AAAE,EAAA,UAAA,CAAD,OAAC,CAAD,OAAC,GAA2B,UAAA,CAA5B,OAAC;ACXF,EAAA,UAAA,GAAA,UAAA,CAAA,OAAA;AACA,SAAA,UAAA;AAEA,C/EHA,E","sourcesContent":["/**\n * interact.js 1.10.11\n *\n * Copyright (c) 2012-present Taye Adeyemi <dev@taye.me>\n * https://interactjs.io/license\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\n","export default (thing: any) => !!(thing && thing.Window) && thing instanceof thing.Window\n","import isWindow from './isWindow'\n\nexport let realWindow = undefined as Window\n\nlet win = undefined as Window\nexport { win as window }\n\nexport function init (window: Window & { wrap?: (...args: any[]) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n realWindow = window\n\n // create a TextNode\n const el = window.document.createTextNode('')\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win = window\n}\n\nif (typeof window !== 'undefined' && !!window) {\n init(window)\n}\n\nexport function getWindow (node: any) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = node.ownerDocument || node\n\n return rootNode.defaultView || win.window\n}\n","import type { Element } from '@interactjs/types/index'\n\nimport isWindow from './isWindow'\nimport * as win from './window'\n\nconst window = (thing: any): thing is Window => thing === win.window || isWindow(thing)\n\nconst docFrag = (thing: any): thing is DocumentFragment => object(thing) && thing.nodeType === 11\n\nconst object = (thing: any): thing is { [index: string]: any } => !!thing && typeof thing === 'object'\n\nconst func = (thing: any): thing is (...args: any[]) => any => typeof thing === 'function'\n\nconst number = (thing: any): thing is number => typeof thing === 'number'\n\nconst bool = (thing: any): thing is boolean => typeof thing === 'boolean'\n\nconst string = (thing: any): thing is string => typeof thing === 'string'\n\nconst element = (thing: any): thing is Element => {\n if (!thing || typeof thing !== 'object') {\n return false\n }\n\n // eslint-disable-next-line import/no-named-as-default-member\n const _window = win.getWindow(thing) || win.window\n\n return /object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string'\n}\n\nconst plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString())\n\nconst array = <T extends unknown>(thing: any): thing is T[] =>\n object(thing) && typeof thing.length !== 'undefined' && func(thing.splice)\n\nexport default {\n window,\n docFrag,\n object,\n func,\n number,\n bool,\n string,\n element,\n plainObject,\n array,\n}\n","import type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ActionMethod, DraggableOptions, DropzoneOptions } from '@interactjs/types/index'\nimport is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n drag: DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n drag?: typeof drag\n }\n}\n\nexport type DragEvent = InteractEvent<'drag'>\n\nexport type DraggableMethod = ActionMethod<DraggableOptions>\n\nfunction install (scope: Scope) {\n const { actions, Interactable, defaults } = scope\n\n Interactable.prototype.draggable = drag.draggable\n\n actions.map.drag = drag\n actions.methodDict.drag = 'draggable'\n\n defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n if (interaction.prepared.name !== 'drag') return\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y\n interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n interaction.coords.velocity.client.y = 0\n interaction.coords.velocity.page.y = 0\n } else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x\n interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n interaction.coords.velocity.client.x = 0\n interaction.coords.velocity.page.x = 0\n }\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'drag') return\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x'\n\n iEvent.page[opposite] = interaction.coords.start.page[opposite]\n iEvent.client[opposite] = interaction.coords.start.client[opposite]\n iEvent.delta[opposite] = 0\n }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (\n this: Interactable,\n options?: DraggableOptions | boolean,\n): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction('drag', options)\n this.setOnEvents('drag', options)\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis\n }\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options\n\n return this\n }\n\n return this.options.drag\n}\n\nconst drag: Plugin = {\n id: 'actions/drag',\n install,\n listeners: {\n 'interactions:before-action-move': beforeMove,\n 'interactions:action-resume': beforeMove,\n\n // dragmove\n 'interactions:action-move': move,\n 'auto-start:check': (arg) => {\n const { interaction, interactable, buttons } = arg\n const dragOptions = interactable.options.drag\n\n if (\n !(dragOptions && dragOptions.enabled) ||\n // check mouseButton setting if the pointer is down\n (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options.drag.mouseButtons) === 0)\n ) {\n return undefined\n }\n\n arg.action = {\n name: 'drag',\n axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis,\n }\n\n return false\n },\n },\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis: 'xy',\n lockAxis: 'xy',\n } as DropzoneOptions,\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","const domObjects: {\n init: any\n document: Document\n DocumentFragment: typeof DocumentFragment\n SVGElement: typeof SVGElement\n SVGSVGElement: typeof SVGSVGElement\n SVGElementInstance: any\n Element: typeof Element\n HTMLElement: typeof HTMLElement\n Event: typeof Event\n Touch: typeof Touch\n PointerEvent: typeof PointerEvent\n} = {\n init,\n document: null,\n DocumentFragment: null,\n SVGElement: null,\n SVGSVGElement: null,\n SVGElementInstance: null,\n Element: null,\n HTMLElement: null,\n Event: null,\n Touch: null,\n PointerEvent: null,\n}\n\nfunction blank () {}\n\nexport default domObjects\n\nfunction init (window: Window) {\n const win = window as any\n\n domObjects.document = win.document\n domObjects.DocumentFragment = win.DocumentFragment || blank\n domObjects.SVGElement = win.SVGElement || blank\n domObjects.SVGSVGElement = win.SVGSVGElement || blank\n domObjects.SVGElementInstance = win.SVGElementInstance || blank\n domObjects.Element = win.Element || blank\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element\n\n domObjects.Event = win.Event\n domObjects.Touch = win.Touch || blank\n domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent\n}\n","import domObjects from './domObjects'\nimport is from './is'\n\nconst browser = {\n init,\n supportsTouch: null as boolean,\n supportsPointerEvent: null as boolean,\n isIOS7: null as boolean,\n isIOS: null as boolean,\n isIe9: null as boolean,\n isOperaMobile: null as boolean,\n prefixedMatchesSelector: null as 'matches',\n pEventTypes: null as {\n up: string\n down: string\n over: string\n out: string\n move: string\n cancel: string\n },\n wheelEvent: null as string,\n}\n\nfunction init (window: any) {\n const Element = domObjects.Element\n const navigator: Partial<Navigator> = window.navigator || {}\n\n // Does the browser support touch input?\n browser.supportsTouch =\n 'ontouchstart' in window ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent\n\n browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform)\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion)\n\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n // Opera Mobile must be handled differently\n browser.isOperaMobile =\n navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent)\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = ('matches' in Element.prototype\n ? 'matches'\n : 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector'\n : 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector'\n : 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector'\n : 'msMatchesSelector') as 'matches'\n\n browser.pEventTypes = browser.supportsPointerEvent\n ? domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n }\n : null\n\n // because Webkit and Opera still use 'mousewheel' event type\n browser.wheelEvent = domObjects.document && 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import type { Rect, Target, Element } from '@interactjs/types/index'\n\nimport browser from './browser'\nimport domObjects from './domObjects'\nimport is from './is'\nimport * as win from './window'\n\nexport function nodeContains (parent: Node, child: Node) {\n if (parent.contains) {\n return parent.contains(child as Node)\n }\n\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = (child as Node).parentNode\n }\n\n return false\n}\n\nexport function closest (element: Node, selector: string) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return element\n }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node: Node | Document) {\n let parent = node.parentNode\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = (parent as any).host) && is.docFrag(parent)) {\n continue\n }\n\n return parent\n }\n\n return parent\n}\n\nexport function matchesSelector (element: Element, selector: string) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ')\n }\n\n return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = (el: Node | Document | ShadowRoot) => el.parentNode || (el as ShadowRoot).host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements: Element[] | NodeListOf<globalThis.Element>) {\n let deepestNodeParents: Node[] = []\n let deepestNodeIndex: number\n\n for (let i = 0; i < elements.length; i++) {\n const currentNode = elements[i]\n const deepestNode: Node = elements[deepestNodeIndex]\n\n // node may appear in elements array multiple times\n if (!currentNode || i === deepestNodeIndex) {\n continue\n }\n\n if (!deepestNode) {\n deepestNodeIndex = i\n continue\n }\n\n const currentNodeParent = getParent(currentNode)\n const deepestNodeParent = getParent(deepestNode)\n\n // check if the deepest or current are document.documentElement/rootElement\n // - if the current node is, do nothing and continue\n if (currentNodeParent === currentNode.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current node and continue to next\n else if (deepestNodeParent === currentNode.ownerDocument) {\n deepestNodeIndex = i\n continue\n }\n\n // compare zIndex of siblings\n if (currentNodeParent === deepestNodeParent) {\n if (zIndexIsHigherThan(currentNode, deepestNode)) {\n deepestNodeIndex = i\n }\n\n continue\n }\n\n // populate the ancestry array for the latest deepest node\n deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode)\n\n let ancestryStart: Node\n\n // if the deepest node is an HTMLElement and the current node is a non root svg element\n if (\n deepestNode instanceof domObjects.HTMLElement &&\n currentNode instanceof domObjects.SVGElement &&\n !(currentNode instanceof domObjects.SVGSVGElement)\n ) {\n // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n if (currentNode === deepestNodeParent) {\n continue\n }\n\n ancestryStart = currentNode.ownerSVGElement\n } else {\n ancestryStart = currentNode\n }\n\n const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument)\n let commonIndex = 0\n\n // get (position of closest common ancestor) + 1\n while (\n currentNodeParents[commonIndex] &&\n currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]\n ) {\n commonIndex++\n }\n\n const parents = [\n currentNodeParents[commonIndex - 1],\n currentNodeParents[commonIndex],\n deepestNodeParents[commonIndex],\n ]\n\n if (parents[0]) {\n let child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestNodeIndex = i\n deepestNodeParents = currentNodeParents\n\n break\n } else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n }\n\n return deepestNodeIndex\n}\n\nfunction getNodeParents (node: Node, limit?: Node) {\n const parents: Node[] = []\n let parent: Node = node\n let parentParent: Node\n\n while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n parents.unshift(parent)\n parent = parentParent\n }\n\n return parents\n}\n\nfunction zIndexIsHigherThan (higherNode: Node, lowerNode: Node) {\n const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0\n const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0\n\n return higherIndex >= lowerIndex\n}\n\nexport function matchesUpTo (element: Element, selector: string, limit: Node) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element) as Element\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element: Element) {\n return (element as SVGElement).correspondingUseElement || element\n}\n\nexport function getScrollXY (relevantWindow?: Window) {\n relevantWindow = relevantWindow || win.window\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n }\n}\n\nexport function getElementClientRect (element: Element): Required<Rect> {\n const clientRect =\n element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0]\n\n return (\n clientRect && {\n left: clientRect.left,\n right: clientRect.right,\n top: clientRect.top,\n bottom: clientRect.bottom,\n width: clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n }\n )\n}\n\nexport function getElementRect (element: Element) {\n const clientRect = getElementClientRect(element)\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element))\n\n clientRect.left += scroll.x\n clientRect.right += scroll.x\n clientRect.top += scroll.y\n clientRect.bottom += scroll.y\n }\n\n return clientRect\n}\n\nexport function getPath (node: Node | Document) {\n const path = []\n\n while (node) {\n path.push(node)\n node = parentNode(node)\n }\n\n return path\n}\n\nexport function trySelector (value: Target) {\n if (!is.string(value)) {\n return false\n }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","export default function extend<T, U extends object> (dest: U & Partial<T>, source: T): T & U {\n for (const prop in source) {\n ;((dest as unknown) as T)[prop] = source[prop]\n }\n\n const ret = dest as T & U\n\n return ret\n}\n","import type {\n HasGetRect,\n RectResolvable,\n Rect,\n Element,\n Point,\n FullRect,\n EdgeOptions,\n} from '@interactjs/types'\n\nimport { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport is from './is'\n\nexport function getStringOptionResult (value: any, target: HasGetRect, element: Node) {\n if (value === 'parent') {\n return parentNode(element)\n }\n\n if (value === 'self') {\n return target.getRect(element as Element)\n }\n\n return closest(element, value)\n}\n\nexport function resolveRectLike<T extends any[]> (\n value: RectResolvable<T>,\n target?: HasGetRect,\n element?: Node,\n functionArgs?: T,\n) {\n let returnValue: any = value\n if (is.string(returnValue)) {\n returnValue = getStringOptionResult(returnValue, target, element)\n } else if (is.func(returnValue)) {\n returnValue = returnValue(...functionArgs)\n }\n\n if (is.element(returnValue)) {\n returnValue = getElementRect(returnValue)\n }\n\n return returnValue as Rect\n}\n\nexport function rectToXY (rect: Rect | Point) {\n return (\n rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n )\n}\n\nexport function xywhToTlbr<T extends Partial<Rect & Point>> (rect: T) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect)\n\n rect.left = rect.x || 0\n rect.top = rect.y || 0\n rect.right = rect.right || rect.left + rect.width\n rect.bottom = rect.bottom || rect.top + rect.height\n }\n\n return rect as Rect & T\n}\n\nexport function tlbrToXywh (rect: Rect & Partial<Point>) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect)\n\n rect.x = rect.left || 0\n rect.y = rect.top || 0\n rect.width = rect.width || (rect.right || 0) - rect.x\n rect.height = rect.height || (rect.bottom || 0) - rect.y\n }\n\n return rect as FullRect & Point\n}\n\nexport function addEdges (edges: EdgeOptions, rect: Rect, delta: Point) {\n if (edges.left) {\n rect.left += delta.x\n }\n if (edges.right) {\n rect.right += delta.x\n }\n if (edges.top) {\n rect.top += delta.y\n }\n if (edges.bottom) {\n rect.bottom += delta.y\n }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n}\n","import type { PerActionDefaults } from '@interactjs/core/options'\nimport type { ActionName } from '@interactjs/core/scope'\nimport type { HasGetRect } from '@interactjs/types/index'\n\nimport { rectToXY, resolveRectLike } from './rect'\n\nexport default function (\n target: HasGetRect & { options: PerActionDefaults },\n element: Node,\n actionName?: ActionName,\n) {\n const actionOptions = (target.options as any)[actionName]\n const actionOrigin = actionOptions && actionOptions.origin\n const origin = actionOrigin || target.options.origin\n\n const originRect = resolveRectLike(origin, target, element, [target && element])\n\n return rectToXY(originRect) || { x: 0, y: 0 }\n}\n","import type { EventTypes, Listener, ListenersArg } from '@interactjs/types/index'\n\nimport extend from './extend'\nimport is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Listener[]\n}\n\nexport default function normalize (\n type: EventTypes,\n listeners?: ListenersArg | ListenersArg[],\n result?: NormalizedListeners,\n): NormalizedListeners {\n result = result || {}\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type)\n }\n\n if (is.array(type)) {\n return type.reduce<NormalizedListeners>((acc, t) => extend(acc, normalize(t, listeners, result)), result)\n }\n\n // ({ type: fn }) -> ('', { type: fn })\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n } else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\n } else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map((p) => `${type}${p}`)\n\n normalize(combinedTypes, listeners[prefix], result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n return type.trim().split(/ +/)\n}\n","export default (x: number, y: number) => Math.sqrt(x * x + y * y)\n","function pointerExtend<T> (dest: Partial<T>, source: T) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs\n let deprecated = false\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true\n break\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop]\n }\n }\n return dest\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n moz: /(Pressure)$/,\n} as { [prefix: string]: RegExp }\n\nexport default pointerExtend\n","import type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { CoordsSetMember, PointerType, Point, PointerEventType, Element } from '@interactjs/types/index'\n\nimport browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport is from './is'\nimport pointerExtend from './pointerExtend'\n\nexport function copyCoords (dest: CoordsSetMember, src: CoordsSetMember) {\n dest.page = dest.page || ({} as any)\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || ({} as any)\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n}\n\nexport function setCoordDeltas (targetObj: CoordsSetMember, prev: CoordsSetMember, cur: CoordsSetMember) {\n targetObj.page.x = cur.page.x - prev.page.x\n targetObj.page.y = cur.page.y - prev.page.y\n targetObj.client.x = cur.client.x - prev.client.x\n targetObj.client.y = cur.client.y - prev.client.y\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n}\n\nexport function setCoordVelocity (targetObj: CoordsSetMember, delta: CoordsSetMember) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n targetObj.page.x = delta.page.x / dt\n targetObj.page.y = delta.page.y / dt\n targetObj.client.x = delta.client.x / dt\n targetObj.client.y = delta.client.y / dt\n targetObj.timeStamp = dt\n}\n\nexport function setZeroCoords (targetObj: CoordsSetMember) {\n targetObj.page.x = 0\n targetObj.page.y = 0\n targetObj.client.x = 0\n targetObj.client.y = 0\n}\n\nexport function isNativePointer (pointer: any) {\n return pointer instanceof dom.Event || pointer instanceof dom.Touch\n}\n\n// Get specified X/Y coords for mouse or event.touches[0]\nexport function getXY (type: string, pointer: PointerType | InteractEvent, xy: Point) {\n xy = xy || ({} as Point)\n type = type || 'page'\n\n xy.x = pointer[(type + 'X') as keyof PointerType]\n xy.y = pointer[(type + 'Y') as keyof PointerType]\n\n return xy\n}\n\nexport function getPageXY (pointer: PointerType | InteractEvent, page?: Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n } else {\n getXY('page', pointer, page)\n }\n\n return page\n}\n\nexport function getClientXY (pointer: PointerType, client: Point) {\n client = client || ({} as any)\n\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n getXY('screen', pointer, client)\n } else {\n getXY('client', pointer, client)\n }\n\n return client\n}\n\nexport function getPointerId (pointer: { pointerId?: number, identifier?: number, type?: string }) {\n return is.number(pointer.pointerId) ? pointer.pointerId! : pointer.identifier!\n}\n\nexport function setCoords (dest: CoordsSetMember, pointers: any[], timeStamp: number) {\n const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0]\n\n getPageXY(pointer, dest.page)\n getClientXY(pointer, dest.client)\n\n dest.timeStamp = timeStamp\n}\n\nexport function getTouchPair (event: TouchEvent | PointerType[]) {\n const touches: PointerType[] = []\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0]\n touches[1] = event[1]\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0]\n touches[1] = event.changedTouches[0]\n } else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n } else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n}\n\nexport function pointerAverage (pointers: PointerType[]) {\n const average = {\n pageX: 0,\n pageY: 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n type CoordKeys = keyof typeof average\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop as CoordKeys] += pointer[prop as CoordKeys]\n }\n }\n for (const prop in average) {\n average[prop as CoordKeys] /= pointers.length\n }\n\n return average\n}\n\nexport function touchBBox (event: PointerType[]) {\n if (!event.length) {\n return null\n }\n\n const touches = getTouchPair(event)\n const minX = Math.min(touches[0].pageX, touches[1].pageX)\n const minY = Math.min(touches[0].pageY, touches[1].pageY)\n const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY,\n }\n}\n\nexport function touchDistance (event: PointerType[] | TouchEvent, deltaSource: string) {\n const sourceX = (deltaSource + 'X') as 'pageX'\n const sourceY = (deltaSource + 'Y') as 'pageY'\n const touches = getTouchPair(event)\n\n const dx = touches[0][sourceX] - touches[1][sourceX]\n const dy = touches[0][sourceY] - touches[1][sourceY]\n\n return hypot(dx, dy)\n}\n\nexport function touchAngle (event: PointerType[] | TouchEvent, deltaSource: string) {\n const sourceX = (deltaSource + 'X') as 'pageX'\n const sourceY = (deltaSource + 'Y') as 'pageY'\n const touches = getTouchPair(event)\n const dx = touches[1][sourceX] - touches[0][sourceX]\n const dy = touches[1][sourceY] - touches[0][sourceY]\n const angle = (180 * Math.atan2(dy, dx)) / Math.PI\n\n return angle\n}\n\nexport function getPointerType (pointer: { pointerType?: string, identifier?: number, type?: string }) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]!\n : // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n /touch/.test(pointer.type || '') || pointer instanceof dom.Touch\n ? 'touch'\n : 'mouse'\n}\n\n// [ event.target, event.currentTarget ]\nexport function getEventTargets (event: Event) {\n const path = is.func(event.composedPath)\n ? (event.composedPath() as Element[])\n : ((event as unknown) as { path: Element[] }).path\n\n return [\n domUtils.getActualElement(path ? path[0] : (event.target as Element)),\n domUtils.getActualElement(event.currentTarget as Element),\n ]\n}\n\nexport function newCoords (): CoordsSetMember {\n return {\n page: { x: 0, y: 0 },\n client: { x: 0, y: 0 },\n timeStamp: 0,\n }\n}\n\nexport function coordsToEvent (coords: MockCoords) {\n const event = {\n coords,\n get page () {\n return this.coords.page\n },\n get client () {\n return this.coords.client\n },\n get timeStamp () {\n return this.coords.timeStamp\n },\n get pageX () {\n return this.coords.page.x\n },\n get pageY () {\n return this.coords.page.y\n },\n get clientX () {\n return this.coords.client.x\n },\n get clientY () {\n return this.coords.client.y\n },\n get pointerId () {\n return this.coords.pointerId\n },\n get target () {\n return this.coords.target\n },\n get type () {\n return this.coords.type\n },\n get pointerType () {\n return this.coords.pointerType\n },\n get buttons () {\n return this.coords.buttons\n },\n preventDefault () {},\n }\n\n return event as typeof event & PointerType & PointerEventType\n}\n\nexport interface MockCoords {\n page: Point\n client: Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n buttons?: number\n}\n\nexport { pointerExtend }\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, InteractionProxy } from '@interactjs/core/Interaction'\nimport type { ActionName } from '@interactjs/core/scope'\n\nexport class BaseEvent<T extends ActionName | null = never> {\n type: string\n target: EventTarget\n currentTarget: Node\n interactable: Interactable\n _interaction: Interaction<T>\n timeStamp: any\n immediatePropagationStopped = false\n propagationStopped = false\n\n constructor (interaction: Interaction<T>) {\n this._interaction = interaction\n }\n\n preventDefault () {}\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\n// defined outside of class definition to avoid assignment of undefined during\n// construction\nexport interface BaseEvent<T extends ActionName> {\n interaction: InteractionProxy<T>\n}\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n get (this: BaseEvent) {\n return this._interaction._proxy\n },\n set (this: BaseEvent) {},\n})\n","type Filter<T> = (element: T, index: number, array: T[]) => boolean\n\nexport const contains = <T>(array: T[], target: T) => array.indexOf(target) !== -1\n\nexport const remove = <T>(array: T[], target: T) => array.splice(array.indexOf(target), 1)\n\nexport const merge = <T, U>(target: Array<T | U>, source: U[]) => {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport const from = <T = any>(source: ArrayLike<T>) => merge([] as T[], source as T[])\n\nexport const findIndex = <T>(array: T[], func: Filter<T>) => {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i\n }\n }\n\n return -1\n}\n\nexport const find = <T = any>(array: T[], func: Filter<T>) => array[findIndex(array, func)]\n","import { BaseEvent } from '@interactjs/core/BaseEvent'\nimport type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { Element } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\n\nimport type { DropState } from './plugin'\n\nexport class DropEvent extends BaseEvent<'drag'> {\n target: Element\n dropzone: Interactable\n dragEvent: InteractEvent<'drag'>\n relatedTarget: Element\n draggable: Interactable\n timeStamp: number\n propagationStopped = false\n immediatePropagationStopped = false\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor (dropState: DropState, dragEvent: InteractEvent<'drag'>, type: string) {\n super(dragEvent._interaction)\n\n const { element, dropzone } = type === 'dragleave' ? dropState.prev : dropState.cur\n\n this.type = type\n this.target = element\n this.currentTarget = element\n this.dropzone = dropzone\n this.dragEvent = dragEvent\n this.relatedTarget = dragEvent.target\n this.draggable = dragEvent.interactable\n this.timeStamp = dragEvent.timeStamp\n }\n\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n reject () {\n const { dropState } = this._interaction\n\n if (\n this.type !== 'dropactivate' &&\n (!this.dropzone || dropState.cur.dropzone !== this.dropzone || dropState.cur.element !== this.target)\n ) {\n return\n }\n\n dropState.prev.dropzone = this.dropzone\n dropState.prev.element = this.target\n\n dropState.rejected = true\n dropState.events.enter = null\n\n this.stopImmediatePropagation()\n\n if (this.type === 'dropactivate') {\n const activeDrops = dropState.activeDrops\n const index = arr.findIndex(\n activeDrops,\n ({ dropzone, element }) => dropzone === this.dropzone && element === this.target,\n )\n\n dropState.activeDrops.splice(index, 1)\n\n const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate')\n\n deactivateEvent.dropzone = this.dropzone\n deactivateEvent.target = this.target\n\n this.dropzone.fire(deactivateEvent)\n } else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'))\n }\n }\n\n preventDefault () {}\n\n stopPropagation () {\n this.propagationStopped = true\n }\n\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n","import type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { DropzoneOptions, Element, PointerEventType, Rect } from '@interactjs/types/index'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport type { DragEvent } from '../drag/plugin'\nimport drag from '../drag/plugin'\n\nimport { DropEvent } from './DropEvent'\n\nexport interface DropzoneMethod {\n (this: Interactable, options: DropzoneOptions | boolean): Interactable\n (): DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElemen: Element,\n rect: any,\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: DropState\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n prevDropzone?: Interactable\n dropzone?: Interactable\n dragEnter?: Element\n dragLeave?: Element\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n drop: DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n drop?: typeof drop\n }\n\n interface Scope {\n dynamicDrop?: boolean\n }\n\n interface SignalArgs {\n 'actions/drop:start': DropSignalArg\n 'actions/drop:move': DropSignalArg\n 'actions/drop:end': DropSignalArg\n }\n}\n\ndeclare module '@interactjs/core/InteractStatic' {\n interface InteractStatic {\n dynamicDrop: (this: InteractStatic, newValue?: boolean) => boolean | this\n }\n}\n\ninterface DropSignalArg {\n interaction: Interaction<'drag'>\n dragEvent: DragEvent\n}\n\nexport interface ActiveDrop {\n dropzone: Interactable\n element: Element\n rect: Rect\n}\n\nexport interface DropState {\n cur: {\n // the dropzone a drag target might be dropped into\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n prev: {\n // the dropzone that was recently dragged away from\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n // wheather the potential drop was rejected from a listener\n rejected: boolean\n // the drop events related to the current drag event\n events: FiredDropEvents\n activeDrops: ActiveDrop[]\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interactStatic: interact,\n /** @lends Interactable */\n Interactable,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {object | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interactable, options?: DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n } as Interactable['dropzone']\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (\n this: Interactable,\n dragEvent,\n event,\n draggable,\n draggableElement,\n dropElement,\n rect,\n ) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop\n }\n\n extend(actions.phaselessTypes, {\n dragenter: true,\n dragleave: true,\n dropactivate: true,\n dropdeactivate: true,\n dropmove: true,\n drop: true,\n })\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }: Scope, draggableElement: Element) {\n const drops: ActiveDrop[] = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) {\n continue\n }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if (\n (is.element(accept) && accept !== draggableElement) ||\n (is.string(accept) && !domUtils.matchesSelector(draggableElement, accept)) ||\n (is.func(accept) && !accept({ dropzone, draggableElement }))\n ) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = (is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : is.array(dropzone.target)\n ? dropzone.target\n : [dropzone.target]) as Element[]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n rect: dropzone.getRect(dropzoneElement),\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops: ActiveDrop[], event: DropEvent) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops.slice()) {\n event.dropzone = dropzone\n\n // set current element as event target\n event.target = element\n dropzone.fire(event)\n event.propagationStopped = event.immediatePropagationStopped = false\n }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop (\n { dropState, interactable: draggable, element: dragElement }: Partial<Interaction>,\n dragEvent,\n pointerEvent,\n) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(\n dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null,\n )\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = domUtils.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interaction, _pointerEvent, dragEvent: DragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter: null,\n leave: null,\n activate: null,\n deactivate: null,\n move: null,\n drop: null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\ntype FiredDropEvents = Partial<\nRecord<'leave' | 'enter' | 'move' | 'drop' | 'activate' | 'deactivate', DropEvent>\n>\n\nfunction fireDropEvents (interaction: Interaction, events: FiredDropEvents) {\n const { dropState } = interaction\n const { activeDrops, cur, prev } = dropState\n\n if (events.leave) {\n prev.dropzone.fire(events.leave)\n }\n if (events.enter) {\n cur.dropzone.fire(events.enter)\n }\n if (events.move) {\n cur.dropzone.fire(events.move)\n }\n if (events.drop) {\n cur.dropzone.fire(events.drop)\n }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: DoPhaseArg<'drag', EventPhase>, scope: Scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') {\n return\n }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected =\n dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod(interactable: Interactable): DropzoneOptions\nfunction dropzoneMethod(interactable: Interactable, options: DropzoneOptions | boolean): Interactable\nfunction dropzoneMethod (interactable: Interactable, options?: DropzoneOptions | boolean) {\n if (is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (is.func(options.ondrop)) {\n interactable.on('drop', options.ondrop)\n }\n if (is.func(options.ondropactivate)) {\n interactable.on('dropactivate', options.ondropactivate)\n }\n if (is.func(options.ondropdeactivate)) {\n interactable.on('dropdeactivate', options.ondropdeactivate)\n }\n if (is.func(options.ondragenter)) {\n interactable.on('dragenter', options.ondragenter)\n }\n if (is.func(options.ondragleave)) {\n interactable.on('dragleave', options.ondragleave)\n }\n if (is.func(options.ondropmove)) {\n interactable.on('dropmove', options.ondropmove)\n }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n } else if (is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n }\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept\n }\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker\n }\n\n return interactable\n }\n\n if (is.bool(options)) {\n interactable.options.drop.enabled = options\n\n return interactable\n }\n\n return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n interactable: Interactable,\n dragEvent: InteractEvent,\n event: PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElement: Element,\n rect: any,\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return interactable.options.drop.checker\n ? interactable.options.drop.checker(\n dragEvent,\n event,\n dropped,\n interactable,\n dropElement,\n draggable,\n draggableElement,\n )\n : false\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = getOriginXY(draggable, draggableElement, 'drag')\n const page = pointerUtils.getPageXY(dragEvent)\n\n page.x += origin.x\n page.y += origin.y\n\n const horizontal = page.x > rect.left && page.x < rect.right\n const vertical = page.y > rect.top && page.y < rect.bottom\n\n dropped = horizontal && vertical\n }\n\n const dragRect = draggable.getRect(draggableElement)\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2\n const cy = dragRect.top + dragRect.height / 2\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n }\n\n if (dragRect && is.number(dropOverlap)) {\n const overlapArea =\n Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(\n dragEvent,\n event,\n dropped,\n interactable,\n dropElement,\n draggable,\n draggableElement,\n )\n }\n\n return dropped\n}\n\nconst drop: Plugin = {\n id: 'actions/drop',\n install,\n listeners: {\n 'interactions:before-action-start': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: [],\n }\n },\n\n 'interactions:after-action-start': (\n { interaction, event, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>,\n scope,\n ) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n scope.fire('actions/drop:start', { interaction, dragEvent })\n }\n },\n\n 'interactions:action-move': onEventCreated,\n\n 'interactions:after-action-move': (\n { interaction, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>,\n scope,\n ) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n fireDropEvents(interaction, interaction.dropState.events)\n\n scope.fire('actions/drop:move', { interaction, dragEvent })\n interaction.dropState.events = {}\n },\n\n 'interactions:action-end': (arg: DoPhaseArg<'drag', EventPhase>, scope) => {\n if (arg.interaction.prepared.name !== 'drag') {\n return\n }\n\n const { interaction, iEvent: dragEvent } = arg\n\n onEventCreated(arg, scope)\n fireDropEvents(interaction, interaction.dropState.events)\n scope.fire('actions/drop:end', { interaction, dragEvent })\n },\n\n 'interactions:stop': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n },\n },\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept: null,\n overlap: 'pointer',\n } as DropzoneOptions,\n}\n\nexport default drop\n","import type { InteractEvent, EventPhase } from '@interactjs/core/InteractEvent'\nimport type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { Options } from '@interactjs/core/options'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ActionMethod, GesturableOptions, Rect, PointerType } from '@interactjs/types/index'\nimport is from '@interactjs/utils/is'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nexport type GesturableMethod = ActionMethod<GesturableOptions>\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n gesture?: {\n angle: number // angle from first to second touch\n distance: number\n scale: number // gesture.distance / gesture.startDistance\n startAngle: number // angle of line joining two touches\n startDistance: number // distance between two touches of touchStart\n }\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n gesturable: GesturableMethod\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n gesture: GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n gesture?: typeof gesture\n }\n}\n\nexport interface GestureEvent extends InteractEvent<'gesture'> {\n distance: number\n angle: number\n da: number // angle change\n scale: number // ratio of distance start to current event\n ds: number // scale change\n box: Rect // enclosing box of all points\n touches: PointerType[]\n}\n\nexport interface GestureSignalArg extends DoPhaseArg<'gesture', EventPhase> {\n iEvent: GestureEvent\n interaction: Interaction<'gesture'>\n}\n\nfunction install (scope: Scope) {\n const { actions, Interactable, defaults } = scope\n\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\n Interactable.prototype.gesturable = function (\n this: InstanceType<typeof Interactable>,\n options: GesturableOptions | boolean,\n ) {\n if (is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false\n this.setPerAction('gesture', options)\n this.setOnEvents('gesture', options)\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Options\n } as GesturableMethod\n\n actions.map.gesture = gesture\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nfunction updateGestureProps ({ interaction, iEvent, phase }: GestureSignalArg) {\n if (interaction.prepared.name !== 'gesture') return\n\n const pointers = interaction.pointers.map((p) => p.pointer)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const deltaSource = interaction.interactable.options.deltaSource\n\n iEvent.touches = [pointers[0], pointers[1]]\n\n if (starting) {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource)\n iEvent.box = pointerUtils.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n } else if (ending) {\n const prevEvent = interaction.prevEvent as GestureEvent\n\n iEvent.distance = prevEvent.distance\n iEvent.box = prevEvent.box\n iEvent.scale = prevEvent.scale\n iEvent.ds = 0\n iEvent.angle = prevEvent.angle\n iEvent.da = 0\n } else {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource)\n iEvent.box = pointerUtils.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource)\n\n iEvent.ds = iEvent.scale - interaction.gesture.scale\n iEvent.da = iEvent.angle - interaction.gesture.angle\n }\n\n interaction.gesture.distance = iEvent.distance\n interaction.gesture.angle = iEvent.angle\n\n if (is.number(iEvent.scale) && iEvent.scale !== Infinity && !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nconst gesture: Plugin = {\n id: 'actions/gesture',\n before: ['actions/drag', 'actions/resize'],\n install,\n listeners: {\n 'interactions:action-start': updateGestureProps,\n 'interactions:action-move': updateGestureProps,\n 'interactions:action-end': updateGestureProps,\n\n 'interactions:new': ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n },\n\n 'auto-start:check': (arg) => {\n if (arg.interaction.pointers.length < 2) {\n return undefined\n }\n\n const gestureOptions = arg.interactable.options.gesture\n\n if (!(gestureOptions && gestureOptions.enabled)) {\n return undefined\n }\n\n arg.action = { name: 'gesture' }\n\n return false\n },\n },\n\n defaults: {},\n\n getCursor () {\n return ''\n },\n}\n\nexport default gesture\n","import type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type {\n ActionMethod,\n ResizableOptions,\n FullRect,\n OrBoolean,\n Point,\n Rect,\n} from '@interactjs/types/index'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = ActionMethod<ResizableOptions>\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n resizable: ResizableMethod\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n resizeAxes: 'x' | 'y' | 'xy'\n resizeStartAspectRatio: number\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n resize: ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n resize?: typeof resize\n }\n}\n\nexport interface ResizeEvent<P extends EventPhase = EventPhase> extends InteractEvent<'resize', P> {\n deltaRect?: FullRect\n edges?: ActionProps['edges']\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n resize.cursors = initCursors(browser)\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10\n\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n Interactable.prototype.resizable = function (this: Interactable, options: ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions.map.resize = resize\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nfunction resizeChecker (arg) {\n const { interaction, interactable, element, rect, buttons } = arg\n\n if (!rect) {\n return undefined\n }\n\n const page = extend({}, interaction.coords.cur.page)\n const resizeOptions = interactable.options.resize\n\n if (\n !(resizeOptions && resizeOptions.enabled) ||\n // check mouseButton setting if the pointer is down\n (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & resizeOptions.mouseButtons) === 0)\n ) {\n return undefined\n }\n\n // if using resize.edges\n if (is.object(resizeOptions.edges)) {\n const resizeEdges = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n }\n\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(\n edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || resize.defaultMargin,\n )\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n arg.action = {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n } else {\n const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin\n const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin\n\n if (right || bottom) {\n arg.action = {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n\n return arg.action ? false : undefined\n}\n\nfunction resizable (interactable: Interactable, options: OrBoolean<ResizableOptions> | boolean, scope: Scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n } else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n } else if (is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (\n name: string,\n value: any,\n page: Point,\n element: Node,\n interactableElement: Element,\n rect: Rect,\n margin: number,\n) {\n // false, '', undefined, null\n if (!value) {\n return false\n }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top\n\n // don't use margin greater than half the relevent dimension\n margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2))\n\n if (width < 0) {\n if (name === 'left') {\n name = 'right'\n } else if (name === 'right') {\n name = 'left'\n }\n }\n if (height < 0) {\n if (name === 'top') {\n name = 'bottom'\n } else if (name === 'bottom') {\n name = 'top'\n }\n }\n\n if (name === 'left') {\n return page.x < (width >= 0 ? rect.left : rect.right) + margin\n }\n if (name === 'top') {\n return page.y < (height >= 0 ? rect.top : rect.bottom) + margin\n }\n\n if (name === 'right') {\n return page.x > (width >= 0 ? rect.right : rect.left) - margin\n }\n if (name === 'bottom') {\n return page.y > (height >= 0 ? rect.bottom : rect.top) - margin\n }\n }\n\n // the remaining checks require an element\n if (!is.element(element)) {\n return false\n }\n\n return is.element(value)\n ? // the value is an element to use as a resize handle\n value === element\n : // otherwise check if element matches value as selector\n dom.matchesUpTo(element, value, interactableElement)\n}\n\n/* eslint-disable multiline-ternary */\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nfunction initCursors (browser: typeof import('@interactjs/utils/browser').default) {\n return browser.isIe9\n ? {\n x: 'e-resize',\n y: 's-resize',\n xy: 'se-resize',\n\n top: 'n-resize',\n left: 'w-resize',\n bottom: 's-resize',\n right: 'e-resize',\n topleft: 'se-resize',\n bottomright: 'se-resize',\n topright: 'ne-resize',\n bottomleft: 'ne-resize',\n }\n : {\n x: 'ew-resize',\n y: 'ns-resize',\n xy: 'nwse-resize',\n\n top: 'ns-resize',\n left: 'ew-resize',\n bottom: 'ns-resize',\n right: 'ew-resize',\n topleft: 'nwse-resize',\n bottomright: 'nwse-resize',\n topright: 'nesw-resize',\n bottomleft: 'nesw-resize',\n }\n}\n/* eslint-enable multiline-ternary */\n\nfunction start ({ iEvent, interaction }: { iEvent: InteractEvent<any, any>, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const resizeEvent = iEvent as ResizeEvent\n const rect = interaction.rect\n\n interaction._rects = {\n start: extend({}, rect),\n corrected: extend({}, rect),\n previous: extend({}, rect),\n delta: {\n left: 0,\n right: 0,\n width: 0,\n top: 0,\n bottom: 0,\n height: 0,\n },\n }\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = interaction._rects.corrected\n resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction move ({ iEvent, interaction }: { iEvent: InteractEvent<any, any>, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return\n\n const resizeEvent = iEvent as ResizeEvent\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n const current = interaction.rect\n const { start: startRect, corrected, delta: deltaRect, previous } = interaction._rects\n\n extend(previous, corrected)\n\n if (invertible) {\n // if invertible, copy the current rect\n extend(corrected, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n if (corrected.top > corrected.bottom) {\n const swap = corrected.top\n\n corrected.top = corrected.bottom\n corrected.bottom = swap\n }\n if (corrected.left > corrected.right) {\n const swap = corrected.left\n\n corrected.left = corrected.right\n corrected.right = swap\n }\n }\n } else {\n // if not invertible, restrict to minimum of 0x0 rect\n corrected.top = Math.min(current.top, startRect.bottom)\n corrected.bottom = Math.max(current.bottom, startRect.top)\n corrected.left = Math.min(current.left, startRect.right)\n corrected.right = Math.max(current.right, startRect.left)\n }\n\n corrected.width = corrected.right - corrected.left\n corrected.height = corrected.bottom - corrected.top\n\n for (const edge in corrected) {\n deltaRect[edge] = corrected[edge] - previous[edge]\n }\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = corrected\n resizeEvent.deltaRect = deltaRect\n}\n\nfunction end ({ iEvent, interaction }: { iEvent: InteractEvent<any, any>, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return\n\n const resizeEvent = iEvent as ResizeEvent\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = interaction._rects.corrected\n resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction updateEventAxes ({\n iEvent,\n interaction,\n}: {\n iEvent: InteractEvent<any, any>\n interaction: Interaction\n}) {\n if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) return\n\n const options = interaction.interactable.options\n const resizeEvent = iEvent as ResizeEvent\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = resizeEvent.delta.y\n } else {\n resizeEvent.delta.y = resizeEvent.delta.x\n }\n resizeEvent.axes = 'xy'\n } else {\n resizeEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n resizeEvent.delta.y = 0\n } else if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = 0\n }\n }\n}\n\nconst resize: Plugin = {\n id: 'actions/resize',\n before: ['actions/drag'],\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.resizeAxes = 'xy'\n },\n\n 'interactions:action-start': (arg) => {\n start(arg)\n updateEventAxes(arg)\n },\n 'interactions:action-move': (arg) => {\n move(arg)\n updateEventAxes(arg)\n },\n 'interactions:action-end': end,\n 'auto-start:check': resizeChecker,\n },\n\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n\n // use default margin\n margin: NaN,\n\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none',\n } as ResizableOptions,\n\n cursors: null as ReturnType<typeof initCursors>,\n\n getCursor ({ edges, axis, name }: ActionProps) {\n const cursors = resize.cursors\n let result: string = null\n\n if (axis) {\n result = cursors[name + axis]\n } else if (edges) {\n let cursorKey = ''\n\n for (const edge of ['top', 'bottom', 'left', 'right']) {\n if (edges[edge]) {\n cursorKey += edge\n }\n }\n\n result = cursors[cursorKey]\n }\n\n return result\n },\n\n defaultMargin: null as number,\n}\n\nexport default resize\n","import type { Scope } from '@interactjs/core/scope'\n\nimport drag from './drag/plugin'\nimport drop from './drop/plugin'\nimport gesture from './gesture/plugin'\nimport resize from './resize/plugin'\n\nexport default {\n id: 'actions',\n install (scope: Scope) {\n scope.usePlugin(gesture)\n scope.usePlugin(resize)\n scope.usePlugin(drag)\n scope.usePlugin(drop)\n },\n}\n","let lastTime = 0\nlet request: typeof requestAnimationFrame\nlet cancel: typeof cancelAnimationFrame\n\nfunction init (global: Window | typeof globalThis) {\n request = global.requestAnimationFrame\n cancel = global.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = global[`${vendor}RequestAnimationFrame` as 'requestAnimationFrame']\n cancel =\n global[`${vendor}CancelAnimationFrame` as 'cancelAnimationFrame'] ||\n global[`${vendor}CancelRequestAnimationFrame` as 'cancelAnimationFrame']\n }\n }\n\n request = request && request.bind(global)\n cancel = cancel && cancel.bind(global)\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n const token = global.setTimeout(() => {\n // eslint-disable-next-line node/no-callback-literal\n callback(currTime + timeToCall)\n }, timeToCall)\n\n lastTime = currTime + timeToCall\n return token as any\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback: FrameRequestCallback) => request(callback),\n cancel: (token: number) => cancel(token),\n init,\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { ActionName, Scope, Plugin } from '@interactjs/core/scope'\nimport type { PointerType } from '@interactjs/types/index'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoScroll: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoScroll?: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n autoScroll?: AutoScrollOptions\n }\n}\n\nexport interface AutoScrollOptions {\n container?: Window | HTMLElement\n margin?: number\n distance?: number\n interval?: number\n speed?: number\n enabled?: boolean\n}\n\nfunction install (scope: Scope) {\n const { defaults, actions } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n actions.phaselessTypes.autoscroll = true\n defaults.perAction.autoScroll = autoScroll.defaults\n}\n\nconst autoScroll = {\n defaults: {\n enabled: false,\n margin: 60,\n\n // the item that is scrolled (Window or HTMLElement)\n container: null as AutoScrollOptions['container'],\n\n // the scroll speed in pixels per second\n speed: 300,\n } as AutoScrollOptions,\n\n now: Date.now,\n\n interaction: null as Interaction,\n i: 0, // the handle returned by window.setInterval\n\n // Direction each pulse is to scroll in\n x: 0,\n y: 0,\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interaction) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = autoScroll.now()\n autoScroll.i = raf.request(autoScroll.scroll)\n },\n\n stop () {\n autoScroll.isScrolling = false\n if (autoScroll.interaction) {\n autoScroll.interaction.autoScroll = null\n }\n raf.cancel(autoScroll.i)\n },\n\n // scroll the window by the values in scroll.x/y\n scroll () {\n const { interaction } = autoScroll\n const { interactable, element } = interaction\n const actionName = interaction.prepared.name\n const options = interactable.options[actionName].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = autoScroll.now()\n // change in time in seconds\n const dt = (now - autoScroll.prevTime) / 1000\n // displacement\n const s = options.speed * dt\n\n if (s >= 1) {\n const scrollBy = {\n x: autoScroll.x * s,\n y: autoScroll.y * s,\n }\n\n if (scrollBy.x || scrollBy.y) {\n const prevScroll = getScroll(container)\n\n if (is.window(container)) {\n container.scrollBy(scrollBy.x, scrollBy.y)\n } else if (container) {\n container.scrollLeft += scrollBy.x\n container.scrollTop += scrollBy.y\n }\n\n const curScroll = getScroll(container)\n const delta = {\n x: curScroll.x - prevScroll.x,\n y: curScroll.y - prevScroll.y,\n }\n\n if (delta.x || delta.y) {\n interactable.fire({\n type: 'autoscroll',\n target: element,\n interactable,\n delta,\n interaction,\n container,\n })\n }\n }\n\n autoScroll.prevTime = now\n }\n\n if (autoScroll.isScrolling) {\n raf.cancel(autoScroll.i)\n autoScroll.i = raf.request(autoScroll.scroll)\n }\n },\n check (interactable: Interactable, actionName: ActionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll?.enabled\n },\n onInteractionMove<T extends ActionName> ({\n interaction,\n pointer,\n }: {\n interaction: Interaction<T>\n pointer: PointerType\n }) {\n if (\n !(interaction.interacting() && autoScroll.check(interaction.interactable, interaction.prepared.name))\n ) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top: boolean\n let right: boolean\n let bottom: boolean\n let left: boolean\n\n const { interactable, element } = interaction\n const actionName = interaction.prepared.name\n const options = interactable.options[actionName].autoScroll\n const container = getContainer(options.container, interactable, element)\n\n if (is.window(container)) {\n left = pointer.clientX < autoScroll.margin\n top = pointer.clientY < autoScroll.margin\n right = pointer.clientX > container.innerWidth - autoScroll.margin\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin\n } else {\n const rect = domUtils.getElementClientRect(container)\n\n left = pointer.clientX < rect.left + autoScroll.margin\n top = pointer.clientY < rect.top + autoScroll.margin\n right = pointer.clientX > rect.right - autoScroll.margin\n bottom = pointer.clientY > rect.bottom - autoScroll.margin\n }\n\n autoScroll.x = right ? 1 : left ? -1 : 0\n autoScroll.y = bottom ? 1 : top ? -1 : 0\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin\n autoScroll.speed = options.speed\n\n autoScroll.start(interaction)\n }\n },\n}\n\nexport function getContainer (value: any, interactable: Interactable, element: Element) {\n return (\n (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n )\n}\n\nexport function getScroll (container: any) {\n if (is.window(container)) {\n container = window.document.body\n }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container: any) {\n if (is.window(container)) {\n container = window.document.body\n }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta<T extends ActionName> (\n {\n interaction,\n element,\n }: {\n interaction: Partial<Interaction<T>>\n element: Element\n },\n func: any,\n) {\n const scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll\n\n if (!scrollOptions || !scrollOptions.enabled) {\n func()\n return { x: 0, y: 0 }\n }\n\n const scrollContainer = getContainer(scrollOptions.container, interaction.interactable, element)\n\n const prevSize = getScroll(scrollContainer)\n func()\n const curSize = getScroll(scrollContainer)\n\n return {\n x: curSize.x - prevSize.x,\n y: curSize.y - prevSize.y,\n }\n}\n\nconst autoScrollPlugin: Plugin = {\n id: 'auto-scroll',\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.autoScroll = null\n },\n\n 'interactions:destroy': ({ interaction }) => {\n interaction.autoScroll = null\n autoScroll.stop()\n if (autoScroll.interaction) {\n autoScroll.interaction = null\n }\n },\n\n 'interactions:stop': autoScroll.stop,\n\n 'interactions:action-move': (arg: any) => autoScroll.onInteractionMove(arg),\n },\n}\n\nexport default autoScrollPlugin\n","import type { ActionProps } from '@interactjs/core/Interaction'\nimport type { ActionName } from '@interactjs/core/scope'\n\nimport { window } from './window'\n\nexport function warnOnce<T> (this: T, method: (...args: any[]) => any, message: string) {\n let warned = false\n\n return function (this: T) {\n if (!warned) {\n ;(window as any).console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\nexport function copyAction<T extends ActionName> (dest: ActionProps<any>, src: ActionProps<T>) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport const sign = (n: number) => (n >= 0 ? 1 : -1)\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, ActionProps } from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerType, PointerEventType, Element } from '@interactjs/types/index'\nimport is from '@interactjs/utils/is'\nimport { warnOnce } from '@interactjs/utils/misc'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: (\n this: Interactable,\n pointer: PointerType,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n ) => ActionProps | null\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: {\n (...args: any[]): Interactable\n (): boolean\n }\n allowFrom: {\n (...args: any[]): Interactable\n (): boolean\n }\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n } = scope\n\n Interactable.prototype.getAction = function getAction (\n this: Interactable,\n pointer: PointerType,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n ): ActionProps {\n const action = defaultActionChecker(this, event, interaction, element, scope)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n }\n\n /**\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * @deprecated\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n * ```\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\n Interactable.prototype.ignoreFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('ignoreFrom', newValue)\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n /**\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * @deprecated\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n * ```\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n Interactable.prototype.allowFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('allowFrom', newValue)\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).')\n\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\n Interactable.prototype.actionChecker = actionChecker\n\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.styleCursor = styleCursor\n}\n\nfunction defaultActionChecker (\n interactable: Interactable,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n scope: Scope,\n) {\n const rect = interactable.getRect(element)\n const buttons =\n (event as MouseEvent).buttons ||\n {\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n }[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n const arg = {\n action: null,\n interactable,\n interaction,\n element,\n rect,\n buttons,\n }\n\n scope.fire('auto-start:check', arg)\n\n return arg.action\n}\n\nfunction styleCursor(this: Interactable): boolean\nfunction styleCursor(this: Interactable, newValue: boolean): typeof this\nfunction styleCursor (this: Interactable, newValue?: boolean) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue\n\n return this\n }\n\n if (newValue === null) {\n delete this.options.styleCursor\n\n return this\n }\n\n return this.options.styleCursor\n}\n\nfunction actionChecker (this: Interactable, checker: any) {\n if (is.func(checker)) {\n this.options.actionChecker = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.options.actionChecker\n\n return this\n }\n\n return this.options.actionChecker\n}\n\nexport default {\n id: 'auto-start/interactableMethods',\n install,\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, ActionProps } from '@interactjs/core/Interaction'\nimport type { Scope, SignalArgs, ActionName, Plugin } from '@interactjs/core/scope'\nimport type { CursorChecker, PointerType, PointerEventType, Element } from '@interactjs/types/index'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport { copyAction } from '@interactjs/utils/misc'\n\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n }\n\n interface SignalArgs {\n 'autoStart:before-start': Omit<SignalArgs['interactions:move'], 'interaction'> & {\n interaction: Interaction<ActionName>\n }\n 'autoStart:prepared': { interaction: Interaction }\n 'auto-start:check': CheckSignalArg\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface BaseDefaults {\n actionChecker?: any\n cursorChecker?: any\n styleCursor?: any\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n cursorChecker?: CursorChecker\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n // TODO: docst\n mouseButtons?: 0 | 1 | 2 | 4 | 8 | 16\n }\n}\n\ninterface CheckSignalArg {\n interactable: Interactable\n interaction: Interaction\n element: Element\n action: ActionProps<ActionName>\n buttons: number\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: Element\n}\n\nfunction install (scope: Scope) {\n const { interactStatic: interact, defaults } = scope\n\n scope.usePlugin(InteractableMethods)\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1,\n })\n\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n interact.maxInteractions = (newValue: number) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n }\n}\n\nfunction prepareOnDown (\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:down'],\n scope: Scope,\n) {\n if (interaction.interacting()) return\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction prepareOnMove (\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:move'],\n scope: Scope,\n) {\n if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) return\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget as Element, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction startOnMove (arg: SignalArgs['interactions:move'], scope: Scope) {\n const { interaction } = arg\n\n if (\n !interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name\n ) {\n return\n }\n\n scope.fire('autoStart:before-start', arg)\n\n const { interactable } = interaction\n const actionName = (interaction as Interaction<ActionName>).prepared.name\n\n if (actionName && interactable) {\n // check manualStart and interaction limit\n if (\n interactable.options[actionName].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)\n ) {\n interaction.stop()\n } else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n setInteractionCursor(interaction, scope)\n }\n }\n}\n\nfunction clearCursorOnStop ({ interaction }: { interaction: Interaction }, scope: Scope) {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element, '', scope)\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction<T extends ActionName> (\n action: ActionProps<T>,\n interactable: Interactable,\n element: Element,\n eventTarget: Node,\n scope: Scope,\n) {\n if (\n interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)\n ) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (\n interaction: Interaction,\n pointer: PointerType,\n event: PointerEventType,\n matches: Interactable[],\n matchElements: Element[],\n eventTarget: Node,\n scope: Scope,\n) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i]\n const matchElement = matchElements[i]\n const matchAction = match.getAction(pointer, event, interaction, matchElement)\n\n if (!matchAction) {\n continue\n }\n\n const action = validateAction<ActionName>(matchAction, match, matchElement, eventTarget, scope)\n\n if (action) {\n return {\n action,\n interactable: match,\n element: matchElement,\n }\n }\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction getActionInfo (\n interaction: Interaction,\n pointer: PointerType,\n event: PointerEventType,\n eventTarget: Node,\n scope: Scope,\n) {\n let matches: Interactable[] = []\n let matchElements: Element[] = []\n\n let element = eventTarget as Element\n\n function pushMatches (interactable: Interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(\n interaction,\n pointer,\n event,\n matches,\n matchElements,\n eventTarget,\n scope,\n )\n\n if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = domUtils.parentNode(element) as Element\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (\n interaction: Interaction,\n {\n action,\n interactable,\n element,\n }: {\n action: ActionProps<any>\n interactable: Interactable\n element: Element\n },\n scope: Scope,\n) {\n action = action || { name: null }\n\n interaction.interactable = interactable\n interaction.element = element\n copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name ? interactable.getRect(element) : null\n\n setInteractionCursor(interaction, scope)\n\n scope.fire('autoStart:prepared', { interaction })\n}\n\nfunction withinInteractionLimit<T extends ActionName> (\n interactable: Interactable,\n element: Element,\n action: ActionProps<T>,\n scope: Scope,\n) {\n const options = interactable.options\n const maxActions = options[action.name].max\n const maxPerElement = options[action.name].maxPerElement\n const autoStartMax = scope.autoStart.maxInteractions\n let activeInteractions = 0\n let interactableCount = 0\n let elementCount = 0\n\n // no actions if any of these values == 0\n if (!(maxActions && maxPerElement && autoStartMax)) {\n return false\n }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) {\n continue\n }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) {\n continue\n }\n\n interactableCount += otherAction === action.name ? 1 : 0\n\n if (interactableCount >= maxActions) {\n return false\n }\n\n if (interaction.element === element) {\n elementCount++\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false\n }\n }\n }\n\n return autoStartMax > 0\n}\n\nfunction maxInteractions (newValue: any, scope: Scope) {\n if (is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: Element, cursor: string, scope: Scope) {\n const { cursorElement: prevCursorElement } = scope.autoStart\n\n if (prevCursorElement && prevCursorElement !== element) {\n prevCursorElement.style.cursor = ''\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor\n element.style.cursor = cursor\n scope.autoStart.cursorElement = cursor ? element : null\n}\n\nfunction setInteractionCursor<T extends ActionName> (interaction: Interaction<T>, scope: Scope) {\n const { interactable, element, prepared } = interaction\n\n if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n // clear previous target element cursor\n if (scope.autoStart.cursorElement) {\n setCursor(scope.autoStart.cursorElement, '', scope)\n }\n\n return\n }\n\n let cursor = ''\n\n if (prepared.name) {\n const cursorChecker = interactable.options[prepared.name].cursorChecker\n\n if (is.func(cursorChecker)) {\n cursor = cursorChecker(prepared, interactable, element, interaction._interacting)\n } else {\n cursor = scope.actions.map[prepared.name].getCursor(prepared)\n }\n }\n\n setCursor(interaction.element, cursor || '', scope)\n}\n\nconst autoStart: Plugin = {\n id: 'auto-start/base',\n before: ['actions'],\n install,\n listeners: {\n 'interactions:down': prepareOnDown,\n 'interactions:move': (arg, scope) => {\n prepareOnMove(arg, scope)\n startOnMove(arg, scope)\n },\n 'interactions:stop': clearCursorOnStop,\n },\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n}\n\nexport default autoStart\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { SignalArgs, Scope, ActionName } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/types/index'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\n\nimport autoStart from './base'\n\nfunction beforeStart ({ interaction, eventTarget, dx, dy }: SignalArgs['interactions:move'], scope: Scope) {\n if (interaction.prepared.name !== 'drag') return\n\n // check if a drag is in the correct axis\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const targetOptions = interaction.interactable.options.drag\n const startAxis = targetOptions.startAxis\n const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy'\n\n interaction.prepared.axis =\n targetOptions.lockAxis === 'start'\n ? (currentAxis[0] as 'x' | 'y') // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis\n\n // if the movement isn't in the startAxis of the interactable\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n ;(interaction as Interaction<ActionName>).prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget as Element\n\n const getDraggable = function (interactable: Interactable): Interactable | void {\n if (interactable === interaction.interactable) return\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer,\n interaction.downEvent,\n interaction,\n element,\n )\n\n if (\n action &&\n action.name === 'drag' &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)\n ) {\n return interactable\n }\n }\n }\n\n // check all interactables\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable)\n\n if (interactable) {\n ;(interaction as Interaction<ActionName>).prepared.name = 'drag'\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element) as Element\n }\n }\n}\n\nfunction checkStartAxis (startAxis: string, interactable: Interactable) {\n if (!interactable) {\n return false\n }\n\n const thisAxis = interactable.options.drag.startAxis\n\n return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n listeners: { 'autoStart:before-start': beforeStart },\n}\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\n\nimport basePlugin from './base'\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n hold?: number\n delay?: number\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoStartHoldTimer?: any\n }\n}\n\nfunction install (scope: Scope) {\n const { defaults } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n}\n\nfunction getHoldDuration (interaction: Interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) {\n return null\n }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nconst hold: Plugin = {\n id: 'auto-start/hold',\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.autoStartHoldTimer = null\n },\n\n 'autoStart:prepared': ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element)\n }, hold)\n }\n },\n\n 'interactions:move': ({ interaction, duplicate }) => {\n if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n interaction.autoStartHoldTimer = null\n }\n },\n\n // prevent regular down->move autoStart\n 'autoStart:before-start': ({ interaction }) => {\n const holdDuration = getHoldDuration(interaction)\n\n if (holdDuration > 0) {\n interaction.prepared.name = null\n }\n },\n },\n getHoldDuration,\n}\nexport default hold\n","import type { Scope } from '@interactjs/core/scope'\n\nimport autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nexport default {\n id: 'auto-start',\n install (scope: Scope) {\n scope.usePlugin(autoStart)\n scope.usePlugin(hold)\n scope.usePlugin(dragAxis)\n },\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerEventType } from '@interactjs/types/index'\nimport { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n preventDefault: typeof preventDefault\n checkAndPreventDefault: (event: Event) => void\n }\n}\n\ntype PreventDefaultValue = 'always' | 'never' | 'auto'\nfunction preventDefault(this: Interactable): PreventDefaultValue\nfunction preventDefault(this: Interactable, newValue: PreventDefaultValue): typeof this\nfunction preventDefault (this: Interactable, newValue?: PreventDefaultValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue\n return this\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue ? 'always' : 'never'\n return this\n }\n\n return this.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable: Interactable, scope: Scope, event: Event) {\n const setting = interactable.options.preventDefault\n\n if (setting === 'never') return\n\n if (setting === 'always') {\n event.preventDefault()\n return\n }\n\n // setting === 'auto'\n\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n const doc = getWindow(event.target).document\n const docOptions = scope.getDocOptions(doc)\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return\n }\n }\n\n // don't preventDefault of pointerdown events\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return\n }\n\n // don't preventDefault on editable elements\n if (\n is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')\n ) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }: { interaction: Interaction, event: PointerEventType }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event as Event)\n }\n}\n\nexport function install (scope: Scope) {\n /** @lends Interactable */\n const { Interactable } = scope\n\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.preventDefault = preventDefault\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.docEvents.push({\n type: 'dragstart',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n if (\n interaction.element &&\n (interaction.element === event.target || nodeContains(interaction.element, event.target))\n ) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n },\n })\n}\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n acc[`interactions:${eventType}`] = onInteractionEvent\n return acc\n }, {} as any),\n}\n","export default {}\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport visualizer from '@interactjs/dev-tools/visualizer/plugin'\nimport type { Element, OptionMethod } from '@interactjs/types/index'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport * as win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n visializer: typeof visualizer\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface BaseDefaults {\n devTools?: DevToolsOptions\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n devTools: OptionMethod<DevToolsOptions>\n }\n}\n\nexport interface DevToolsOptions {\n ignore: { [P in keyof typeof CheckName]?: boolean }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport interface Check {\n name: CheckName\n text: string\n perform: (interaction: Interaction) => boolean\n getInfo: (interaction: Interaction) => any[]\n}\n\nenum CheckName {\n touchAction = 'touchAction',\n boxSizing = 'boxSizing',\n noListeners = 'noListeners',\n}\n\nconst prefix = '[interact.js] '\nconst links = {\n touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing',\n}\n\n// eslint-disable-next-line no-undef\nconst isProduction = process.env.NODE_ENV === 'production'\n\nfunction install (scope: Scope, { logger }: { logger?: Logger } = {}) {\n const { Interactable, defaults } = scope\n\n scope.logger = logger || console\n\n defaults.base.devTools = {\n ignore: {},\n }\n\n Interactable.prototype.devTools = function (options?: object) {\n if (options) {\n extend(this.options.devTools, options)\n return this\n }\n\n return this.options.devTools\n }\n\n scope.usePlugin(visualizer)\n}\n\nconst checks: Check[] = [\n {\n name: CheckName.touchAction,\n perform ({ element }) {\n return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n },\n getInfo ({ element }) {\n return [element, links.touchAction]\n },\n text: 'Consider adding CSS \"touch-action: none\" to this element\\n',\n },\n\n {\n name: CheckName.boxSizing,\n perform (interaction) {\n const { element } = interaction\n\n return (\n interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n )\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo ({ element }) {\n return [element, links.boxSizing]\n },\n },\n\n {\n name: CheckName.noListeners,\n perform (interaction) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n return !moveListeners.length\n },\n getInfo (interaction) {\n return [interaction.prepared.name, interaction.interactable]\n },\n text: 'There are no listeners set for this action',\n },\n]\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n const value = element.style[prop] || win.window.getComputedStyle(element)[prop]\n return styleRe.test((value || '').toString())\n}\n\nfunction parentHasStyle (element: Element, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n let parent = element as HTMLElement\n\n while (is.element(parent)) {\n if (hasStyle(parent, prop, styleRe)) {\n return true\n }\n\n parent = parentNode(parent) as HTMLElement\n }\n\n return false\n}\n\nconst id = 'dev-tools'\nconst defaultExport: Plugin = isProduction\n ? { id, install: () => {} }\n : {\n id,\n install,\n listeners: {\n 'interactions:action-start': ({ interaction }, scope) => {\n for (const check of checks) {\n const options = interaction.interactable && interaction.interactable.options\n\n if (\n !(options && options.devTools && options.devTools.ignore[check.name]) &&\n check.perform(interaction)\n ) {\n scope.logger.warn(prefix + check.text, ...check.getInfo(interaction))\n }\n }\n },\n },\n checks,\n CheckName,\n links,\n prefix,\n }\n\nexport default defaultExport\n","import * as arr from './arr'\nimport is from './is'\n\n// tslint:disable-next-line ban-types\nexport default function clone<T extends Object> (source: T): Partial<T> {\n const dest = {} as Partial<T>\n\n for (const prop in source) {\n const value = source[prop]\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value) as any\n } else if (is.array(value)) {\n dest[prop] = arr.from(value) as typeof value\n } else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","import type { EventPhase } from '@interactjs/core/InteractEvent'\nimport type { Interaction, DoAnyPhaseArg } from '@interactjs/core/Interaction'\nimport type { EdgeOptions, FullRect, Point, Rect } from '@interactjs/types/index'\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { Modifier, ModifierArg, ModifierState } from './base'\n\nexport interface ModificationResult {\n delta: Point\n rectDelta: Rect\n coords: Point\n rect: FullRect\n eventProps: any[]\n changed: boolean\n}\n\ninterface MethodArg {\n phase: EventPhase\n pageCoords: Point\n rect: FullRect\n coords: Point\n preEnd?: boolean\n skipModifiers?: number\n}\n\nexport default class Modification {\n states: ModifierState[] = []\n startOffset: Rect = { left: 0, right: 0, top: 0, bottom: 0 }\n startDelta!: Point\n result!: ModificationResult\n endResult!: Point\n edges!: EdgeOptions\n readonly interaction: Readonly<Interaction>\n\n constructor (interaction: Interaction) {\n this.interaction = interaction\n this.result = createResult()\n }\n\n start ({ phase }: { phase: EventPhase }, pageCoords: Point) {\n const { interaction } = this\n const modifierList = getModifierList(interaction)\n this.prepareStates(modifierList)\n\n this.edges = extend({}, interaction.edges)\n this.startOffset = getRectOffset(interaction.rect, pageCoords)\n this.startDelta = { x: 0, y: 0 }\n\n const arg = this.fillArg({\n phase,\n pageCoords,\n preEnd: false,\n })\n\n this.result = createResult()\n this.startAll(arg)\n\n const result = (this.result = this.setAll(arg))\n\n return result\n }\n\n fillArg (arg: Partial<ModifierArg>) {\n const { interaction } = this\n\n arg.interaction = interaction\n arg.interactable = interaction.interactable\n arg.element = interaction.element\n arg.rect = arg.rect || interaction.rect\n arg.edges = this.edges\n arg.startOffset = this.startOffset\n\n return arg as ModifierArg\n }\n\n startAll (arg: MethodArg & Partial<ModifierArg>) {\n for (const state of this.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg as ModifierArg)\n }\n }\n }\n\n setAll (arg: MethodArg & Partial<ModifierArg>): ModificationResult {\n const { phase, preEnd, skipModifiers, rect: unmodifiedRect } = arg\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, unmodifiedRect)\n\n const states = skipModifiers ? this.states.slice(skipModifiers) : this.states\n\n const newResult = createResult(arg.coords, arg.rect)\n\n for (const state of states) {\n const { options } = state\n const lastModifierCoords = extend({}, arg.coords)\n let returnValue = null\n\n if (state.methods?.set && this.shouldDo(options, preEnd, phase)) {\n arg.state = state\n returnValue = state.methods.set(arg as ModifierArg<never>)\n\n rectUtils.addEdges(this.interaction.edges, arg.rect, {\n x: arg.coords.x - lastModifierCoords.x,\n y: arg.coords.y - lastModifierCoords.y,\n })\n }\n\n newResult.eventProps.push(returnValue)\n }\n\n newResult.delta.x = arg.coords.x - arg.pageCoords.x\n newResult.delta.y = arg.coords.y - arg.pageCoords.y\n\n newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left\n newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right\n newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top\n newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom\n\n const prevCoords = this.result.coords\n const prevRect = this.result.rect\n\n if (prevCoords && prevRect) {\n const rectChanged =\n newResult.rect.left !== prevRect.left ||\n newResult.rect.right !== prevRect.right ||\n newResult.rect.top !== prevRect.top ||\n newResult.rect.bottom !== prevRect.bottom\n\n newResult.changed =\n rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y\n }\n\n return newResult\n }\n\n applyToInteraction (arg: { phase: EventPhase, rect?: Rect }) {\n const { interaction } = this\n const { phase } = arg\n const curCoords = interaction.coords.cur\n const startCoords = interaction.coords.start\n const { result, startDelta } = this\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(this.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [\n [startCoords, startDelta],\n [curCoords, curDelta],\n ] as const) {\n coordsSet.page.x += delta.x\n coordsSet.page.y += delta.y\n coordsSet.client.x += delta.x\n coordsSet.client.y += delta.y\n }\n\n const { rectDelta } = this.result\n const rect = arg.rect || interaction.rect\n\n rect.left += rectDelta.left\n rect.right += rectDelta.right\n rect.top += rectDelta.top\n rect.bottom += rectDelta.bottom\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n setAndApply (\n arg: Partial<DoAnyPhaseArg> & {\n phase: EventPhase\n preEnd?: boolean\n skipModifiers?: number\n modifiedCoords?: Point\n },\n ): void | false {\n const { interaction } = this\n const { phase, preEnd, skipModifiers } = arg\n\n const result = this.setAll(\n this.fillArg({\n preEnd,\n phase,\n pageCoords: arg.modifiedCoords || interaction.coords.cur.page,\n }),\n )\n\n this.result = result\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (\n !result.changed &&\n (!skipModifiers || skipModifiers < this.states.length) &&\n interaction.interacting()\n ) {\n return false\n }\n\n if (arg.modifiedCoords) {\n const { page } = interaction.coords.cur\n const adjustment = {\n x: arg.modifiedCoords.x - page.x,\n y: arg.modifiedCoords.y - page.y,\n }\n\n result.coords.x += adjustment.x\n result.coords.y += adjustment.y\n result.delta.x += adjustment.x\n result.delta.y += adjustment.y\n }\n\n this.applyToInteraction(arg)\n }\n\n beforeEnd (arg: Omit<DoAnyPhaseArg, 'iEvent'> & { state?: ModifierState }): void | false {\n const { interaction, event } = arg\n const states = this.states\n\n if (!states || !states.length) {\n return\n }\n\n let doPreend = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endPosition = methods.beforeEnd && methods.beforeEnd((arg as unknown) as ModifierArg)\n\n if (endPosition) {\n this.endResult = endPosition\n return false\n }\n\n doPreend = doPreend || (!doPreend && this.shouldDo(options, true, arg.phase, true))\n }\n\n if (doPreend) {\n // trigger a final modified move before ending\n interaction.move({ event, preEnd: true })\n }\n }\n\n stop (arg: { interaction: Interaction }) {\n const { interaction } = arg\n\n if (!this.states || !this.states.length) {\n return\n }\n\n const modifierArg: Partial<ModifierArg> = extend(\n {\n states: this.states,\n interactable: interaction.interactable,\n element: interaction.element,\n rect: null,\n },\n arg,\n )\n\n this.fillArg(modifierArg)\n\n for (const state of this.states) {\n modifierArg.state = state\n\n if (state.methods.stop) {\n state.methods.stop(modifierArg as ModifierArg)\n }\n }\n\n this.states = null\n this.endResult = null\n }\n\n prepareStates (modifierList: Modifier[]) {\n this.states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n this.states.push({\n options,\n methods,\n index,\n name,\n })\n }\n\n return this.states\n }\n\n restoreInteractionCoords ({ interaction: { coords, rect, modification } }: { interaction: Interaction }) {\n if (!modification.result) return\n\n const { startDelta } = modification\n const { delta: curDelta, rectDelta } = modification.result\n\n const coordsAndDeltas = [\n [coords.start, startDelta],\n [coords.cur, curDelta],\n ]\n\n for (const [coordsSet, delta] of coordsAndDeltas as any) {\n coordsSet.page.x -= delta.x\n coordsSet.page.y -= delta.y\n coordsSet.client.x -= delta.x\n coordsSet.client.y -= delta.y\n }\n\n rect.left -= rectDelta.left\n rect.right -= rectDelta.right\n rect.top -= rectDelta.top\n rect.bottom -= rectDelta.bottom\n }\n\n shouldDo (options, preEnd?: boolean, phase?: string, requireEndOnly?: boolean) {\n if (\n // ignore disabled modifiers\n !options ||\n options.enabled === false ||\n // check if we require endOnly option to fire move before end\n (requireEndOnly && !options.endOnly) ||\n // don't apply endOnly modifiers when not ending\n (options.endOnly && !preEnd) ||\n // check if modifier should run be applied on start\n (phase === 'start' && !options.setStart)\n ) {\n return false\n }\n\n return true\n }\n\n copyFrom (other: Modification) {\n this.startOffset = other.startOffset\n this.startDelta = other.startDelta\n this.edges = other.edges\n this.states = other.states.map((s) => clone(s) as ModifierState)\n this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect))\n }\n\n destroy () {\n for (const prop in this) {\n this[prop] = null\n }\n }\n}\n\nfunction createResult (coords?: Point, rect?: FullRect): ModificationResult {\n return {\n rect,\n coords,\n delta: { x: 0, y: 0 },\n rectDelta: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n eventProps: [],\n changed: true,\n }\n}\n\nfunction getModifierList (interaction) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return (\n options &&\n options.enabled && {\n options,\n methods: options._methods,\n }\n )\n })\n .filter((m) => !!m)\n}\n\nexport function getRectOffset (rect, coords) {\n return rect\n ? {\n left: coords.x - rect.left,\n top: coords.y - rect.top,\n right: rect.right - coords.x,\n bottom: rect.bottom - coords.y,\n }\n : {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n }\n}\n","import type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Plugin } from '@interactjs/core/scope'\nimport type { EdgeOptions, FullRect, Point, Rect } from '@interactjs/types/index'\n\nimport Modification from './Modification'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modification?: Modification\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n modifiers?: Array<{\n name: string\n [key: string]: any\n }>\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n modifiers?: Modifier[]\n }\n}\n\nexport interface Modifier<\n Defaults = any,\n State extends ModifierState = any,\n Name extends string = any,\n Result = any\n> {\n options: Defaults\n methods: {\n start?: (arg: ModifierArg<State>) => void\n set?: (arg: ModifierArg<State>) => Result\n beforeEnd?: (arg: ModifierArg<State>) => Point | void\n stop?: (arg: ModifierArg<State>) => void\n }\n name?: Name\n enable: () => Modifier<Defaults, State, Name, Result>\n disable: () => Modifier<Defaults, State, Name, Result>\n}\n\nexport type ModifierState<Defaults = unknown, StateProps = unknown, Name extends string = any> = {\n options: Defaults\n methods?: Modifier<Defaults>['methods']\n index?: number\n name?: Name\n} & StateProps\n\nexport interface ModifierArg<State extends ModifierState = ModifierState> {\n interaction: Interaction\n interactable: Interactable\n phase: EventPhase\n rect: FullRect\n edges: EdgeOptions\n state: State\n element: Element\n pageCoords: Point\n prevCoords: Point\n prevRect?: FullRect\n coords: Point\n startOffset: Rect\n preEnd?: boolean\n}\n\nexport interface ModifierModule<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Result = unknown\n> {\n defaults?: Defaults\n start?(arg: ModifierArg<State>): void\n set?(arg: ModifierArg<State>): Result\n beforeEnd?(arg: ModifierArg<State>): Point | void\n stop?(arg: ModifierArg<State>): void\n}\n\nexport interface ModifierFunction<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Name extends string\n> {\n (_options?: Partial<Defaults>): Modifier<Defaults, State, Name>\n _defaults: Defaults\n _methods: ModifierModule<Defaults, State>\n}\n\nexport function makeModifier<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Name extends string,\n Result\n> (module: ModifierModule<Defaults, State, Result>, name?: Name) {\n const { defaults } = module\n const methods = {\n start: module.start,\n set: module.set,\n beforeEnd: module.beforeEnd,\n stop: module.stop,\n }\n\n const modifier = (_options?: Partial<Defaults>) => {\n const options = (_options || {}) as Defaults\n\n options.enabled = options.enabled !== false\n\n // add missing defaults to options\n for (const prop in defaults) {\n if (!(prop in options)) {\n ;(options as any)[prop] = defaults[prop]\n }\n }\n\n const m: Modifier<Defaults, State, Name, Result> = {\n options,\n methods,\n name,\n enable: () => {\n options.enabled = true\n return m\n },\n disable: () => {\n options.enabled = false\n return m\n },\n }\n\n return m\n }\n\n if (name && typeof name === 'string') {\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport function addEventModifiers ({\n iEvent,\n interaction,\n}: {\n iEvent: InteractEvent<any>\n interaction: Interaction<any>\n}) {\n const result = interaction.modification!.result\n\n if (result) {\n iEvent.modifiers = result.eventProps\n }\n}\n\nconst modifiersBase: Plugin = {\n id: 'modifiers/base',\n before: ['actions'],\n install: (scope) => {\n scope.defaults.perAction.modifiers = []\n },\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.modification = new Modification(interaction)\n },\n\n 'interactions:before-action-start': (arg) => {\n const modification = arg.interaction.modification!\n\n modification.start(arg, arg.interaction.coords.start.page)\n arg.interaction.edges = modification.edges\n modification.applyToInteraction(arg)\n },\n\n 'interactions:before-action-move': (arg) => arg.interaction.modification.setAndApply(arg),\n\n 'interactions:before-action-end': (arg) => arg.interaction.modification.beforeEnd(arg),\n\n 'interactions:action-start': addEventModifiers,\n 'interactions:action-move': addEventModifiers,\n 'interactions:action-end': addEventModifiers,\n\n 'interactions:after-action-start': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n 'interactions:after-action-move': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n\n 'interactions:stop': (arg) => arg.interaction.modification.stop(arg),\n },\n}\n\nexport default modifiersBase\n","import type { Point, Listeners, OrBoolean, Element } from '@interactjs/types/index'\n\nexport interface Defaults {\n base: BaseDefaults\n perAction: PerActionDefaults\n actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Node\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Point | string | Element\n listeners?: Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial<BaseDefaults> &\nPartial<PerActionDefaults> &\n{\n [P in keyof ActionDefaults]?: Partial<ActionDefaults[P]>\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, OrBoolean<Partial<ActionDefaults>> {}\n\nexport const defaults: Defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page',\n },\n\n perAction: {\n enabled: false,\n origin: { x: 0, y: 0 },\n },\n\n actions: {} as ActionDefaults,\n}\n","import type { ActionName } from '@interactjs/core/scope'\nimport type { Point, FullRect, PointerEventType, Element } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\n\nimport { BaseEvent } from './BaseEvent'\nimport type { Interaction } from './Interaction'\nimport { defaults } from './options'\n\nexport type EventPhase = keyof PhaseMap\n\nexport interface PhaseMap {\n start: true\n move: true\n end: true\n}\n\n// defined outside of class definition to avoid assignment of undefined during\n// construction\nexport interface InteractEvent {\n pageX: number\n pageY: number\n\n clientX: number\n clientY: number\n\n dx: number\n dy: number\n\n velocityX: number\n velocityY: number\n}\n\nexport class InteractEvent<\n T extends ActionName = never,\n P extends EventPhase = EventPhase\n> extends BaseEvent<T> {\n target: Element\n currentTarget: Element\n relatedTarget: Element | null = null\n screenX?: number\n screenY?: number\n button: number\n buttons: number\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n page: Point\n client: Point\n delta: Point\n rect: FullRect\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Point\n speed: number\n swipe: ReturnType<InteractEvent<T>['getSwipe']>\n timeStamp: any\n // resize\n axes?: 'x' | 'y' | 'xy'\n preEnd?: boolean\n\n /** */\n constructor (\n interaction: Interaction<T>,\n event: PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n super(interaction)\n\n element = element || interaction.element\n\n const target = interaction.interactable\n const deltaSource = (((target && target.options) || defaults) as any).deltaSource as 'page' | 'client'\n const origin = getOriginXY(target, element, actionName)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const prevEvent = starting ? this : interaction.prevEvent\n const coords = starting\n ? interaction.coords.start\n : ending\n ? { page: prevEvent.page, client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp }\n : interaction.coords.cur\n\n this.page = extend({}, coords.page)\n this.client = extend({}, coords.client)\n this.rect = extend({}, interaction.rect)\n this.timeStamp = coords.timeStamp\n\n if (!ending) {\n this.page.x -= origin.x\n this.page.y -= origin.y\n\n this.client.x -= origin.x\n this.client.y -= origin.y\n }\n\n this.ctrlKey = event.ctrlKey\n this.altKey = event.altKey\n this.shiftKey = event.shiftKey\n this.metaKey = event.metaKey\n this.button = (event as MouseEvent).button\n this.buttons = (event as MouseEvent).buttons\n this.target = element\n this.currentTarget = element\n this.preEnd = preEnd\n this.type = type || actionName + (phase || '')\n this.interactable = target\n\n this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0\n\n this.x0 = interaction.coords.start.page.x - origin.x\n this.y0 = interaction.coords.start.page.y - origin.y\n this.clientX0 = interaction.coords.start.client.x - origin.x\n this.clientY0 = interaction.coords.start.client.y - origin.y\n\n if (starting || ending) {\n this.delta = { x: 0, y: 0 }\n } else {\n this.delta = {\n x: this[deltaSource].x - prevEvent[deltaSource].x,\n y: this[deltaSource].y - prevEvent[deltaSource].y,\n }\n }\n\n this.dt = interaction.coords.delta.timeStamp\n this.duration = this.timeStamp - this.t0\n\n // velocity and speed in pixels per second\n this.velocity = extend({}, interaction.coords.velocity[deltaSource])\n this.speed = hypot(this.velocity.x, this.velocity.y)\n\n this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null\n }\n\n getSwipe () {\n const interaction = this._interaction\n\n if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null\n }\n\n let angle = (180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX)) / Math.PI\n const overlap = 22.5\n\n if (angle < 0) {\n angle += 360\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap\n const up = 225 - overlap <= angle && angle < 315 + overlap\n\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap)\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap\n\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY,\n },\n }\n }\n\n preventDefault () {}\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n}\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperties(InteractEvent.prototype, {\n pageX: {\n get () {\n return this.page.x\n },\n set (value) {\n this.page.x = value\n },\n },\n pageY: {\n get () {\n return this.page.y\n },\n set (value) {\n this.page.y = value\n },\n },\n\n clientX: {\n get () {\n return this.client.x\n },\n set (value) {\n this.client.x = value\n },\n },\n clientY: {\n get () {\n return this.client.y\n },\n set (value) {\n this.client.y = value\n },\n },\n\n dx: {\n get () {\n return this.delta.x\n },\n set (value) {\n this.delta.x = value\n },\n },\n dy: {\n get () {\n return this.delta.y\n },\n set (value) {\n this.delta.y = value\n },\n },\n\n velocityX: {\n get () {\n return this.velocity.x\n },\n set (value) {\n this.velocity.x = value\n },\n },\n velocityY: {\n get () {\n return this.velocity.y\n },\n set (value) {\n this.velocity.y = value\n },\n },\n})\n","import type { PointerEventType, PointerType } from '@interactjs/types/index'\n\nexport class PointerInfo {\n id: number\n pointer: PointerType\n event: PointerEventType\n downTime: number\n downTarget: Node\n\n constructor (id: number, pointer: PointerType, event: PointerEventType, downTime: number, downTarget: Node) {\n this.id = id\n this.pointer = pointer\n this.event = event\n this.downTime = downTime\n this.downTarget = downTarget\n }\n}\n","import type { ActionDefaults } from '@interactjs/core/options'\nimport type {\n Element,\n EdgeOptions,\n PointerEventType,\n PointerType,\n FullRect,\n CoordsSet,\n} from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport hypot from '@interactjs/utils/hypot'\nimport { warnOnce, copyAction } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { EventPhase } from './InteractEvent'\nimport { InteractEvent } from './InteractEvent'\nimport type { Interactable } from './Interactable'\nimport { PointerInfo } from './PointerInfo'\nimport type { ActionName, Scope } from './scope'\n\nexport interface ActionProps<T extends ActionName | null = never> {\n name: T\n axis?: 'x' | 'y' | 'xy' | null\n edges?: EdgeOptions | null\n}\n\nexport enum _ProxyValues {\n interactable = '',\n element = '',\n prepared = '',\n pointerIsDown = '',\n pointerWasMoved = '',\n _proxy = '',\n}\n\nexport enum _ProxyMethods {\n start = '',\n move = '',\n end = '',\n stop = '',\n interacting = '',\n}\n\nexport type PointerArgProps<T extends {} = {}> = {\n pointer: PointerType\n event: PointerEventType\n eventTarget: Node\n pointerIndex: number\n pointerInfo: PointerInfo\n interaction: Interaction<never>\n} & T\n\nexport interface DoPhaseArg<T extends ActionName, P extends EventPhase> {\n event: PointerEventType\n phase: EventPhase\n interaction: Interaction<T>\n iEvent: InteractEvent<T, P>\n preEnd?: boolean\n type?: string\n}\n\nexport type DoAnyPhaseArg = DoPhaseArg<ActionName, EventPhase>\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:new': { interaction: Interaction<ActionName> }\n 'interactions:down': PointerArgProps<{\n type: 'down'\n }>\n 'interactions:move': PointerArgProps<{\n type: 'move'\n dx: number\n dy: number\n duplicate: boolean\n }>\n 'interactions:up': PointerArgProps<{\n type: 'up'\n curEventTarget: EventTarget\n }>\n 'interactions:cancel': SignalArgs['interactions:up'] & {\n type: 'cancel'\n curEventTarget: EventTarget\n }\n 'interactions:update-pointer': PointerArgProps<{\n down: boolean\n }>\n 'interactions:remove-pointer': PointerArgProps\n 'interactions:blur': { interaction: Interaction<never>, event: Event, type: 'blur' }\n 'interactions:before-action-start': Omit<DoAnyPhaseArg, 'iEvent'>\n 'interactions:action-start': DoAnyPhaseArg\n 'interactions:after-action-start': DoAnyPhaseArg\n 'interactions:before-action-move': Omit<DoAnyPhaseArg, 'iEvent'>\n 'interactions:action-move': DoAnyPhaseArg\n 'interactions:after-action-move': DoAnyPhaseArg\n 'interactions:before-action-end': Omit<DoAnyPhaseArg, 'iEvent'>\n 'interactions:action-end': DoAnyPhaseArg\n 'interactions:after-action-end': DoAnyPhaseArg\n 'interactions:stop': { interaction: Interaction }\n }\n}\n\nexport type InteractionProxy<T extends ActionName | null = never> = Pick<\nInteraction<T>,\nkeyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nlet idCounter = 0\n\nexport class Interaction<T extends ActionName | null = ActionName> {\n // current interactable being interacted with\n interactable: Interactable = null\n\n // the target element of the interactable\n element: Element = null\n rect: FullRect\n _rects?: {\n start: FullRect\n corrected: FullRect\n previous: FullRect\n delta: FullRect\n }\n edges: EdgeOptions\n\n _scopeFire: Scope['fire']\n\n // action that's ready to be fired on next move event\n prepared: ActionProps<T> = {\n name: null,\n axis: null,\n edges: null,\n }\n\n pointerType: string\n\n // keep track of added pointers\n pointers: PointerInfo[] = []\n\n // pointerdown/mousedown/touchstart event\n downEvent: PointerEventType = null\n\n downPointer: PointerType = {} as PointerType\n\n _latestPointer: {\n pointer: PointerType\n event: PointerEventType\n eventTarget: Node\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n // previous action event\n prevEvent: InteractEvent<T, EventPhase> = null\n\n pointerIsDown = false\n pointerWasMoved = false\n _interacting = false\n _ending = false\n _stopped = true\n _proxy: InteractionProxy<T> = null\n\n simulation = null\n\n /** @internal */ get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = warnOnce(function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n }, 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords: CoordsSet = {\n // Starting InteractEvent pointer coordinates\n start: pointerUtils.newCoords(),\n // Previous native pointer move event coordinates\n prev: pointerUtils.newCoords(),\n // current native pointer move event coordinates\n cur: pointerUtils.newCoords(),\n // Change in coordinates and time of the pointer\n delta: pointerUtils.newCoords(),\n // pointer velocity\n velocity: pointerUtils.newCoords(),\n }\n\n readonly _id: number = idCounter++\n\n /** */\n constructor ({ pointerType, scopeFire }: { pointerType?: string, scopeFire: Scope['fire'] }) {\n this._scopeFire = scopeFire\n this.pointerType = pointerType\n\n const that = this\n\n this._proxy = {} as InteractionProxy<T>\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get () {\n return that[key]\n },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args: any[]) => that[key](...args),\n })\n }\n\n this._scopeFire('interactions:new', { interaction: this })\n }\n\n pointerDown (pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n const pointerInfo = this.pointers[pointerIndex]\n\n this._scopeFire('interactions:down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n pointerInfo,\n type: 'down',\n interaction: (this as unknown) as Interaction<never>,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.<action>able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {Boolean} Whether the interaction was successfully started\n */\n start<A extends ActionName> (action: ActionProps<A>, interactable: Interactable, element: Element): boolean {\n if (\n this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === 'gesture' ? 2 : 1) ||\n !interactable.options[action.name as keyof ActionDefaults].enabled\n ) {\n return false\n }\n\n copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = this.prepared.edges\n ? extend({}, this.prepared.edges)\n : { left: true, right: true, top: true, bottom: true }\n this._stopped = false\n this._interacting =\n this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: 'start',\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove (pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n if (!this.simulation && !(this.modification && this.modification.endResult)) {\n this.updatePointer(pointer, event, eventTarget, false)\n }\n\n const duplicateMove =\n this.coords.cur.page.x === this.coords.prev.page.x &&\n this.coords.cur.page.y === this.coords.prev.page.y &&\n this.coords.cur.client.x === this.coords.prev.client.x &&\n this.coords.cur.client.y === this.coords.prev.client.y\n\n let dx: number\n let dy: number\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x\n dy = this.coords.cur.client.y - this.coords.start.client.y\n\n this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const pointerIndex = this.getPointerIndex(pointer)\n const signalArg = {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n type: 'move' as const,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: (this as unknown) as Interaction<never>,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._scopeFire('interactions:move', signalArg)\n\n if (!duplicateMove && !this.simulation) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n signalArg.type = null\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur)\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n move (signalArg?: any) {\n if (!signalArg || !signalArg.event) {\n pointerUtils.setZeroCoords(this.coords.delta)\n }\n\n signalArg = extend(\n {\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n },\n signalArg || {},\n )\n\n signalArg.phase = 'move'\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: PointerType, event: PointerEventType, eventTarget: Node, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n const type = /cancel$/i.test(event.type) ? 'cancel' : 'up'\n\n this._scopeFire(`interactions:${type}` as 'interactions:up' | 'interactions:cancel', {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n eventTarget,\n type: type as any,\n curEventTarget,\n interaction: (this as unknown) as Interaction<never>,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.removePointer(pointer, event)\n }\n\n documentBlur (event: Event) {\n this.end(event as any)\n this._scopeFire('interactions:blur', {\n event,\n type: 'blur',\n interaction: (this as unknown) as Interaction<never>,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n end (event?: PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult: boolean\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: 'end',\n })\n }\n\n this._ending = false\n\n if (endPhaseResult === true) {\n this.stop()\n }\n }\n\n currentAction () {\n return this._interacting ? this.prepared.name : null\n }\n\n interacting () {\n return this._interacting\n }\n\n /** */\n stop () {\n this._scopeFire('interactions:stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this._stopped = true\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer: PointerType) {\n const pointerId = pointerUtils.getPointerId(pointer)\n\n // mouse and pen interactions may have only one pointer\n return this.pointerType === 'mouse' || this.pointerType === 'pen'\n ? this.pointers.length - 1\n : arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer: any) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: PointerType, event: PointerEventType, eventTarget: Node, down?: boolean) {\n const id = pointerUtils.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false ? false : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(id, pointer, event, null, null)\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n } else {\n pointerInfo.pointer = pointer\n }\n\n pointerUtils.setCoords(\n this.coords.cur,\n this.pointers.map((p) => p.pointer),\n this._now(),\n )\n pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n\n if (down) {\n this.pointerIsDown = true\n\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n pointerUtils.pointerExtend(this.downPointer, pointer)\n\n if (!this.interacting()) {\n pointerUtils.copyCoords(this.coords.start, this.coords.cur)\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur)\n\n this.downEvent = event\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._scopeFire('interactions:update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: (this as unknown) as Interaction<never>,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer: PointerType, event: PointerEventType) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) return\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._scopeFire('interactions:remove-pointer', {\n pointer,\n event,\n eventTarget: null,\n pointerIndex,\n pointerInfo,\n interaction: (this as unknown) as Interaction<never>,\n })\n\n this.pointers.splice(pointerIndex, 1)\n this.pointerIsDown = false\n }\n\n _updateLatestPointer (pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n destroy () {\n this._latestPointer.pointer = null\n this._latestPointer.event = null\n this._latestPointer.eventTarget = null\n }\n\n _createPreparedEvent<P extends EventPhase> (\n event: PointerEventType,\n phase: P,\n preEnd?: boolean,\n type?: string,\n ) {\n return new InteractEvent<T, P>(this, event, this.prepared.name, phase, this.element, preEnd, type)\n }\n\n _fireEvent<P extends EventPhase> (iEvent: InteractEvent<T, P>) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase<P extends EventPhase> (\n signalArg: Omit<DoPhaseArg<T, P>, 'iEvent'> & { iEvent?: InteractEvent<T, P> },\n ) {\n const { event, phase, preEnd, type } = signalArg\n const { rect } = this\n\n if (rect && phase === 'move') {\n // update the rect changes due to pointer move\n rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource])\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n const beforeResult = this._scopeFire(`interactions:before-action-${phase}` as any, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n\n const iEvent = (signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type))\n\n this._scopeFire(`interactions:action-${phase}` as any, signalArg)\n\n if (phase === 'start') {\n this.prevEvent = iEvent\n }\n\n this._fireEvent(iEvent)\n\n this._scopeFire(`interactions:after-action-${phase}` as any, signalArg)\n\n return true\n }\n\n _now () {\n return Date.now()\n }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","import type Interaction from '@interactjs/core/Interaction'\nimport { _ProxyMethods } from '@interactjs/core/Interaction'\nimport type { Plugin } from '@interactjs/core/scope'\nimport type { Point } from '@interactjs/types/index'\nimport * as rectUtils from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n offsetBy?: typeof offsetBy\n offset: {\n total: Point\n pending: Point\n }\n }\n\n enum _ProxyMethods {\n offsetBy = '',\n }\n}\n\n;(_ProxyMethods as any).offsetBy = ''\n\nexport function addTotal (interaction: Interaction) {\n if (!interaction.pointerIsDown) {\n return\n }\n\n addToCoords(interaction.coords.cur, interaction.offset.total)\n\n interaction.offset.pending.x = 0\n interaction.offset.pending.y = 0\n}\n\nfunction beforeAction ({ interaction }: { interaction: Interaction }) {\n applyPending(interaction)\n}\n\nfunction beforeEnd ({ interaction }: { interaction: Interaction }): boolean | void {\n const hadPending = applyPending(interaction)\n\n if (!hadPending) return\n\n interaction.move({ offset: true })\n interaction.end()\n\n return false\n}\n\nfunction end ({ interaction }: { interaction: Interaction }) {\n interaction.offset.total.x = 0\n interaction.offset.total.y = 0\n interaction.offset.pending.x = 0\n interaction.offset.pending.y = 0\n}\n\nexport function applyPending (interaction: Interaction) {\n if (!hasPending(interaction)) {\n return false\n }\n\n const { pending } = interaction.offset\n\n addToCoords(interaction.coords.cur, pending)\n addToCoords(interaction.coords.delta, pending)\n rectUtils.addEdges(interaction.edges, interaction.rect, pending)\n\n pending.x = 0\n pending.y = 0\n\n return true\n}\n\nfunction offsetBy (this: Interaction, { x, y }: Point) {\n this.offset.pending.x += x\n this.offset.pending.y += y\n\n this.offset.total.x += x\n this.offset.total.y += y\n}\n\nfunction addToCoords ({ page, client }, { x, y }: Point) {\n page.x += x\n page.y += y\n client.x += x\n client.y += y\n}\n\nfunction hasPending (interaction: Interaction) {\n return !!(interaction.offset.pending.x || interaction.offset.pending.y)\n}\n\nconst offset: Plugin = {\n id: 'offset',\n before: ['modifiers', 'pointer-events', 'actions', 'inertia'],\n install (scope) {\n scope.Interaction.prototype.offsetBy = offsetBy\n },\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.offset = {\n total: { x: 0, y: 0 },\n pending: { x: 0, y: 0 },\n }\n },\n 'interactions:update-pointer': ({ interaction }) => addTotal(interaction),\n 'interactions:before-action-start': beforeAction,\n 'interactions:before-action-move': beforeAction,\n 'interactions:before-action-end': beforeEnd,\n 'interactions:stop': end,\n },\n}\n\nexport default offset\n","import type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { ActionName, Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport Modification from '@interactjs/modifiers/Modification'\nimport * as modifiers from '@interactjs/modifiers/base'\nimport offset from '@interactjs/offset/plugin'\nimport type { Point, PointerEventType } from '@interactjs/types/index'\nimport * as dom from '@interactjs/utils/domUtils'\nimport hypot from '@interactjs/utils/hypot'\nimport is from '@interactjs/utils/is'\nimport { copyCoords } from '@interactjs/utils/pointerUtils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface PhaseMap {\n resume?: true\n inertiastart?: true\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: InertiaState\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n inertia?: {\n enabled?: boolean\n resistance?: number // the lambda in exponential decay\n minSpeed?: number // target speed must be above this for inertia to start\n endSpeed?: number // the speed at which inertia is slow enough to stop\n allowResume?: true // allow resuming an action in inertia phase\n smoothEndDuration?: number // animate to snap/restrict endOnly if there's no inertia\n }\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:before-action-inertiastart': Omit<DoPhaseArg<ActionName, 'inertiastart'>, 'iEvent'>\n 'interactions:action-inertiastart': DoPhaseArg<ActionName, 'inertiastart'>\n 'interactions:after-action-inertiastart': DoPhaseArg<ActionName, 'inertiastart'>\n 'interactions:before-action-resume': Omit<DoPhaseArg<ActionName, 'resume'>, 'iEvent'>\n 'interactions:action-resume': DoPhaseArg<ActionName, 'resume'>\n 'interactions:after-action-resume': DoPhaseArg<ActionName, 'resume'>\n }\n}\n\nfunction install (scope: Scope) {\n const { defaults } = scope\n\n scope.usePlugin(offset)\n scope.usePlugin(modifiers.default)\n scope.actions.phases.inertiastart = true\n scope.actions.phases.resume = true\n\n defaults.perAction.inertia = {\n enabled: false,\n resistance: 10, // the lambda in exponential decay\n minSpeed: 100, // target speed must be above this for inertia to start\n endSpeed: 10, // the speed at which inertia is slow enough to stop\n allowResume: true, // allow resuming an action in inertia phase\n smoothEndDuration: 300, // animate to snap/restrict endOnly if there's no inertia\n }\n}\n\nexport class InertiaState {\n active = false\n isModified = false\n smoothEnd = false\n allowResume = false\n\n modification!: Modification\n modifierCount = 0\n modifierArg!: modifiers.ModifierArg\n\n startCoords!: Point\n t0 = 0\n v0 = 0\n\n te = 0\n targetOffset!: Point\n modifiedOffset!: Point\n currentOffset!: Point\n\n lambda_v0? = 0 // eslint-disable-line camelcase\n one_ve_v0? = 0 // eslint-disable-line camelcase\n timeout!: number\n readonly interaction: Interaction\n\n constructor (interaction: Interaction) {\n this.interaction = interaction\n }\n\n start (event: PointerEventType) {\n const { interaction } = this\n const options = getOptions(interaction)\n\n if (!options || !options.enabled) {\n return false\n }\n\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = hypot(velocityClient.x, velocityClient.y)\n const modification = this.modification || (this.modification = new Modification(interaction))\n\n modification.copyFrom(interaction.modification)\n\n this.t0 = interaction._now()\n this.allowResume = options.allowResume\n this.v0 = pointerSpeed\n this.currentOffset = { x: 0, y: 0 }\n this.startCoords = interaction.coords.cur.page\n\n this.modifierArg = modification.fillArg({\n pageCoords: this.startCoords,\n preEnd: true,\n phase: 'inertiastart',\n })\n\n const thrown =\n this.t0 - interaction.coords.cur.timeStamp < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed\n\n if (thrown) {\n this.startInertia()\n } else {\n modification.result = modification.setAll(this.modifierArg)\n\n if (!modification.result.changed) {\n return false\n }\n\n this.startSmoothEnd()\n }\n\n // force modification change\n interaction.modification.result.rect = null\n\n // bring inertiastart event to the target coords\n interaction.offsetBy(this.targetOffset)\n interaction._doPhase({\n interaction,\n event,\n phase: 'inertiastart',\n })\n interaction.offsetBy({ x: -this.targetOffset.x, y: -this.targetOffset.y })\n // force modification change\n interaction.modification.result.rect = null\n\n this.active = true\n interaction.simulation = this\n\n return true\n }\n\n startInertia () {\n const startVelocity = this.interaction.coords.velocity.client\n const options = getOptions(this.interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / this.v0) / lambda\n\n this.targetOffset = {\n x: (startVelocity.x - inertiaDur) / lambda,\n y: (startVelocity.y - inertiaDur) / lambda,\n }\n\n this.te = inertiaDur\n this.lambda_v0 = lambda / this.v0\n this.one_ve_v0 = 1 - options.endSpeed / this.v0\n\n const { modification, modifierArg } = this\n\n modifierArg.pageCoords = {\n x: this.startCoords.x + this.targetOffset.x,\n y: this.startCoords.y + this.targetOffset.y,\n }\n\n modification.result = modification.setAll(modifierArg)\n\n if (modification.result.changed) {\n this.isModified = true\n this.modifiedOffset = {\n x: this.targetOffset.x + modification.result.delta.x,\n y: this.targetOffset.y + modification.result.delta.y,\n }\n }\n\n this.onNextFrame(() => this.inertiaTick())\n }\n\n startSmoothEnd () {\n this.smoothEnd = true\n this.isModified = true\n this.targetOffset = {\n x: this.modification.result.delta.x,\n y: this.modification.result.delta.y,\n }\n\n this.onNextFrame(() => this.smoothEndTick())\n }\n\n onNextFrame (tickFn: () => void) {\n this.timeout = raf.request(() => {\n if (this.active) {\n tickFn()\n }\n })\n }\n\n inertiaTick () {\n const { interaction } = this\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = (interaction._now() - this.t0) / 1000\n\n if (t < this.te) {\n const progress = 1 - (Math.exp(-lambda * t) - this.lambda_v0) / this.one_ve_v0\n let newOffset: Point\n\n if (this.isModified) {\n newOffset = getQuadraticCurvePoint(\n 0,\n 0,\n this.targetOffset.x,\n this.targetOffset.y,\n this.modifiedOffset.x,\n this.modifiedOffset.y,\n progress,\n )\n } else {\n newOffset = {\n x: this.targetOffset.x * progress,\n y: this.targetOffset.y * progress,\n }\n }\n\n const delta = { x: newOffset.x - this.currentOffset.x, y: newOffset.y - this.currentOffset.y }\n\n this.currentOffset.x += delta.x\n this.currentOffset.y += delta.y\n\n interaction.offsetBy(delta)\n interaction.move()\n\n this.onNextFrame(() => this.inertiaTick())\n } else {\n interaction.offsetBy({\n x: this.modifiedOffset.x - this.currentOffset.x,\n y: this.modifiedOffset.y - this.currentOffset.y,\n })\n\n this.end()\n }\n }\n\n smoothEndTick () {\n const { interaction } = this\n const t = interaction._now() - this.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n const newOffset = {\n x: easeOutQuad(t, 0, this.targetOffset.x, duration),\n y: easeOutQuad(t, 0, this.targetOffset.y, duration),\n }\n const delta = {\n x: newOffset.x - this.currentOffset.x,\n y: newOffset.y - this.currentOffset.y,\n }\n\n this.currentOffset.x += delta.x\n this.currentOffset.y += delta.y\n\n interaction.offsetBy(delta)\n interaction.move({ skipModifiers: this.modifierCount })\n\n this.onNextFrame(() => this.smoothEndTick())\n } else {\n interaction.offsetBy({\n x: this.targetOffset.x - this.currentOffset.x,\n y: this.targetOffset.y - this.currentOffset.y,\n })\n\n this.end()\n }\n }\n\n resume ({ pointer, event, eventTarget }: SignalArgs['interactions:down']) {\n const { interaction } = this\n\n // undo inertia changes to interaction coords\n interaction.offsetBy({\n x: -this.currentOffset.x,\n y: -this.currentOffset.y,\n })\n\n // update pointer at pointer down position\n interaction.updatePointer(pointer, event, eventTarget, true)\n\n // fire resume signals and event\n interaction._doPhase({\n interaction,\n event,\n phase: 'resume',\n })\n copyCoords(interaction.coords.prev, interaction.coords.cur)\n\n this.stop()\n }\n\n end () {\n this.interaction.move()\n this.interaction.end()\n this.stop()\n }\n\n stop () {\n this.active = this.smoothEnd = false\n this.interaction.simulation = null\n raf.cancel(this.timeout)\n }\n}\n\nfunction start ({ interaction, event }: DoPhaseArg<ActionName, 'end'>) {\n if (!interaction._interacting || interaction.simulation) {\n return null\n }\n\n const started = interaction.inertia.start(event)\n\n // prevent action end if inertia or smoothEnd\n return started ? false : null\n}\n\n// Check if the down event hits the current inertia target\n// control should be return to the user\nfunction resume (arg: SignalArgs['interactions:down']) {\n const { interaction, eventTarget } = arg\n const state = interaction.inertia\n\n if (!state.active) return\n\n let element = eventTarget as Node\n\n // climb up the DOM tree from the event target\n while (is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n state.resume(arg)\n break\n }\n\n element = dom.parentNode(element)\n }\n}\n\nfunction stop ({ interaction }: { interaction: Interaction }) {\n const state = interaction.inertia\n\n if (state.active) {\n state.stop()\n }\n}\n\nfunction getOptions ({ interactable, prepared }: Interaction) {\n return interactable && interactable.options && prepared.name && interactable.options[prepared.name].inertia\n}\n\nconst inertia: Plugin = {\n id: 'inertia',\n before: ['modifiers', 'actions'],\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.inertia = new InertiaState(interaction)\n },\n\n 'interactions:before-action-end': start,\n 'interactions:down': resume,\n 'interactions:stop': stop,\n\n 'interactions:before-action-resume': (arg) => {\n const { modification } = arg.interaction\n\n modification.stop(arg)\n modification.start(arg, arg.interaction.coords.cur.page)\n modification.applyToInteraction(arg)\n },\n\n 'interactions:before-action-inertiastart': (arg) => arg.interaction.modification.setAndApply(arg),\n 'interactions:action-resume': modifiers.addEventModifiers,\n 'interactions:action-inertiastart': modifiers.addEventModifiers,\n 'interactions:after-action-inertiastart': (arg) =>\n arg.interaction.modification.restoreInteractionCoords(arg),\n 'interactions:after-action-resume': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n },\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nfunction _getQBezierValue (t: number, p1: number, p2: number, p3: number) {\n const iT = 1 - t\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nfunction getQuadraticCurvePoint (\n startX: number,\n startY: number,\n cpX: number,\n cpY: number,\n endX: number,\n endY: number,\n position: number,\n) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nfunction easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport default inertia\n","import type { Listener, ListenersArg, Rect } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport type { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport normalize from '@interactjs/utils/normalizeListeners'\n\nfunction fireUntilImmediateStopped (event: any, listeners: Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) {\n break\n }\n\n listener(event)\n }\n}\n\nexport class Eventable {\n options: any\n types: NormalizedListeners = {}\n propagationStopped = false\n immediatePropagationStopped = false\n global: any\n\n constructor (options?: { [index: string]: any }) {\n this.options = extend({}, options || {})\n }\n\n fire<T extends { type: string, propagationStopped?: boolean }> (event: T) {\n let listeners: Listener[]\n const global = this.global\n\n // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n if ((listeners = this.types[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n\n // interact.on() listeners\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n }\n\n on (type: string, listener: ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n this.types[type] = arr.merge(this.types[type] || [], listeners[type])\n }\n }\n\n off (type: string, listener: ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n const eventList = this.types[type]\n\n if (!eventList || !eventList.length) {\n continue\n }\n\n for (const subListener of listeners[type]) {\n const index = eventList.indexOf(subListener)\n\n if (index !== -1) {\n eventList.splice(index, 1)\n }\n }\n }\n }\n\n getRect (_element: Element): Rect {\n return null\n }\n}\n","import type { Actions } from '@interactjs/core/scope'\n\nexport default function isNonNativeEvent (type: string, actions: Actions) {\n if (actions.phaselessTypes[type]) {\n return true\n }\n\n for (const name in actions.map) {\n if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n return true\n }\n }\n\n return false\n}\n","/** @module interact */\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Context, EventTypes, Listener, ListenersArg, Target, Element } from '@interactjs/types/index'\nimport browser from '@interactjs/utils/browser'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport { warnOnce } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport type { Interactable } from './Interactable'\nimport isNonNativeEvent from './isNonNativeEvent'\nimport type { Options } from './options'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n (target: Target, options?: Options): Interactable\n getPointerAverage: typeof pointerUtils.pointerAverage\n getTouchBBox: typeof pointerUtils.touchBBox\n getTouchDistance: typeof pointerUtils.touchDistance\n getTouchAngle: typeof pointerUtils.touchAngle\n getElementRect: typeof domUtils.getElementRect\n getElementClientRect: typeof domUtils.getElementClientRect\n matchesSelector: typeof domUtils.matchesSelector\n closest: typeof domUtils.closest\n /** @internal */ globalEvents: any\n version: string\n /** @internal */ scope: Scope\n use(\n plugin: Plugin,\n options?: {\n [key: string]: any\n },\n ): any\n isSet(target: Element, options?: any): boolean\n on(type: string | EventTypes, listener: ListenersArg, options?: object): any\n off(type: EventTypes, listener: any, options?: object): any\n debug(): any\n supportsTouch(): boolean\n supportsPointerEvent(): boolean\n stop(): any\n pointerMoveTolerance(newValue?: number): any\n addDocument(doc: Document, options?: object): void\n removeDocument(doc: Document): void\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\ntype _InteractStatic = import('@interactjs/core/InteractStatic').InteractStatic\n\nexport function createInteractStatic (scope: Scope): _InteractStatic {\n /**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\n const interact = ((target: Target, options: Options) => {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = interact.globalEvents\n }\n\n return interactable\n }) as _InteractStatic\n\n // expose the functions used to calculate multi-touch properties\n interact.getPointerAverage = pointerUtils.pointerAverage\n interact.getTouchBBox = pointerUtils.touchBBox\n interact.getTouchDistance = pointerUtils.touchDistance\n interact.getTouchAngle = pointerUtils.touchAngle\n\n interact.getElementRect = domUtils.getElementRect\n interact.getElementClientRect = domUtils.getElementClientRect\n interact.matchesSelector = domUtils.matchesSelector\n interact.closest = domUtils.closest\n\n interact.globalEvents = {} as any\n\n // eslint-disable-next-line no-undef\n interact.version = process.env.npm_package_version\n interact.scope = scope\n /**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n */\n interact.use = function (plugin, options) {\n this.scope.usePlugin(plugin, options)\n\n return this\n }\n\n /**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Target} target The Element or string being searched for\n * @param {object} options\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\n interact.isSet = function (target: Target, options?: { context?: Context }): boolean {\n return !!this.scope.interactables.get(target, options && options.context)\n }\n\n /**\n * @deprecated\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\n interact.on = warnOnce(function on (type: string | EventTypes, listener: ListenersArg, options?: object) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (is.array(type)) {\n for (const eventType of type as any[]) {\n this.on(eventType, listener, options)\n }\n\n return this\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.on(prop, (type as any)[prop], listener)\n }\n\n return this\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (isNonNativeEvent(type, this.scope.actions)) {\n // if this type of event was never bound\n if (!this.globalEvents[type]) {\n this.globalEvents[type] = [listener]\n } else {\n this.globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n this.scope.events.add(this.scope.document, type, listener as Listener, { options })\n }\n\n return this\n }, 'The interact.on() method is being deprecated')\n\n /**\n * @deprecated\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\n interact.off = warnOnce(function off (type: EventTypes, listener: any, options?: object) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (is.array(type)) {\n for (const eventType of type) {\n this.off(eventType, listener, options)\n }\n\n return this\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.off(prop, type[prop], listener)\n }\n\n return this\n }\n\n if (isNonNativeEvent(type, this.scope.actions)) {\n let index: number\n\n if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n this.globalEvents[type].splice(index, 1)\n }\n } else {\n this.scope.events.remove(this.scope.document, type, listener, options)\n }\n\n return this\n }, 'The interact.off() method is being deprecated')\n\n interact.debug = function () {\n return this.scope\n }\n\n /**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\n interact.supportsTouch = function () {\n return browser.supportsTouch\n }\n\n /**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\n interact.supportsPointerEvent = function () {\n return browser.supportsPointerEvent\n }\n\n /**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */\n interact.stop = function () {\n for (const interaction of this.scope.interactions.list) {\n interaction.stop()\n }\n\n return this\n }\n\n /**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\n interact.pointerMoveTolerance = function (newValue?: number) {\n if (is.number(newValue)) {\n this.scope.interactions.pointerMoveTolerance = newValue\n\n return this\n }\n\n return this.scope.interactions.pointerMoveTolerance\n }\n\n interact.addDocument = function (doc: Document, options?: object) {\n this.scope.addDocument(doc, options)\n }\n\n interact.removeDocument = function (doc: Document) {\n this.scope.removeDocument(doc)\n }\n\n return interact\n}\n","/* eslint-disable no-dupe-class-members */\nimport type { ActionMap, ActionName, Actions, Scope } from '@interactjs/core/scope'\nimport type {\n Context,\n Element,\n Target,\n Listeners,\n OrBoolean,\n EventTypes,\n ListenersArg,\n ActionMethod,\n} from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\n\nimport { Eventable } from './Eventable'\nimport isNonNativeEvent from './isNonNativeEvent'\nimport type { ActionDefaults, Defaults, OptionsArg, PerActionDefaults } from './options'\nimport { Options } from './options'\n\ntype IgnoreValue = string | Element | boolean\ntype DeltaSource = 'page' | 'client'\n\n/** */\nexport class Interactable implements Partial<Eventable> {\n /** @internal */ get _defaults (): Defaults {\n return {\n base: {},\n perAction: {},\n actions: {} as ActionDefaults,\n }\n }\n\n readonly options!: Required<Options>\n readonly _actions: Actions\n readonly target: Target\n readonly events = new Eventable()\n readonly _context: Context\n readonly _win: Window\n readonly _doc: Document\n readonly _scopeEvents: Scope['events']\n\n /** @internal */ _rectChecker?: typeof Interactable.prototype.getRect\n\n /** */\n constructor (\n target: Target,\n options: any,\n defaultContext: Document | Element,\n scopeEvents: Scope['events'],\n ) {\n this._actions = options.actions\n this.target = target\n this._context = options.context || defaultContext\n this._win = getWindow(trySelector(target) ? this._context : target)\n this._doc = this._win.document\n this._scopeEvents = scopeEvents\n\n this.set(options)\n }\n\n setOnEvents (actionName: ActionName, phases: NonNullable<any>) {\n if (is.func(phases.onstart)) {\n this.on(`${actionName}start`, phases.onstart)\n }\n if (is.func(phases.onmove)) {\n this.on(`${actionName}move`, phases.onmove)\n }\n if (is.func(phases.onend)) {\n this.on(`${actionName}end`, phases.onend)\n }\n if (is.func(phases.oninertiastart)) {\n this.on(`${actionName}inertiastart`, phases.oninertiastart)\n }\n\n return this\n }\n\n updatePerActionListeners (actionName: ActionName, prev: Listeners, cur: Listeners) {\n if (is.array(prev) || is.object(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur) || is.object(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName: ActionName, options: OrBoolean<Options>) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName_ in options) {\n const optionName = optionName_ as keyof PerActionDefaults\n const actionOptions = this.options[actionName]\n const optionValue: any = options[optionName]\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue as Listeners)\n }\n\n // if the option value is an array\n if (is.array(optionValue)) {\n ;(actionOptions[optionName] as any) = arr.from(optionValue)\n }\n // if the option value is an object\n else if (is.plainObject(optionValue)) {\n // copy the object\n ;(actionOptions[optionName] as any) = extend(\n actionOptions[optionName] || ({} as any),\n clone(optionValue),\n )\n\n // set anabled field to true if it exists in the defaults\n if (\n is.object(defaults.perAction[optionName]) &&\n 'enabled' in (defaults.perAction[optionName] as any)\n ) {\n ;(actionOptions[optionName] as any).enabled = optionValue.enabled !== false\n }\n }\n // if the option value is a boolean and the default is an object\n else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n ;(actionOptions[optionName] as any).enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n ;(actionOptions[optionName] as any) = optionValue\n }\n }\n }\n\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {Rect} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target) ? this.target : null)\n\n if (is.string(this.target)) {\n element = element || this._context.querySelector(this.target)\n }\n\n return getElementRect(element)\n }\n\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n rectChecker(): (element: Element) => any | null\n rectChecker(checker: (element: Element) => any): this\n rectChecker (checker?: (element: Element) => any) {\n if (is.func(checker)) {\n this._rectChecker = checker\n\n this.getRect = (element) => {\n const rect = extend({}, this._rectChecker(element))\n\n if (!(('width' in rect) as unknown)) {\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n return rect\n }\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n delete this._rectChecker\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName: keyof Options, newValue: any) {\n if (trySelector(newValue) || is.object(newValue)) {\n ;(this.options[optionName] as any) = newValue\n\n for (const action in this._actions.map) {\n ;(this.options[action as keyof ActionMap] as any)[optionName] = newValue\n }\n\n return this\n }\n\n return this.options[optionName]\n }\n\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n origin (newValue: any) {\n return this._backCompatOption('origin', newValue)\n }\n\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n deltaSource(): DeltaSource\n deltaSource(newValue: DeltaSource): this\n deltaSource (newValue?: DeltaSource) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue\n\n return this\n }\n\n return this.options.deltaSource\n }\n\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n context () {\n return this._context\n }\n\n inContext (element: Document | Node) {\n return this._context === element.ownerDocument || nodeContains(this._context, element)\n }\n\n testIgnoreAllow (\n this: Interactable,\n options: { ignoreFrom?: IgnoreValue, allowFrom?: IgnoreValue },\n targetNode: Node,\n eventTarget: Node,\n ) {\n return (\n !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n this.testAllow(options.allowFrom, targetNode, eventTarget)\n )\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, targetNode: Node, element: Node) {\n if (!allowFrom) {\n return true\n }\n\n if (!is.element(element)) {\n return false\n }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode)\n } else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, targetNode: Node, element: Node) {\n if (!ignoreFrom || !is.element(element)) {\n return false\n }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode)\n } else if (is.element(ignoreFrom)) {\n return nodeContains(ignoreFrom, element)\n }\n\n return false\n }\n\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n fire<E extends { type: string }> (iEvent: E) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: EventTypes, listenerArg?: ListenersArg | null, options?: any) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const addRemove = method === 'on' ? 'add' : 'remove'\n const listeners = normalizeListeners(typeArg, listenerArg)\n\n for (let type in listeners) {\n if (type === 'wheel') {\n type = browser.wheelEvent\n }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (isNonNativeEvent(type, this._actions)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n this._scopeEvents[`${addRemove}Delegate` as 'addDelegate' | 'removeDelegate'](\n this.target,\n this._context,\n type,\n listener,\n options,\n )\n }\n // remove listener from this Interactable's element\n else {\n this._scopeEvents[addRemove](this.target, type, listener, options)\n }\n }\n }\n\n return this\n }\n\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n on (types: EventTypes, listener?: ListenersArg, options?: any) {\n return this._onOff('on', types, listener, options)\n }\n\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n off (types: string | string[] | EventTypes, listener?: ListenersArg, options?: any) {\n return this._onOff('off', types, listener, options)\n }\n\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n set (options: OptionsArg) {\n const defaults = this._defaults\n\n if (!is.object(options)) {\n options = {}\n }\n\n ;(this.options as Required<Options>) = clone(defaults.base) as Required<Options>\n\n for (const actionName_ in this._actions.methodDict) {\n const actionName = actionName_ as ActionName\n const methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n ;(this[methodName] as ActionMethod<unknown>)(options[actionName])\n }\n\n for (const setting in options) {\n if (is.func((this as any)[setting])) {\n ;(this as any)[setting](options[setting as keyof typeof options])\n }\n }\n\n return this\n }\n\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n */\n unset () {\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in this._scopeEvents.delegatedEvents) {\n const delegated = this._scopeEvents.delegatedEvents[type]\n\n for (let i = delegated.length - 1; i >= 0; i--) {\n const { selector, context, listeners } = delegated[i]\n\n if (selector === this.target && context === this._context) {\n delegated.splice(i, 1)\n }\n\n for (let l = listeners.length - 1; l >= 0; l--) {\n this._scopeEvents.removeDelegate(\n this.target,\n this._context,\n type,\n listeners[l][0],\n listeners[l][1],\n )\n }\n }\n }\n } else {\n this._scopeEvents.remove(this.target as Node, 'all')\n }\n }\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { OptionsArg, Options } from '@interactjs/core/options'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { Target, Context } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactable:new': {\n interactable: Interactable\n target: Target\n options: OptionsArg\n win: Window\n }\n }\n}\n\ninterface InteractableScopeProp {\n context: Context\n interactable: Interactable\n}\n\nexport class InteractableSet {\n // all set interactables\n list: Interactable[] = []\n\n selectorMap: {\n [selector: string]: InteractableScopeProp[]\n } = {}\n\n scope: Scope\n\n constructor (scope: Scope) {\n this.scope = scope\n scope.addListeners({\n 'interactable:unset': ({ interactable }) => {\n const { target, _context: context } = interactable\n const targetMappings: InteractableScopeProp[] = is.string(target)\n ? this.selectorMap[target]\n : (target as any)[this.scope.id]\n\n const targetIndex = arr.findIndex(targetMappings, (m) => m.context === context)\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null\n targetMappings[targetIndex].interactable = null\n }\n targetMappings.splice(targetIndex, 1)\n },\n })\n }\n\n new (target: Target, options?: any): Interactable {\n options = extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events)\n const mappingInfo = { context: interactable._context, interactable }\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) {\n this.selectorMap[target] = []\n }\n this.selectorMap[target].push(mappingInfo)\n } else {\n if (!(interactable.target as any)[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true,\n })\n }\n\n ;(target as any)[this.scope.id].push(mappingInfo)\n }\n\n this.scope.fire('interactable:new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n get (target: Target, options?: Options) {\n const context = (options && options.context) || this.scope.document\n const isSelector = is.string(target)\n const targetMappings: InteractableScopeProp[] = isSelector\n ? this.selectorMap[target as string]\n : (target as any)[this.scope.id]\n\n if (!targetMappings) {\n return null\n }\n\n const found = arr.find(\n targetMappings,\n (m) => m.context === context && (isSelector || m.interactable.inContext(target as any)),\n )\n\n return found && found.interactable\n }\n\n forEachMatch<T> (node: Node, callback: (interactable: Interactable) => T) {\n for (const interactable of this.list) {\n let ret: void | T\n\n if (\n (is.string(interactable.target)\n ? // target is a selector and the element matches\n is.element(node) && domUtils.matchesSelector(node, interactable.target)\n : // target is the element\n node === interactable.target) &&\n // the element is in context\n interactable.inContext(node)\n ) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n","import type { Scope } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport pExtend from '@interactjs/utils/pointerExtend'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n events: ReturnType<typeof install>\n }\n}\n\ntype Listener = (event: Event | FakeEvent) => any\n\nfunction install (scope: Scope) {\n const targets: Array<{\n eventTarget: EventTarget\n events: { [type: string]: Listener[] }\n }> = []\n\n const delegatedEvents: {\n [type: string]: Array<{\n selector: string\n context: Node\n listeners: Array<[Listener, { capture: boolean, passive: boolean }]>\n }>\n } = {}\n const documents: Document[] = []\n\n const eventsMethods = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n targets,\n\n supportsOptions: false,\n supportsPassive: false,\n }\n\n // check if browser supports passive events and options arg\n scope.document?.createElement('div').addEventListener('test', null, {\n get capture () {\n return (eventsMethods.supportsOptions = true)\n },\n get passive () {\n return (eventsMethods.supportsPassive = true)\n },\n })\n\n scope.events = eventsMethods\n\n function add (eventTarget: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let target = arr.find(targets, (t) => t.eventTarget === eventTarget)\n\n if (!target) {\n target = {\n eventTarget,\n events: {},\n }\n\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n }\n\n if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n eventTarget.addEventListener(\n type,\n listener as any,\n eventsMethods.supportsOptions ? options : options.capture,\n )\n target.events[type].push(listener)\n }\n }\n\n function remove (\n eventTarget: EventTarget,\n type: string,\n listener?: 'all' | Listener,\n optionalArg?: boolean | any,\n ) {\n const options = getOptions(optionalArg)\n const targetIndex = arr.findIndex(targets, (t) => t.eventTarget === eventTarget)\n const target = targets[targetIndex]\n\n if (!target || !target.events) {\n return\n }\n\n if (type === 'all') {\n for (type in target.events) {\n if (target.events.hasOwnProperty(type)) {\n remove(eventTarget, type, 'all')\n }\n }\n return\n }\n\n let typeIsEmpty = false\n const typeListeners = target.events[type]\n\n if (typeListeners) {\n if (listener === 'all') {\n for (let i = typeListeners.length - 1; i >= 0; i--) {\n remove(eventTarget, type, typeListeners[i], options)\n }\n return\n } else {\n for (let i = 0; i < typeListeners.length; i++) {\n if (typeListeners[i] === listener) {\n eventTarget.removeEventListener(\n type,\n listener as any,\n eventsMethods.supportsOptions ? options : options.capture,\n )\n typeListeners.splice(i, 1)\n\n if (typeListeners.length === 0) {\n delete target.events[type]\n typeIsEmpty = true\n }\n\n break\n }\n }\n }\n }\n\n if (typeIsEmpty && !Object.keys(target.events).length) {\n targets.splice(targetIndex, 1)\n }\n }\n\n function addDelegate (selector: string, context: Node, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = []\n\n // add delegate listener functions\n for (const doc of documents) {\n add(doc, type, delegateListener)\n add(doc, type, delegateUseCapture, true)\n }\n }\n\n const delegates = delegatedEvents[type]\n let delegate = arr.find(delegates, (d) => d.selector === selector && d.context === context)\n\n if (!delegate) {\n delegate = { selector, context, listeners: [] }\n delegates.push(delegate)\n }\n\n delegate.listeners.push([listener, options])\n }\n\n function removeDelegate (\n selector: string,\n context: Document | Element,\n type: string,\n listener?: Listener,\n optionalArg?: any,\n ) {\n const options = getOptions(optionalArg)\n const delegates = delegatedEvents[type]\n let matchFound = false\n let index: number\n\n if (!delegates) return\n\n // count from last index of delegated to 0\n for (index = delegates.length - 1; index >= 0; index--) {\n const cur = delegates[index]\n // look for matching selector and context Node\n if (cur.selector === selector && cur.context === context) {\n const { listeners } = cur\n\n // each item of the listeners array is an array: [function, capture, passive]\n for (let i = listeners.length - 1; i >= 0; i--) {\n const [fn, { capture, passive }] = listeners[i]\n\n // check if the listener functions and capture and passive flags match\n if (fn === listener && capture === options.capture && passive === options.passive) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1)\n\n // if all listeners for this target have been removed\n // remove the target from the delegates array\n if (!listeners.length) {\n delegates.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) {\n break\n }\n }\n }\n }\n\n // bound to the interactable context when a DOM event\n // listener is added to a selector interactable\n function delegateListener (event: Event | FakeEvent, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event as Event)\n const delegates = delegatedEvents[event.type]\n const [eventTarget] = pointerUtils.getEventTargets(event as Event)\n let element: Node = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegates.length; i++) {\n const cur = delegates[i]\n const { selector, context } = cur\n\n if (\n domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)\n ) {\n const { listeners } = cur\n\n fakeEvent.currentTarget = element\n\n for (const [fn, { capture, passive }] of listeners) {\n if (capture === options.capture && passive === options.passive) {\n fn(fakeEvent)\n }\n }\n }\n }\n\n element = domUtils.parentNode(element)\n }\n }\n\n function delegateUseCapture (this: Element, event: Event | FakeEvent) {\n return delegateListener.call(this, event, true)\n }\n\n // for type inferrence\n return eventsMethods\n}\n\nclass FakeEvent implements Partial<Event> {\n currentTarget: Node\n originalEvent: Event\n type: string\n\n constructor (originalEvent: Event) {\n this.originalEvent = originalEvent\n // duplicate the event so that currentTarget can be changed\n pExtend(this, originalEvent)\n }\n\n preventOriginalDefault () {\n this.originalEvent.preventDefault()\n }\n\n stopPropagation () {\n this.originalEvent.stopPropagation()\n }\n\n stopImmediatePropagation () {\n this.originalEvent.stopImmediatePropagation()\n }\n}\n\nfunction getOptions (param: { [index: string]: any } | boolean): { capture: boolean, passive: boolean } {\n if (!is.object(param)) {\n return { capture: !!param, passive: false }\n }\n\n const options = extend({}, param) as any\n\n options.capture = !!param.capture\n options.passive = !!param.passive\n\n return options\n}\n\nexport default {\n id: 'events',\n install,\n}\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerType } from '@interactjs/types/index'\nimport * as dom from '@interactjs/utils/domUtils'\n\nexport interface SearchDetails {\n pointer: PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: EventTarget\n curEventTarget: EventTarget\n scope: Scope\n}\n\nconst finder = {\n methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'] as const,\n\n search (details: SearchDetails) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\n\n return null\n },\n\n // try to resume simulation with a new pointer\n simulationResume ({ pointerType, eventType, eventTarget, scope }: SearchDetails) {\n if (!/down|start/i.test(eventType)) {\n return null\n }\n\n for (const interaction of scope.interactions.list) {\n let element = eventTarget as Node\n\n if (\n interaction.simulation &&\n interaction.simulation.allowResume &&\n interaction.pointerType === pointerType\n ) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = dom.parentNode(element)\n }\n }\n }\n\n return null\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen ({ pointerId, pointerType, eventType, scope }: SearchDetails) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null\n }\n\n let firstNonActive\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n continue\n }\n\n // if the interaction is active, return it immediately\n if (interaction.interacting()) {\n return interaction\n }\n // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction\n }\n }\n }\n\n // if no active mouse interaction was found use the first inactive mouse\n // interaction\n if (firstNonActive) {\n return firstNonActive\n }\n\n // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get interaction that has this pointer\n hasPointer ({ pointerId, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n if (hasPointerId(interaction, pointerId)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get first idle interaction with a matching pointerType\n idle ({ pointerType, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n const target = interaction.interactable\n // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n continue\n }\n }\n // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue\n }\n\n if (!interaction.interacting() && pointerType === interaction.pointerType) {\n return interaction\n }\n }\n\n return null\n },\n}\n\nfunction hasPointerId (interaction: Interaction, pointerId: number) {\n return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n","import type { Scope, ActionName, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type { Listener } from '@interactjs/types/index'\nimport browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport InteractionBase from './Interaction'\nimport interactablePreventDefault from './interactablePreventDefault'\nimport type { SearchDetails } from './interactionFinder'\nimport finder from './interactionFinder'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n new: <T extends ActionName>(options: any) => InteractionBase<T>\n list: Array<InteractionBase<ActionName>>\n listeners: { [type: string]: Listener }\n docEvents: Array<{ type: string, listener: Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:find': {\n interaction: InteractionBase\n searchDetails: SearchDetails\n }\n }\n}\n\nconst methodNames = [\n 'pointerDown',\n 'pointerMove',\n 'pointerUp',\n 'updatePointer',\n 'removePointer',\n 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const listeners = {} as any\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope)\n }\n\n const pEventTypes = browser.pEventTypes\n let docEvents: typeof scope.interactions.docEvents\n\n if (domObjects.PointerEvent) {\n docEvents = [\n { type: pEventTypes.down, listener: releasePointersOnRemovedEls },\n { type: pEventTypes.down, listener: listeners.pointerDown },\n { type: pEventTypes.move, listener: listeners.pointerMove },\n { type: pEventTypes.up, listener: listeners.pointerUp },\n { type: pEventTypes.cancel, listener: listeners.pointerUp },\n ]\n } else {\n docEvents = [\n { type: 'mousedown', listener: listeners.pointerDown },\n { type: 'mousemove', listener: listeners.pointerMove },\n { type: 'mouseup', listener: listeners.pointerUp },\n\n { type: 'touchstart', listener: releasePointersOnRemovedEls },\n { type: 'touchstart', listener: listeners.pointerDown },\n { type: 'touchmove', listener: listeners.pointerMove },\n { type: 'touchend', listener: listeners.pointerUp },\n { type: 'touchcancel', listener: listeners.pointerUp },\n ]\n }\n\n docEvents.push({\n type: 'blur',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n },\n })\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class <T extends ActionName> extends InteractionBase<T> {\n get pointerMoveTolerance () {\n return scope.interactions.pointerMoveTolerance\n }\n\n set pointerMoveTolerance (value) {\n scope.interactions.pointerMoveTolerance = value\n }\n\n _now () {\n return scope.now()\n }\n }\n\n scope.interactions = {\n // all active and idle interactions\n list: [],\n new<T extends ActionName> (options: { pointerType?: string, scopeFire?: Scope['fire'] }) {\n options.scopeFire = (name, arg) => scope.fire(name, arg)\n\n const interaction = new scope.Interaction<T>(options as Required<typeof options>)\n\n scope.interactions.list.push(interaction)\n return interaction\n },\n listeners,\n docEvents,\n pointerMoveTolerance: 1,\n }\n\n function releasePointersOnRemovedEls () {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n continue\n }\n\n // if a pointer is down on an element that is no longer in the DOM tree\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event)\n }\n }\n }\n }\n\n scope.usePlugin(interactablePreventDefault)\n}\n\nfunction doOnInteractions (method: string, scope: Scope) {\n return function (event: Event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches: any[] = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\n // @ts-expect-error\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch\n const pointerId = pointerUtils.getPointerId(pointer)\n const searchDetails: SearchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope,\n }\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n } else {\n let invalidPointer = false\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer =\n invalidPointer ||\n scope.now() - scope.prevTouchTime < 500 ||\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event as PointerEvent,\n pointerId: pointerUtils.getPointerId(event as PointerEvent),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope,\n }\n\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n\n // eslint-disable-next-line no-shadow\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget)\n }\n }\n}\n\nfunction getInteraction (searchDetails: SearchDetails) {\n const { pointerType, scope } = searchDetails\n\n const foundInteraction = finder.search(searchDetails)\n const signalArg = { interaction: foundInteraction, searchDetails }\n\n scope.fire('interactions:find', signalArg)\n\n return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal<T extends 'scope:add-document' | 'scope:remove-document'> (\n { doc, scope, options }: SignalArgs[T],\n eventMethodName: 'add' | 'remove',\n) {\n const {\n interactions: { docEvents },\n events,\n } = scope\n const eventMethod = events[eventMethodName]\n\n if (scope.browser.isIOS && !options.events) {\n options.events = { passive: false }\n }\n\n // delegate event listener\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener)\n eventMethod(doc, eventType, events.delegateUseCapture, true)\n }\n\n const eventOptions = options && options.events\n\n for (const { type, listener } of docEvents) {\n eventMethod(doc, type, listener, eventOptions)\n }\n}\n\nconst interactions: Plugin = {\n id: 'core/interactions',\n install,\n listeners: {\n 'scope:add-document': (arg) => onDocSignal(arg, 'add'),\n 'scope:remove-document': (arg) => onDocSignal(arg, 'remove'),\n 'interactable:unset': ({ interactable }, scope) => {\n // Stop and destroy related interactions when an Interactable is unset\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i]\n\n if (interaction.interactable !== interactable) {\n continue\n }\n\n interaction.stop()\n scope.fire('interactions:destroy', { interaction })\n interaction.destroy()\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1)\n }\n }\n },\n },\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n\nexport default interactions\n","import type Interaction from '@interactjs/core/Interaction'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport domObjects from '@interactjs/utils/domObjects'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport * as win from '@interactjs/utils/window'\n\nimport { Eventable } from './Eventable'\nimport type { PhaseMap } from './InteractEvent'\nimport { InteractEvent } from './InteractEvent'\nimport { createInteractStatic } from './InteractStatic'\nimport type { Interactable } from './Interactable'\nimport { Interactable as InteractableBase } from './Interactable'\nimport { InteractableSet } from './InteractableSet'\nimport events from './events'\nimport interactions from './interactions'\nimport type { OptionsArg } from './options'\nimport { defaults } from './options'\n\nexport interface SignalArgs {\n 'scope:add-document': DocSignalArg\n 'scope:remove-document': DocSignalArg\n 'interactable:unset': { interactable: InteractableBase }\n 'interactable:set': { interactable: InteractableBase, options: OptionsArg }\n 'interactions:destroy': { interaction: Interaction }\n}\n\nexport type ListenerName = keyof SignalArgs\n\nexport type ListenerMap = {\n [P in ListenerName]?: (arg: SignalArgs[P], scope: Scope, signalName: P) => void | boolean\n}\n\ninterface DocSignalArg {\n doc: Document\n window: Window\n scope: Scope\n options: Record<string, any>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionMap {}\nexport type ActionName = keyof ActionMap\n\nexport interface Actions {\n map: ActionMap\n phases: PhaseMap\n methodDict: { [P in ActionName]?: keyof Interactable }\n phaselessTypes: { [type: string]: true }\n}\n\nexport interface Plugin {\n [key: string]: any\n id?: string\n listeners?: ListenerMap\n before?: string[]\n install?(scope: Scope, options?: any): void\n}\n\nexport class Scope {\n id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n isInitialized = false\n listenerMaps: Array<{\n map: ListenerMap\n id: string\n }> = []\n\n browser = browser\n defaults = clone(defaults) as typeof defaults\n Eventable = Eventable\n actions: Actions = {\n map: {},\n phases: {\n start: true,\n move: true,\n end: true,\n },\n methodDict: {},\n phaselessTypes: {},\n }\n\n interactStatic = createInteractStatic(this)\n InteractEvent = InteractEvent\n Interactable: typeof InteractableBase\n interactables = new InteractableSet(this)\n\n // main window\n _win!: Window\n\n // main document\n document!: Document\n\n // main window\n window!: Window\n\n // all documents being listened to\n documents: Array<{ doc: Document, options: any }> = []\n\n _plugins: {\n list: Plugin[]\n map: { [id: string]: Plugin }\n } = {\n list: [],\n map: {},\n }\n\n constructor () {\n const scope = this\n\n this.Interactable = class extends InteractableBase {\n get _defaults () {\n return scope.defaults\n }\n\n set<T extends InteractableBase> (this: T, options: OptionsArg) {\n super.set(options)\n\n scope.fire('interactable:set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset (this: InteractableBase) {\n super.unset()\n scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1)\n\n scope.fire('interactable:unset', { interactable: this })\n }\n }\n }\n\n addListeners (map: ListenerMap, id?: string) {\n this.listenerMaps.push({ id, map })\n }\n\n fire<T extends ListenerName> (name: T, arg: SignalArgs[T]): void | false {\n for (const {\n map: { [name]: listener },\n } of this.listenerMaps) {\n if (!!listener && listener(arg as any, this, name as never) === false) {\n return false\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window | typeof globalThis) {\n return this.isInitialized ? this : initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (!this.isInitialized) {\n return this\n }\n\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) {\n this._plugins.map[plugin.id] = plugin\n }\n this._plugins.list.push(plugin)\n\n if (plugin.install) {\n plugin.install(this, options)\n }\n\n if (plugin.listeners && plugin.before) {\n let index = 0\n const len = this.listenerMaps.length\n const before = plugin.before.reduce((acc, id) => {\n acc[id] = true\n acc[pluginIdRoot(id)] = true\n return acc\n }, {})\n\n for (; index < len; index++) {\n const otherId = this.listenerMaps[index].id\n\n if (before[otherId] || before[pluginIdRoot(otherId)]) {\n break\n }\n }\n\n this.listenerMaps.splice(index, 0, { id: plugin.id, map: plugin.listeners })\n } else if (plugin.listeners) {\n this.listenerMaps.push({ id: plugin.id, map: plugin.listeners })\n }\n\n return this\n }\n\n addDocument (doc: Document, options?: any): void | false {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) {\n return false\n }\n\n const window = win.getWindow(doc)\n\n options = options ? extend({}, options) : {}\n\n this.documents.push({ doc, options })\n this.events.documents.push(doc)\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== this.document) {\n this.events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.fire('scope:add-document', { doc, window, scope: this, options })\n }\n\n removeDocument (doc: Document) {\n const index = this.getDocIndex(doc)\n\n const window = win.getWindow(doc)\n const options = this.documents[index].options\n\n this.events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n this.events.documents.splice(index, 1)\n\n this.fire('scope:remove-document', { doc, window, scope: this, options })\n }\n\n getDocIndex (doc: Document) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i\n }\n }\n\n return -1\n }\n\n getDocOptions (doc: Document) {\n const docIndex = this.getDocIndex(doc)\n\n return docIndex === -1 ? null : this.documents[docIndex].options\n }\n\n now () {\n return (((this.window as any).Date as typeof Date) || Date).now()\n }\n}\n\nexport function initScope (scope: Scope, window: Window | typeof globalThis) {\n scope.isInitialized = true\n\n if (is.window(window)) {\n win.init(window)\n }\n\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n\n // @ts-expect-error\n scope.window = window\n scope.document = window.document\n\n scope.usePlugin(interactions)\n scope.usePlugin(events)\n\n return scope\n}\n\nfunction pluginIdRoot (id: string) {\n return id && id.replace(/\\/.*$/, '')\n}\n","import { Scope } from '@interactjs/core/scope'\n\nconst scope = new Scope()\n\nconst interact = scope.interactStatic\n\nexport default interact\n\nconst _global = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this\nscope.init(_global)\n","export default () => {}\n","export default () => {}\n","import type { SnapFunction, SnapTarget } from '@interactjs/modifiers/snap/pointer'\nimport type { Rect, Point } from '@interactjs/types/index'\n\nexport type GridOptions = (Partial<Rect> | Point) & {\n range?: number\n limits?: Rect\n offset?: Point\n}\n\nexport default (grid: GridOptions) => {\n const coordFields = ([\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ] as const).filter(([xField, yField]) => xField in grid || yField in grid)\n\n const gridFunc: SnapFunction & {\n grid: typeof grid\n coordFields: typeof coordFields\n } = (x, y) => {\n const {\n range,\n limits = {\n left: -Infinity,\n right: Infinity,\n top: -Infinity,\n bottom: Infinity,\n },\n offset = { x: 0, y: 0 },\n } = grid\n\n const result: SnapTarget & {\n grid: typeof grid\n } = { range, grid, x: null as number, y: null as number }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / (grid as any)[xField])\n const gridy = Math.round((y - offset.y) / (grid as any)[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * (grid as any)[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * (grid as any)[yField] + offset.y))\n }\n\n return result\n }\n\n gridFunc.grid = grid\n gridFunc.coordFields = coordFields\n\n return gridFunc\n}\n","/* eslint-disable import/no-named-as-default, import/no-unresolved */\nexport { default as edgeTarget } from './edgeTarget'\nexport { default as elements } from './elements'\nexport { default as grid } from './grid'\n","import type { Plugin } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\nimport * as allSnappers from './all'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n snappers: typeof allSnappers\n createSnapGrid: typeof allSnappers.grid\n }\n}\n\nconst snappersPlugin: Plugin = {\n id: 'snappers',\n install (scope) {\n const { interactStatic: interact } = scope\n\n interact.snappers = extend(interact.snappers || {}, allSnappers)\n interact.createSnapGrid = interact.snappers.grid\n },\n}\n\nexport default snappersPlugin\n","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n * modifiers: [\n * interact.modifiers.snapSize({\n * targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n * }),\n * interact.aspectRatio({ ratio: 'preserve' }),\n * ],\n * });\n * ```\n */\n\nimport type { Point, Rect, EdgeOptions } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport { addEdges } from '@interactjs/utils/rect'\n\nimport Modification from './Modification'\nimport type { Modifier, ModifierModule, ModifierState } from './base'\nimport { makeModifier } from './base'\n\nexport interface AspectRatioOptions {\n ratio?: number | 'preserve'\n equalDelta?: boolean\n modifiers?: Modifier[]\n enabled?: boolean\n}\n\nexport type AspectRatioState = ModifierState<\nAspectRatioOptions,\n{\n startCoords: Point\n startRect: Rect\n linkedEdges: EdgeOptions\n ratio: number\n equalDelta: boolean\n xIsPrimaryAxis: boolean\n edgeSign: 1 | -1\n subModification: Modification\n}\n>\n\nconst aspectRatio: ModifierModule<AspectRatioOptions, AspectRatioState> = {\n start (arg) {\n const { state, rect, edges: originalEdges, pageCoords: coords } = arg\n let { ratio } = state.options\n const { equalDelta, modifiers } = state.options\n\n if (ratio === 'preserve') {\n ratio = rect.width / rect.height\n }\n\n state.startCoords = extend({}, coords)\n state.startRect = extend({}, rect)\n state.ratio = ratio\n state.equalDelta = equalDelta\n\n const linkedEdges = (state.linkedEdges = {\n top: originalEdges.top || (originalEdges.left && !originalEdges.bottom),\n left: originalEdges.left || (originalEdges.top && !originalEdges.right),\n bottom: originalEdges.bottom || (originalEdges.right && !originalEdges.top),\n right: originalEdges.right || (originalEdges.bottom && !originalEdges.left),\n })\n\n state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right)\n\n if (state.equalDelta) {\n state.edgeSign = ((linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1)) as 1 | -1\n } else {\n const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left\n state.edgeSign = negativeSecondaryEdge ? -1 : 1\n }\n\n extend(arg.edges, linkedEdges)\n\n if (!modifiers || !modifiers.length) return\n\n const subModification = new Modification(arg.interaction)\n\n subModification.copyFrom(arg.interaction.modification)\n subModification.prepareStates(modifiers)\n\n state.subModification = subModification\n subModification.startAll({ ...arg })\n },\n\n set (arg) {\n const { state, rect, coords } = arg\n const initialCoords = extend({}, coords)\n const aspectMethod = state.equalDelta ? setEqualDelta : setRatio\n\n aspectMethod(state, state.xIsPrimaryAxis, coords, rect)\n\n if (!state.subModification) {\n return null\n }\n\n const correctedRect = extend({}, rect)\n\n addEdges(state.linkedEdges, correctedRect, {\n x: coords.x - initialCoords.x,\n y: coords.y - initialCoords.y,\n })\n\n const result = state.subModification.setAll({\n ...arg,\n rect: correctedRect,\n edges: state.linkedEdges,\n pageCoords: coords,\n prevCoords: coords,\n prevRect: correctedRect,\n })\n\n const { delta } = result\n\n if (result.changed) {\n const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y)\n\n // do aspect modification again with critical edge axis as primary\n aspectMethod(state, xIsCriticalAxis, result.coords, result.rect)\n extend(coords, result.coords)\n }\n\n return result.eventProps\n },\n\n defaults: {\n ratio: 'preserve',\n equalDelta: false,\n modifiers: [],\n enabled: false,\n },\n}\n\nfunction setEqualDelta ({ startCoords, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Point) {\n if (xIsPrimaryAxis) {\n coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign\n } else {\n coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign\n }\n}\n\nfunction setRatio (\n { startRect, startCoords, ratio, edgeSign }: AspectRatioState,\n xIsPrimaryAxis: boolean,\n coords: Point,\n rect: Rect,\n) {\n if (xIsPrimaryAxis) {\n const newHeight = rect.width / ratio\n\n coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign\n } else {\n const newWidth = rect.height * ratio\n\n coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign\n }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio')\nexport { aspectRatio }\n","import type { ModifierFunction } from '@interactjs/modifiers/base'\n\nconst noop = ((() => {}) as unknown) as ModifierFunction<any, any, 'noop'>\n\nnoop._defaults = {}\n\nexport default noop\n","export { default } from '../noop'\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { RectResolvable, Rect, Point } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierModule, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nexport interface RestrictOptions {\n // where to drag over\n restriction: RectResolvable<[number, number, Interaction]>\n // what part of self is allowed to drag over\n elementRect: Rect\n offset: Rect\n // restrict just before the end drag\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictState = ModifierState<\nRestrictOptions,\n{\n offset: Rect\n}\n>\n\nfunction start ({ rect, startOffset, state, interaction, pageCoords }: ModifierArg<RestrictState>) {\n const { options } = state\n const { elementRect } = options\n const offset: Rect = extend(\n {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n options.offset || {},\n )\n\n if (rect && elementRect) {\n const restriction = getRestrictionRect(options.restriction, interaction, pageCoords)\n\n if (restriction) {\n const widthDiff = restriction.right - restriction.left - rect.width\n const heightDiff = restriction.bottom - restriction.top - rect.height\n\n if (widthDiff < 0) {\n offset.left += widthDiff\n offset.right += widthDiff\n }\n if (heightDiff < 0) {\n offset.top += heightDiff\n offset.bottom += heightDiff\n }\n }\n\n offset.left += startOffset.left - rect.width * elementRect.left\n offset.top += startOffset.top - rect.height * elementRect.top\n\n offset.right += startOffset.right - rect.width * (1 - elementRect.right)\n offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom)\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }: ModifierArg<RestrictState>) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) return\n\n const rect = rectUtils.xywhToTlbr(restriction)\n\n coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left)\n coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top)\n}\n\nexport function getRestrictionRect (\n value: RectResolvable<[number, number, Interaction]>,\n interaction: Interaction,\n coords?: Point,\n) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [\n coords.x,\n coords.y,\n interaction,\n ])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst defaults: RestrictOptions = {\n restriction: null,\n elementRect: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrict: ModifierModule<RestrictOptions, RestrictState> = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrict, 'restrict')\nexport { restrict }\n","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// })\n\nimport type { Point, Rect } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { RestrictOptions } from './pointer'\nimport { getRestrictionRect } from './pointer'\n\nexport interface RestrictEdgesOptions {\n inner: RestrictOptions['restriction']\n outer: RestrictOptions['restriction']\n offset?: RestrictOptions['offset']\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictEdgesState = ModifierState<\nRestrictEdgesOptions,\n{\n inner: Rect\n outer: Rect\n offset: RestrictEdgesOptions['offset']\n}\n>\n\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, startOffset, state }: ModifierArg<RestrictEdgesState>) {\n const { options } = state\n let offset: Point\n\n if (options) {\n const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page)\n\n offset = rectUtils.rectToXY(offsetRect)\n }\n\n offset = offset || { x: 0, y: 0 }\n\n state.offset = {\n top: offset.y + startOffset.top,\n left: offset.x + startOffset.left,\n bottom: offset.y - startOffset.bottom,\n right: offset.x - startOffset.right,\n }\n}\n\nfunction set ({ coords, edges, interaction, state }: ModifierArg<RestrictEdgesState>) {\n const { offset, options } = state\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || ({} as Rect)\n const outer = getRestrictionRect(options.outer, interaction, page) || ({} as Rect)\n\n fixRect(inner, noInner)\n fixRect(outer, noOuter)\n\n if (edges.top) {\n coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top)\n } else if (edges.bottom) {\n coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom)\n }\n if (edges.left) {\n coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left)\n } else if (edges.right) {\n coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right)\n }\n}\n\nfunction fixRect (rect: Rect, defaults: Rect) {\n for (const edge of ['top', 'left', 'bottom', 'right']) {\n if (!(edge in rect)) {\n rect[edge] = defaults[edge]\n }\n }\n\n return rect\n}\n\nconst defaults: RestrictEdgesOptions = {\n inner: null,\n outer: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrictEdges = {\n noInner,\n noOuter,\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrictEdges, 'restrictEdges')\nexport { restrictEdges }\n","import extend from '@interactjs/utils/extend'\n\nimport { makeModifier } from '../base'\n\nimport { restrict } from './pointer'\n\nconst defaults = extend(\n {\n get elementRect () {\n return { top: 0, left: 0, bottom: 1, right: 1 }\n },\n set elementRect (_) {},\n },\n restrict.defaults,\n)\n\nconst restrictRect = {\n start: restrict.start,\n set: restrict.set,\n defaults,\n}\n\nexport default makeModifier(restrictRect, 'restrictRect')\nexport { restrictRect }\n","import type { Point, Rect, Size } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { RestrictEdgesState } from './edges'\nimport { restrictEdges } from './edges'\nimport type { RestrictOptions } from './pointer'\nimport { getRestrictionRect } from './pointer'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nexport interface RestrictSizeOptions {\n min?: Size | Point | RestrictOptions['restriction']\n max?: Size | Point | RestrictOptions['restriction']\n endOnly: boolean\n enabled?: boolean\n}\n\nfunction start (arg: ModifierArg<RestrictEdgesState>) {\n return restrictEdges.start(arg)\n}\n\nexport type RestrictSizeState = RestrictEdgesState &\nModifierState<\nRestrictSizeOptions & { inner: Rect, outer: Rect },\n{\n min: Rect\n max: Rect\n}\n>\n\nfunction set (arg: ModifierArg<RestrictSizeState>) {\n const { interaction, state, rect, edges } = arg\n const { options } = state\n\n if (!edges) {\n return\n }\n\n const minSize =\n rectUtils.tlbrToXywh(getRestrictionRect(options.min as any, interaction, arg.coords)) || noMin\n const maxSize =\n rectUtils.tlbrToXywh(getRestrictionRect(options.max as any, interaction, arg.coords)) || noMax\n\n state.options = {\n endOnly: options.endOnly,\n inner: extend({}, restrictEdges.noInner),\n outer: extend({}, restrictEdges.noOuter),\n }\n\n if (edges.top) {\n state.options.inner.top = rect.bottom - minSize.height\n state.options.outer.top = rect.bottom - maxSize.height\n } else if (edges.bottom) {\n state.options.inner.bottom = rect.top + minSize.height\n state.options.outer.bottom = rect.top + maxSize.height\n }\n if (edges.left) {\n state.options.inner.left = rect.right - minSize.width\n state.options.outer.left = rect.right - maxSize.width\n } else if (edges.right) {\n state.options.inner.right = rect.left + minSize.width\n state.options.outer.right = rect.left + maxSize.width\n }\n\n restrictEdges.set(arg)\n\n state.options = options\n}\n\nconst defaults: RestrictSizeOptions = {\n min: null,\n max: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrictSize = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrictSize, 'restrictSize')\nexport { restrictSize }\n","export { default } from '../noop'\n","import type { Interaction, InteractionProxy } from '@interactjs/core/Interaction'\nimport type { ActionName } from '@interactjs/core/scope'\nimport type { Point, RectResolvable, Element } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport is from '@interactjs/utils/is'\nimport { resolveRectLike, rectToXY } from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nexport interface Offset {\n x: number\n y: number\n index: number\n relativePoint?: Point | null\n}\n\nexport interface SnapPosition {\n x?: number\n y?: number\n range?: number\n offset?: Offset\n [index: string]: any\n}\n\nexport type SnapFunction = (\n x: number,\n y: number,\n interaction: InteractionProxy<ActionName>,\n offset: Offset,\n index: number,\n) => SnapPosition\nexport type SnapTarget = SnapPosition | SnapFunction\nexport interface SnapOptions {\n targets: SnapTarget[] | null\n // target range\n range: number\n // self points for snapping. [0,0] = top left, [1,1] = bottom right\n relativePoints: Point[] | null\n // startCoords = offset snapping from drag start page position\n offset: Point | RectResolvable<[Interaction]> | 'startCoords' | null\n offsetWithOrigin?: boolean\n origin: RectResolvable<[Element]> | Point | null\n endOnly?: boolean\n enabled?: boolean\n}\n\nexport type SnapState = ModifierState<\nSnapOptions,\n{\n offsets?: Offset[]\n closest?: any\n targetFields?: string[][]\n}\n>\n\nfunction start (arg: ModifierArg<SnapState>) {\n const { interaction, interactable, element, rect, state, startOffset } = arg\n const { options } = state\n const origin = options.offsetWithOrigin ? getOrigin(arg) : { x: 0, y: 0 }\n\n let snapOffset: Point\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x,\n y: interaction.coords.start.page.y,\n }\n } else {\n const offsetRect = resolveRectLike(options.offset as any, interactable, element, [interaction])\n\n snapOffset = rectToXY(offsetRect) || { x: 0, y: 0 }\n snapOffset.x += origin.x\n snapOffset.y += origin.y\n }\n\n const { relativePoints } = options\n\n state.offsets =\n rect && relativePoints && relativePoints.length\n ? relativePoints.map((relativePoint, index) => ({\n index,\n relativePoint,\n x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n y: startOffset.top - rect.height * relativePoint.y + snapOffset.y,\n }))\n : [\n {\n index: 0,\n relativePoint: null,\n x: snapOffset.x,\n y: snapOffset.y,\n },\n ]\n}\n\nfunction set (arg: ModifierArg<SnapState>) {\n const { interaction, coords, state } = arg\n const { options, offsets } = state\n\n const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = extend({}, coords)\n const targets = []\n\n if (!options.offsetWithOrigin) {\n page.x -= origin.x\n page.y -= origin.y\n }\n\n for (const offset of offsets) {\n const relativeX = page.x - offset.x\n const relativeY = page.y - offset.y\n\n for (let index = 0, len = options.targets.length; index < len; index++) {\n const snapTarget = options.targets[index]\n let target: SnapPosition\n\n if (is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index)\n } else {\n target = snapTarget\n }\n\n if (!target) {\n continue\n }\n\n targets.push({\n x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n\n range: is.number(target.range) ? target.range : options.range,\n source: snapTarget,\n index,\n offset,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n delta: { x: 0, y: 0 },\n }\n\n for (const target of targets) {\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = hypot(dx, dy)\n let inRange = distance <= range\n\n // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false\n }\n\n if (\n !closest.target ||\n (inRange\n ? // is the closest target in range?\n closest.inRange && range !== Infinity\n ? // the pointer is relatively deeper in this target\n distance / range < closest.distance / closest.range\n : // this target has Infinite range and the closest doesn't\n (range === Infinity && closest.range !== Infinity) ||\n // OR this target is closer that the previous closest\n distance < closest.distance\n : // The other is not in range and the pointer is closer to this target\n !closest.inRange && distance < closest.distance)\n ) {\n closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.delta.x = dx\n closest.delta.y = dy\n }\n }\n\n if (closest.inRange) {\n coords.x = closest.target.x\n coords.y = closest.target.y\n }\n\n state.closest = closest\n return closest\n}\n\nfunction getOrigin (arg: Partial<ModifierArg<SnapState>>) {\n const { element } = arg.interaction\n const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin as any, null, null, [element]))\n const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name)\n\n return origin\n}\n\nconst defaults: SnapOptions = {\n range: Infinity,\n targets: null,\n offset: null,\n offsetWithOrigin: true,\n origin: null,\n relativePoints: null,\n endOnly: false,\n enabled: false,\n}\nconst snap = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(snap, 'snap')\nexport { snap }\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\nimport type { ModifierArg } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { SnapOptions, SnapState } from './pointer'\nimport { snap } from './pointer'\n\nexport type SnapSizeOptions = Pick<SnapOptions, 'targets' | 'offset' | 'endOnly' | 'range' | 'enabled'>\n\nfunction start (arg: ModifierArg<SnapState>) {\n const { state, edges } = arg\n const { options } = state\n\n if (!edges) {\n return null\n }\n\n arg.state = {\n options: {\n targets: null,\n relativePoints: [\n {\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n },\n ],\n offset: options.offset || 'self',\n origin: { x: 0, y: 0 },\n range: options.range,\n },\n }\n\n state.targetFields = state.targetFields || [\n ['width', 'height'],\n ['x', 'y'],\n ]\n\n snap.start(arg)\n state.offsets = arg.state.offsets\n\n arg.state = state\n}\n\nfunction set (arg) {\n const { interaction, state, coords } = arg\n const { options, offsets } = state\n const relative = {\n x: coords.x - offsets[0].x,\n y: coords.y - offsets[0].y,\n }\n\n state.options = extend({}, options)\n state.options.targets = []\n\n for (const snapTarget of options.targets || []) {\n let target\n\n if (is.func(snapTarget)) {\n target = snapTarget(relative.x, relative.y, interaction)\n } else {\n target = snapTarget\n }\n\n if (!target) {\n continue\n }\n\n for (const [xField, yField] of state.targetFields) {\n if (xField in target || yField in target) {\n target.x = target[xField]\n target.y = target[yField]\n\n break\n }\n }\n\n state.options.targets.push(target)\n }\n\n const returnValue = snap.set(arg)\n\n state.options = options\n\n return returnValue\n}\n\nconst defaults: SnapSizeOptions = {\n range: Infinity,\n targets: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst snapSize = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(snapSize, 'snapSize')\nexport { snapSize }\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n * ```\n */\n\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\n\nimport type { ModifierArg, ModifierModule } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { SnapOptions, SnapState } from './pointer'\nimport { snapSize } from './size'\n\nexport type SnapEdgesOptions = Pick<SnapOptions, 'targets' | 'range' | 'offset' | 'endOnly' | 'enabled'>\n\nfunction start (arg: ModifierArg<SnapState>) {\n const { edges } = arg\n\n if (!edges) {\n return null\n }\n\n arg.state.targetFields = arg.state.targetFields || [\n [edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom'],\n ]\n\n return snapSize.start(arg)\n}\n\nconst snapEdges: ModifierModule<SnapEdgesOptions, SnapState, ReturnType<typeof snapSize.set>> = {\n start,\n set: snapSize.set,\n defaults: extend(clone(snapSize.defaults), {\n targets: null,\n range: null,\n offset: { x: 0, y: 0 },\n } as const),\n}\n\nexport default makeModifier(snapEdges, 'snapEdges')\nexport { snapEdges }\n","export { default } from '../noop'\n","/* eslint-disable node/no-extraneous-import, import/no-unresolved */\nimport aspectRatio from './aspectRatio'\nimport avoid from './avoid/avoid'\nimport restrictEdges from './restrict/edges'\nimport restrict from './restrict/pointer'\nimport restrictRect from './restrict/rect'\nimport restrictSize from './restrict/size'\nimport rubberband from './rubberband/rubberband'\nimport snapEdges from './snap/edges'\nimport snap from './snap/pointer'\nimport snapSize from './snap/size'\nimport spring from './spring/spring'\nimport transform from './transform/transform'\n\nexport default {\n aspectRatio,\n restrictEdges,\n restrict,\n restrictRect,\n restrictSize,\n snapEdges,\n snap,\n snapSize,\n\n spring,\n avoid,\n transform,\n rubberband,\n}\n","import type { Plugin } from '@interactjs/core/scope'\nimport snappers from '@interactjs/snappers/plugin'\n\nimport all from './all'\nimport base from './base'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n modifiers: typeof all\n }\n}\n\nconst modifiers: Plugin = {\n id: 'modifiers',\n install (scope) {\n const { interactStatic: interact } = scope\n\n scope.usePlugin(base)\n scope.usePlugin(snappers)\n\n interact.modifiers = all\n\n // for backwrads compatibility\n for (const type in all) {\n const { _defaults, _methods } = all[type as keyof typeof all]\n\n ;(_defaults as any)._methods = _methods\n ;(scope.defaults.perAction as any)[type] = _defaults\n }\n },\n}\n\nexport default modifiers\n","import { BaseEvent } from '@interactjs/core/BaseEvent'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { PointerEventType, PointerType, Point } from '@interactjs/types/index'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nexport default class PointerEvent<T extends string = any> extends BaseEvent<never> {\n type: T\n originalEvent: PointerEventType\n pointerId: number\n pointerType: string\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any;\n [key: string]: any\n\n /** */\n constructor (\n type: T,\n pointer: PointerType | PointerEvent<any>,\n event: PointerEventType,\n eventTarget: Node,\n interaction: Interaction<never>,\n timeStamp: number,\n ) {\n super(interaction)\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(\n interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500\n )\n } else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n _subtractOrigin ({ x: originX, y: originY }: Point) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n _addOrigin ({ x: originX, y: originY }: Point) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n}\n\nexport { PointerEvent }\n","import type { Eventable } from '@interactjs/core/Eventable'\nimport type { Interaction } from '@interactjs/core/Interaction'\nimport type { PerActionDefaults } from '@interactjs/core/options'\nimport type { Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type { Point, PointerType, PointerEventType, Element } from '@interactjs/types'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\n\nimport { PointerEvent } from './PointerEvent'\n\nexport type EventTargetList = Array<{\n node: Node\n eventable: Eventable\n props: { [key: string]: any }\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number\n ignoreFrom?: any\n allowFrom?: any\n origin?: Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent<string>\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n pointerEvents: Options\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'pointerEvents:new': { pointerEvent: PointerEvent<any> }\n 'pointerEvents:fired': {\n interaction: Interaction<null>\n pointer: PointerType | PointerEvent<any>\n event: PointerEventType | PointerEvent<any>\n eventTarget: Node\n pointerEvent: PointerEvent<any>\n targets?: EventTargetList\n type: string\n }\n 'pointerEvents:collect-targets': {\n interaction: Interaction<any>\n pointer: PointerType | PointerEvent<any>\n event: PointerEventType | PointerEvent<any>\n eventTarget: Node\n targets?: EventTargetList\n type: string\n path: Node[]\n node: null\n }\n }\n}\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom: null,\n allowFrom: null,\n origin: { x: 0, y: 0 },\n}\n\nconst pointerEvents: Plugin = {\n id: 'pointer-events/base',\n before: ['inertia', 'modifiers', 'auto-start', 'actions'],\n install,\n listeners: {\n 'interactions:new': addInteractionProps,\n 'interactions:update-pointer': addHoldInfo,\n 'interactions:move': moveAndClearHold,\n 'interactions:down': (arg, scope) => {\n downAndStartHold(arg, scope)\n fire(arg, scope)\n },\n 'interactions:up': (arg, scope) => {\n clearHold(arg)\n fire(arg, scope)\n tapAfterUp(arg, scope)\n },\n 'interactions:cancel': (arg, scope) => {\n clearHold(arg)\n fire(arg, scope)\n },\n },\n PointerEvent,\n fire,\n collectEventTargets,\n defaults,\n types: {\n down: true,\n move: true,\n up: true,\n cancel: true,\n tap: true,\n doubletap: true,\n hold: true,\n } as { [type: string]: true },\n}\n\nfunction fire<T extends string> (\n arg: {\n pointer: PointerType | PointerEvent<any>\n event: PointerEventType | PointerEvent<any>\n eventTarget: Node\n interaction: Interaction<never>\n type: T\n targets?: EventTargetList\n },\n scope: Scope,\n) {\n const { interaction, pointer, event, eventTarget, type, targets = collectEventTargets(arg, scope) } = arg\n\n const pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now())\n\n scope.fire('pointerEvents:new', { pointerEvent })\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n ;(pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = getOriginXY(target.eventable, target.node)\n\n pointerEvent._subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.node\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent._addOrigin(origin)\n\n if (\n pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n i + 1 < targets.length &&\n targets[i + 1].node !== pointerEvent.currentTarget)\n ) {\n break\n }\n }\n\n scope.fire('pointerEvents:fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire(\n {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n },\n scope,\n )\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets<T extends string> (\n {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n }: {\n interaction: Interaction<any>\n pointer: PointerType | PointerEvent<any>\n event: PointerEventType | PointerEvent<any>\n eventTarget: Node\n type: T\n },\n scope: Scope,\n) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (\n type === 'tap' &&\n (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))\n ) {\n return []\n }\n\n const path = domUtils.getPath(eventTarget as Element | Document)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n scope.fire('pointerEvents:collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter(\n (target) => target.eventable.options.holdDuration === interaction.pointers[pointerIndex]?.hold.duration,\n )\n }\n\n return signalArg.targets\n}\n\nfunction addInteractionProps ({ interaction }) {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n}\n\nfunction addHoldInfo ({ down, pointerInfo }: SignalArgs['interactions:update-pointer']) {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n}\n\nfunction clearHold ({ interaction, pointerIndex }) {\n const hold = interaction.pointers[pointerIndex].hold\n\n if (hold && hold.timeout) {\n clearTimeout(hold.timeout)\n hold.timeout = null\n }\n}\n\nfunction moveAndClearHold (arg: SignalArgs['interactions:move'], scope: Scope) {\n const { interaction, pointer, event, eventTarget, duplicate } = arg\n\n if (!duplicate && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearHold(arg)\n }\n\n fire(\n {\n interaction,\n pointer,\n event,\n eventTarget: eventTarget as Element,\n type: 'move',\n },\n scope,\n )\n }\n}\n\nfunction downAndStartHold (\n { interaction, pointer, event, eventTarget, pointerIndex }: SignalArgs['interactions:down'],\n scope: Scope,\n) {\n const timer = interaction.pointers[pointerIndex].hold\n const path = domUtils.getPath(eventTarget as Element | Document)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n scope.fire('pointerEvents:collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) return\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire(\n {\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n },\n scope,\n )\n }, minDuration)\n}\n\nfunction tapAfterUp (\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:up'],\n scope: Scope,\n) {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n}\n\nfunction install (scope: Scope) {\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n extend(scope.actions.phaselessTypes, pointerEvents.types)\n}\n\nexport default pointerEvents\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { ListenerMap, Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\n\nimport type PointerEvent from './PointerEvent'\nimport basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/PointerEvent' {\n interface PointerEvent<T extends string = any> {\n count?: number\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Scope) {\n scope.usePlugin(basePlugin)\n\n const { pointerEvents } = scope\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.holdrepeat = scope.actions.phaselessTypes.holdrepeat = true\n}\n\nfunction onNew ({ pointerEvent }: { pointerEvent: PointerEvent<any> }) {\n if (pointerEvent.type !== 'hold') return\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: SignalArgs['pointerEvents:fired'],\n scope: Scope,\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) return\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) return\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire(\n {\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n },\n scope,\n )\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }: { interaction: Interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nconst holdRepeat: Plugin = {\n id: 'pointer-events/holdRepeat',\n install,\n listeners: ['move', 'up', 'cancel', 'endall'].reduce(\n (acc, enderTypes) => {\n ;(acc as any)[`pointerEvents:${enderTypes}`] = endHoldRepeat\n return acc\n },\n {\n 'pointerEvents:new': onNew,\n 'pointerEvents:fired': onFired,\n } as ListenerMap,\n ),\n}\n\nexport default holdRepeat\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const { Interactable } = scope\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nconst plugin: Plugin = {\n id: 'pointer-events/interactableTargets',\n install,\n listeners: {\n 'pointerEvents:collect-targets': ({ targets, node, type, eventTarget }, scope) => {\n scope.interactables.forEachMatch(node, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n interactable.testIgnoreAllow(options, node, eventTarget)\n ) {\n targets.push({\n node,\n eventable,\n props: { interactable },\n })\n }\n })\n },\n\n 'interactable:new': ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n },\n\n 'interactable:set': ({ interactable, options }, scope) => {\n extend(interactable.events.options, scope.pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n },\n },\n}\n\nexport default plugin\n","import type { Plugin } from '@interactjs/core/scope'\n\nimport * as pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nconst plugin: Plugin = {\n id: 'pointer-events',\n install (scope) {\n scope.usePlugin(pointerEvents)\n scope.usePlugin(holdRepeat)\n scope.usePlugin(interactableTargets)\n },\n}\n\nexport default plugin\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { ActionProps, DoAnyPhaseArg, Interaction } from '@interactjs/core/Interaction'\nimport type { ActionName, Scope, Plugin } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport is from '@interactjs/utils/is'\nimport { copyAction } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport { tlbrToXywh } from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:before-action-reflow': Omit<DoAnyPhaseArg, 'iEvent'>\n 'interactions:action-reflow': DoAnyPhaseArg\n 'interactions:after-action-reflow': DoAnyPhaseArg\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: <T extends ActionName>(action: ActionProps<T>) => ReturnType<typeof doReflow>\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowPromise: Promise<void>\n _reflowResolve: (...args: unknown[]) => void\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface PhaseMap {\n reflow?: true\n }\n}\n\nexport function install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable,\n } = scope\n\n scope.actions.phases.reflow = true\n\n /**\n * ```js\n * const interactable = interact(target)\n * const drag = { name: drag, axis: 'x' }\n * const resize = { name: resize, edges: { left: true, bottom: true }\n *\n * interactable.reflow(drag)\n * interactable.reflow(resize)\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise } A promise that resolves to the `Interactable` when actions on all targets have ended\n */\n Interactable.prototype.reflow = function (action: ActionProps) {\n return doReflow(this, action, scope)\n }\n}\n\nfunction doReflow<T extends ActionName> (\n interactable: Interactable,\n action: ActionProps<T>,\n scope: Scope,\n): Promise<Interactable> {\n const elements = (is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]) as Element[]\n\n // tslint:disable-next-line variable-name\n const Promise = (scope.window as any).Promise\n const promises: Array<Promise<null>> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element as HTMLElement | SVGElement)\n\n if (!rect) {\n break\n }\n\n const runningInteraction = arr.find(scope.interactions.list, (interaction: Interaction) => {\n return (\n interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n )\n })\n let reflowPromise: Promise<null>\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise =\n runningInteraction._reflowPromise ||\n new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n } else {\n const xywh = tlbrToXywh(rect)\n const coords = {\n page: { x: xywh.x, y: xywh.y },\n client: { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow<T>(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow<T extends ActionName> (\n scope: Scope,\n interactable: Interactable,\n element: Element,\n action: ActionProps<T>,\n event: any,\n) {\n const interaction = scope.interactions.new({ pointerType: 'reflow' })\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: 'reflow',\n } as const\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n pointerUtils.setZeroCoords(interaction.coords.delta)\n\n copyAction(interaction.prepared, action)\n interaction._doPhase(signalArg)\n\n const { Promise } = (scope.window as unknown) as { Promise: PromiseConstructor }\n const reflowPromise = Promise\n ? new Promise<undefined>((resolve) => {\n interaction._reflowResolve = resolve\n })\n : undefined\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n } else {\n interaction.stop()\n interaction._reflowResolve()\n }\n\n interaction.removePointer(event, event)\n\n return reflowPromise\n}\n\nconst reflow: Plugin = {\n id: 'reflow',\n install,\n listeners: {\n // remove completed reflow interactions\n 'interactions:stop': ({ interaction }, scope) => {\n if (interaction.pointerType === 'reflow') {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n },\n },\n}\n\nexport default reflow\n","import actions from '@interactjs/actions/plugin'\nimport autoScroll from '@interactjs/auto-scroll/plugin'\nimport autoStart from '@interactjs/auto-start/plugin'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools/plugin'\nimport inertia from '@interactjs/inertia/plugin'\nimport interact from '@interactjs/interact'\nimport modifiers from '@interactjs/modifiers/plugin'\nimport offset from '@interactjs/offset/plugin'\nimport pointerEvents from '@interactjs/pointer-events/plugin'\nimport reflow from '@interactjs/reflow/plugin'\n\ninteract.use(interactablePreventDefault)\n\ninteract.use(offset)\n\n// pointerEvents\ninteract.use(pointerEvents)\n\n// inertia\ninteract.use(inertia)\n\n// snap, resize, etc.\ninteract.use(modifiers)\n\n// autoStart, hold\ninteract.use(autoStart)\n\n// drag and drop, resize, gesture\ninteract.use(actions)\n\n// autoScroll\ninteract.use(autoScroll)\n\n// reflow\ninteract.use(reflow)\n\n// eslint-disable-next-line no-undef\nif (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n}\n\nexport default interact\n\nif (typeof module === 'object' && !!module) {\n try {\n module.exports = interact\n } catch {}\n}\n\n;(interact as any).default = interact\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport interact from '@interactjs/interactjs/index'\n\nexport default interact\n\nif (typeof module === 'object' && !!module) {\n try {\n module.exports = interact\n } catch {}\n}\n\n;(interact as any).default = interact\n","\nreturn _$index_79;\n\n});\n"],"sourceRoot":"","file":"interact.js"}
\No newline at end of file