@partylayer/react 0.2.6 โ 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -11
- package/LICENSE +0 -21
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/native-cip0103-adapter.ts","../src/context.tsx","../src/hooks.ts","../src/theme.tsx","../src/kit.tsx","../src/modal.tsx","../src/connect-button.tsx"],"names":["createContext","useContext","useState","useEffect","discoverInjectedProviders","jsx","useCallback","useRef","error","useMemo","createPartyLayer","jsxs","Fragment"],"mappings":";;;;;;;;;AAyCO,IAAM,uBAAN,MAAoD;AAAA,EAChD,QAAA;AAAA,EACA,IAAA;AAAA,EACD,QAAA;AAAA,EAER,WAAA,CAAY,EAAA,EAAY,IAAA,EAAc,QAAA,EAA2B;AAC/D,IAAA,IAAA,CAAK,QAAA,GAAW,EAAA;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,EAClB;AAAA,EAEA,eAAA,GAAmC;AACjC,IAAA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,eAAA,GAAgD;AAEpD,IAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,EAC3B;AAAA,EAEA,MAAM,OAAA,CACJ,IAAA,EACA,KAAA,EAC+B;AAE/B,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAA8B;AAAA,MACtE,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,IAAI,CAAC,cAAc,WAAA,EAAa;AAC9B,MAAA,MAAM,IAAI,KAAA,CAAM,aAAA,CAAc,MAAA,IAAU,+BAA+B,CAAA;AAAA,IACzE;AAGA,IAAA,IAAI,OAAA,GAAU,SAAA;AACd,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAAwB;AAAA,QAC1D,MAAA,EAAQ;AAAA,OACT,CAAA;AACD,MAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,IACpB,CAAA,CAAA,MAAQ;AAGN,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAA4B;AAAA,UAC7D,MAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,UAAA,OAAA,GAAU,OAAO,OAAA,CAAQ,MAAA;AAAA,QAC3B;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,WAAW,IAAA,CAAK,GAAA,EAAI,GAAI,EAAA,GAAK,KAAK,EAAA,GAAK;AAAA;AAAA,OACzC;AAAA,MACA,YAAA,EAAc,KAAK,eAAA;AAAgB,KACrC;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,IAAA,EAAsB,QAAA,EAAkC;AACvE,IAAA,MAAM,KAAK,QAAA,CAAS,OAAA,CAAQ,EAAE,MAAA,EAAQ,cAAc,CAAA;AAAA,EACtD;AAAA,EAEA,MAAM,WAAA,CACJ,IAAA,EACA,QAAA,EACA,MAAA,EACwB;AACxB,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAAgB;AAAA,MACpD,MAAA,EAAQ,aAAA;AAAA,MACR,MAAA,EAAQ,EAAE,OAAA,EAAS,MAAA,CAAO,OAAA;AAAQ,KACnC,CAAA;AAED,IAAA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,QAAQ,MAAA,CAAO;AAAA,KACjB;AAAA,EACF;AAAA,EAEA,MAAM,eAAA,CACJ,IAAA,EACA,QAAA,EACA,MAAA,EAC4B;AAG5B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAIhC;AAAA,MACD,MAAA,EAAQ,gBAAA;AAAA,MACR,MAAA,EAAQ,EAAE,EAAA,EAAI,MAAA,CAAO,EAAA;AAAG,KACzB,CAAA;AAED,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,OAAO,QAAA,IAAY,MAAA;AAAA,MAC7B,eAAA,EAAkB,MAAA,CAAO,eAAA,IAAmB,MAAA,CAAO,SAAA,IAAa,EAAA;AAAA,MAChE,SAAS,QAAA,CAAS;AAAA,KACpB;AAAA,EACF;AAAA,EAEA,MAAM,iBAAA,CACJ,IAAA,EACA,QAAA,EACA,MAAA,EACoB;AACpB,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAIhC;AAAA,MACD,MAAA,EAAQ,gBAAA;AAAA,MACR,MAAA,EAAQ,EAAE,EAAA,EAAI,MAAA,CAAO,QAAA;AAAS,KAC/B,CAAA;AAED,IAAA,OAAO;AAAA,MACL,eAAA,EAAkB,MAAA,CAAO,eAAA,IAAmB,MAAA,CAAO,SAAA,IAAa,EAAA;AAAA,MAChE,WAAA,EAAa,KAAK,GAAA,EAAI;AAAA,MACtB,WAAW,MAAA,CAAO,SAAA;AAAA,MAClB,UAAU,MAAA,CAAO;AAAA,KACnB;AAAA,EACF;AACF;AAOO,SAAS,oBACd,UAAA,EACsB;AACtB,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,IAAA,IAAQ,gBAAA,CAAiB,WAAW,EAAE,CAAA;AAC9D,EAAA,OAAO,IAAI,oBAAA;AAAA,IACT,CAAA,QAAA,EAAW,WAAW,EAAE,CAAA,CAAA;AAAA,IACxB,IAAA;AAAA,IACA,UAAA,CAAW;AAAA,GACb;AACF;AAKO,SAAS,yBAAA,CACd,YACA,OAAA,EACY;AACZ,EAAA,MAAM,QAAA,GAAW,CAAA,QAAA,EAAW,UAAA,CAAW,EAAE,CAAA,CAAA;AACzC,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,IAAA,IAAQ,gBAAA,CAAiB,WAAW,EAAE,CAAA;AAE9D,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA,EAAS,EAAA;AAAA,IACT,OAAO,EAAC;AAAA,IACR,YAAA,EAAc;AAAA,MACZ,SAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA,EAAS,EAAE,WAAA,EAAa,gBAAA,EAAkB,cAAc,GAAA,EAAI;AAAA,IAC5D,MAAM,EAAC;AAAA,IACP,QAAA,EAAU,CAAC,OAAO,CAAA;AAAA,IAClB,OAAA,EAAS,QAAA;AAAA,IACT,QAAA,EAAU,EAAE,MAAA,EAAQ,gBAAA;AAAiB,GACvC;AACF;AAKA,eAAsB,mBACpB,UAAA,EAC6B;AAC7B,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW,QAAA,CAAS,OAAA,CAA4B;AAAA,MACnE,MAAA,EAAQ;AAAA,KACT,CAAA;AACD,IAAA,OAAO;AAAA,MACL,GAAG,UAAA;AAAA,MACH,MAAM,UAAA,CAAW,IAAA,IAAQ,MAAA,CAAO,QAAA,EAAU,MAAM,UAAA,CAAW;AAAA,KAC7D;AAAA,EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,UAAA;AAAA,EACT;AACF;AAOA,SAAS,iBAAiB,EAAA,EAAoB;AAC5C,EAAA,OAAO,GACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAC1D,KAAK,GAAG,CAAA;AACb;ACrOA,IAAM,iBAAA,GACJA,oBAA6C,IAAI,CAAA;AAE5C,SAAS,oBAAA,GAA+C;AAC7D,EAAA,MAAM,OAAA,GAAUC,iBAAW,iBAAiB,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AASO,SAAS,kBAAA,CAAmB;AAAA,EACjC,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAA4B;AAC1B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAyB,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,cAAA,CAAuB,EAAE,CAAA;AACvD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AAErD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAA,GAAU,IAAA;AAEd,IAAA,eAAe,IAAA,GAAO;AACpB,MAAA,IAAI;AAIF,QAAA,MAAM,CAAC,WAAA,EAAa,eAAA,EAAiB,aAAa,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,UACtE,OAAO,gBAAA,EAAiB;AAAA,UACxB,OAAO,WAAA,EAAY;AAAA,UACnB,OAAA,CAAQ,OAAA,CAAQC,6BAAA,EAA2B;AAAA,SAC5C,CAAA;AAED,QAAA,IAAI,CAAC,OAAA,EAAS;AAGd,QAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA;AAAA,UAC/B,cAAc,GAAA,CAAI,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAC,CAAC;AAAA,SAChD;AAEA,QAAA,IAAI,CAAC,OAAA,EAAS;AAGd,QAAA,MAAM,gBAA8B,EAAC;AACrC,QAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,eAAA,CAAgB,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAEhF,QAAA,KAAA,MAAW,MAAM,UAAA,EAAY;AAC3B,UAAA,MAAM,SAAA,GAAY,CAAA,QAAA,EAAW,EAAA,CAAG,EAAE,CAAA,CAAA;AAElC,UAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,SAAS,CAAA,EAAG;AAEtC,UAAA,MAAM,OAAA,GAAU,oBAAoB,EAAE,CAAA;AACtC,UAAA,MAAA,CAAO,gBAAgB,OAAO,CAAA;AAE9B,UAAA,MAAM,UAAA,GAAa,yBAAA,CAA0B,EAAA,EAAI,OAAO,CAAA;AACxD,UAAA,aAAA,CAAc,KAAK,UAAU,CAAA;AAAA,QAC/B;AAGA,QAAA,MAAM,aAAA,GAAgB,CAAC,GAAG,aAAA,EAAe,GAAG,eAAe,CAAA;AAE3D,QAAA,UAAA,CAAW,WAAW,CAAA;AACtB,QAAA,UAAA,CAAW,aAAa,CAAA;AACxB,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB,SAAS,GAAA,EAAK;AACZ,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,QAAA,CAAS,eAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,eAAe,CAAC,CAAA;AAChE,UAAA,UAAA,CAAW,EAAE,CAAA;AACb,UAAA,YAAA,CAAa,KAAK,CAAA;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAA,EAAK;AAKL,IAAA,MAAM,iBAAA,GAAoB,WAAW,YAAY;AAC/C,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,IAAI;AACF,QAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,OAAA,CAAQA,+BAA2B,CAAA;AACvE,QAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,GAAA;AAAA,UAC7B,cAAc,GAAA,CAAI,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAC,CAAC;AAAA,SAChD;AAEA,QAAA,IAAI,CAAC,OAAA,EAAS;AAEd,QAAA,UAAA,CAAW,CAAC,IAAA,KAAS;AACnB,UAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAC/D,UAAA,MAAM,mBAAiC,EAAC;AAExC,UAAA,KAAA,MAAW,MAAM,QAAA,EAAU;AACzB,YAAA,MAAM,SAAA,GAAY,CAAA,QAAA,EAAW,EAAA,CAAG,EAAE,CAAA,CAAA;AAClC,YAAA,IAAI,WAAA,CAAY,GAAA,CAAI,SAAS,CAAA,EAAG;AAEhC,YAAA,MAAM,OAAA,GAAU,oBAAoB,EAAE,CAAA;AACtC,YAAA,MAAA,CAAO,gBAAgB,OAAO,CAAA;AAC9B,YAAA,gBAAA,CAAiB,IAAA,CAAK,yBAAA,CAA0B,EAAA,EAAI,OAAO,CAAC,CAAA;AAAA,UAC9D;AAEA,UAAA,IAAI,gBAAA,CAAiB,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE1C,UAAA,OAAO,CAAC,GAAG,gBAAA,EAAkB,GAAG,IAAI,CAAA;AAAA,QACtC,CAAC,CAAA;AAAA,MACH,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,GAAG,IAAI,CAAA;AAGP,IAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,EAAA,CAAG,mBAAA,EAAqB,CAAC,KAAA,KAAU;AACnE,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,IAAI,KAAA,CAAM,SAAS,mBAAA,EAAqB;AACtC,QAAA,UAAA,CAAW,MAAM,OAAO,CAAA;AAAA,MAC1B;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,qBAAA,GAAwB,MAAA,CAAO,EAAA,CAAG,sBAAA,EAAwB,MAAM;AACpE,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA,IACjB,CAAC,CAAA;AAED,IAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,EAAA,CAAG,iBAAA,EAAmB,MAAM;AAC5D,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA,IACjB,CAAC,CAAA;AAED,IAAA,MAAM,gBAAA,GAAmB,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,CAAC,KAAA,KAAU;AACrD,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,IAAI,KAAA,CAAM,SAAS,OAAA,EAAS;AAC1B,QAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,MACtB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,GAAU,KAAA;AACV,MAAA,YAAA,CAAa,iBAAiB,CAAA;AAC9B,MAAA,kBAAA,EAAmB;AACnB,MAAA,qBAAA,EAAsB;AACtB,MAAA,kBAAA,EAAmB;AACnB,MAAA,gBAAA,EAAiB;AAAA,IACnB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEC,cAAA;AAAA,IAAC,iBAAA,CAAkB,QAAA;AAAA,IAAlB;AAAA,MACC,KAAA,EAAO;AAAA,QACL,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AChLO,SAAS,aAAA,GAAgB;AAC9B,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,oBAAA,EAAqB;AACxC,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,KAAA,KAAU,oBAAA,EAAqB;AAC3D,EAAA,OAAO,EAAE,OAAA,EAAS,SAAA,EAAW,KAAA,EAAM;AACrC;AAKO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,oBAAA,EAAqB;AACzC,EAAA,OAAO,OAAA;AACT;AAKO,SAAS,iBAAA,GAGd;AACA,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIH,eAAgC,IAAI,CAAA;AAEhE,EAAAC,gBAAU,MAAM;AAEd,IAAA,MAAM,aAAA,GAAgB,OAAO,iBAAA,EAAkB;AAC/C,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,SAAA,CAAU,aAAa,CAAA;AAAA,IACzB;AAIA,IAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAe;AAC9B,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,SAAA,CAAU,MAAM,MAAwB,CAAA;AAAA,MAC1C;AAAA,IACF,CAAA;AAGA,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,EAAA,CAAG,iBAAA,EAAmB,OAAO,CAAA;AAExD,IAAA,OAAO,WAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,OAAA,GAAUG,kBAAY,YAAY;AAEtC,IAAA,MAAM,OAAO,WAAA,EAAY;AAEzB,IAAA,MAAM,aAAA,GAAgB,OAAO,iBAAA,EAAkB;AAC/C,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,SAAA,CAAU,aAAa,CAAA;AAAA,IACzB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,OAAO,EAAE,QAAQ,OAAA,EAAQ;AAC3B;AAKO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIJ,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,YAAA,GAAeK,aAAO,CAAC,CAAA;AAE7B,EAAA,MAAM,OAAA,GAAUD,iBAAA;AAAA,IACd,OAAO,OAAA,KAAsD;AAC3D,MAAA,MAAM,EAAA,GAAK,EAAE,YAAA,CAAa,OAAA;AAC1B,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,QAAA,CAAS,IAAI,CAAA;AAEb,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA;AAE5C,QAAA,IAAI,EAAA,KAAO,aAAa,OAAA,EAAS;AAC/B,UAAA,OAAO,OAAA;AAAA,QACT;AACA,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,IAAI,EAAA,KAAO,aAAa,OAAA,EAAS;AAC/B,UAAA,MAAME,SAAQ,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,MAAM,mBAAmB,CAAA;AACxE,UAAA,QAAA,CAASA,MAAK,CAAA;AAAA,QAChB;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,IAAI,EAAA,KAAO,aAAa,OAAA,EAAS;AAC/B,UAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,QACvB;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAGA,EAAA,MAAM,KAAA,GAAQF,kBAAY,MAAM;AAC9B,IAAA,YAAA,CAAa,OAAA,EAAA;AACb,IAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,OAAA,EAAS,YAAA,EAAc,KAAA,EAAO,KAAA,EAAM;AAC/C;AAKO,SAAS,aAAA,GAAgB;AAC9B,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIJ,eAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,UAAA,GAAaI,kBAAY,YAA2B;AACxD,IAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,UAAA,EAAW;AAAA,IAC1B,SAAS,GAAA,EAAK;AACZ,MAAA,MAAME,SAAQ,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,MAAM,mBAAmB,CAAA;AACxE,MAAA,QAAA,CAASA,MAAK,CAAA;AACd,MAAA,MAAMA,MAAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,OAAO,EAAE,UAAA,EAAY,eAAA,EAAiB,KAAA,EAAM;AAC9C;AAKO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIN,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,WAAA,GAAcI,iBAAA;AAAA,IAClB,OAAO,MAAA,KAA6D;AAClE,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,IAAI,CAAA;AAEb,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,MAAA,CAAO,WAAA,CAAY,MAAM,CAAA;AAAA,MACxC,SAAS,GAAA,EAAK;AACZ,QAAA,MAAME,SAAQ,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,MAAM,aAAa,CAAA;AAClE,QAAA,QAAA,CAASA,MAAK,CAAA;AACd,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,OAAO,EAAE,WAAA,EAAa,SAAA,EAAW,KAAA,EAAM;AACzC;AAKO,SAAS,kBAAA,GAAqB;AACnC,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIN,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,eAAA,GAAkBI,iBAAA;AAAA,IACtB,OAAO,MAAA,KAAqE;AAC1E,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,IAAI,CAAA;AAEb,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,MAAA,CAAO,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC5C,SAAS,GAAA,EAAK;AACZ,QAAA,MAAME,SAAQ,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,MAAM,aAAa,CAAA;AAClE,QAAA,QAAA,CAASA,MAAK,CAAA;AACd,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,OAAO,EAAE,eAAA,EAAiB,SAAA,EAAW,KAAA,EAAM;AAC7C;AAKO,SAAS,oBAAA,GAAuB;AACrC,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIN,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,iBAAA,GAAoBI,iBAAA;AAAA,IACxB,OAAO,MAAA,KAA+D;AACpE,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,QAAA,CAAS,IAAI,CAAA;AAEb,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,MAAA,CAAO,iBAAA,CAAkB,MAAM,CAAA;AAAA,MAC9C,SAAS,GAAA,EAAK;AACZ,QAAA,MAAME,SAAQ,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,MAAM,eAAe,CAAA;AACpE,QAAA,QAAA,CAASA,MAAK,CAAA;AACd,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,OAAO,EAAE,iBAAA,EAAmB,YAAA,EAAc,KAAA,EAAM;AAClD;ACtNO,IAAM,UAAA,GAA8B;AAAA,EACzC,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,aAAA,EAAe,SAAA;AAAA,IACf,MAAA,EAAQ,wBAAA;AAAA,IACR,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc,MAAA;AAAA,EACd,UAAA,EAAY;AACd;AAEO,IAAM,SAAA,GAA6B;AAAA,EACxC,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,aAAA,EAAe,SAAA;AAAA,IACf,MAAA,EAAQ,2BAAA;AAAA,IACR,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc,MAAA;AAAA,EACd,UAAA,EAAY;AACd;AAIA,IAAM,YAAA,GAAeR,oBAAsC,IAAI,CAAA;AAMxD,SAAS,QAAA,GAA4B;AAC1C,EAAA,MAAM,GAAA,GAAMC,iBAAW,YAAY,CAAA;AACnC,EAAA,OAAO,GAAA,IAAO,UAAA;AAChB;AASO,SAAS,aAAA,CAAc,EAAE,KAAA,EAAO,QAAA,EAAS,EAAuB;AACrE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,eAAS,KAAK,CAAA;AAElD,EAAAC,gBAAU,MAAM;AACd,IAAA,IAAI,UAAU,MAAA,EAAQ;AACtB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA;AAC3D,IAAA,aAAA,CAAc,GAAG,OAAO,CAAA;AAExB,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAA2B,aAAA,CAAc,EAAE,OAAO,CAAA;AACnE,IAAA,EAAA,CAAG,gBAAA,CAAiB,UAAU,OAAO,CAAA;AACrC,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,QAAA,EAAU,OAAO,CAAA;AAAA,EACvD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,QAAA,GAAWM,cAAQ,MAAuB;AAC9C,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,IAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,SAAA;AAC7B,IAAA,IAAI,KAAA,KAAU,MAAA,EAAQ,OAAO,UAAA,GAAa,SAAA,GAAY,UAAA;AACtD,IAAA,OAAO,UAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAA,EAAO,UAAU,CAAC,CAAA;AAEtB,EAAA,uBACEJ,cAAAA,CAAC,YAAA,CAAa,UAAb,EAAsB,KAAA,EAAO,UAC3B,QAAA,EACH,CAAA;AAEJ;ACtGA,IAAM,kBAAA,GAAqBL,mBAAAA,CAA6B,EAAE,CAAA;AAGnD,SAAS,cAAA,GAAgC;AAC9C,EAAA,OAAOC,iBAAW,kBAAkB,CAAA;AACtC;AAQO,SAAS,iBAAA,CACd,QAAA,EACA,WAAA,EACA,eAAA,EACe;AACf,EAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA;AAE3C,EAAA,IAAI,WAAA,CAAY,EAAE,CAAA,EAAG,OAAO,YAAY,EAAE,CAAA;AAC1C,EAAA,IAAI,WAAA,CAAY,QAAQ,CAAA,EAAG,OAAO,YAAY,QAAQ,CAAA;AAEtD,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AACpD,IAAA,IAAI,EAAA,CAAG,aAAY,CAAE,QAAA,CAAS,IAAI,WAAA,EAAa,GAAG,OAAO,GAAA;AAAA,EAC3D;AAEA,EAAA,IAAI,iBAAiB,OAAO,eAAA;AAC5B,EAAA,OAAO,IAAA;AACT;AA+BO,SAAS,aAAA,CAAc;AAAA,EAC5B,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,cAAc;AAChB,CAAA,EAAuB;AAErB,EAAA,MAAM,WAAA,GAAcM,aAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,MAAA,GAASE,cAAQ,MAAwB;AAC7C,IAAA,OAAOC,oBAAA,CAAiB;AAAA,MACtB,OAAA;AAAA,MACA,GAAA,EAAK;AAAA,QACH,IAAA,EAAM,OAAA;AAAA,QACN,QAAQ,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,SAAS,MAAA,GAAS;AAAA,OACnE;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAU,WAAA,CAAY;AAAA,KACvB,CAAA;AAAA,EAGH,GAAG,CAAC,OAAA,EAAS,OAAA,EAAS,WAAA,EAAa,OAAO,CAAC,CAAA;AAG3C,EAAAP,gBAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,OAAA,EAAQ;AAAA,IACjB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,UAAA,GAAa,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,KAAA;AAEvD,EAAA,uBACEE,cAAAA,CAAC,kBAAA,CAAmB,UAAnB,EAA4B,KAAA,EAAO,aAClC,QAAA,kBAAAA,cAAAA,CAAC,iBAAc,KAAA,EAAO,UAAA,EACpB,0BAAAA,cAAAA,CAAC,kBAAA,EAAA,EAAmB,QAAgB,OAAA,EACjC,QAAA,EACH,GACF,CAAA,EACF,CAAA;AAEJ;AC/FA,SAAS,eAAe,MAAA,EAA6B;AACnD,EAAA,OAAO,MAAA,CAAO,UAAU,MAAA,KAAW,gBAAA;AACrC;AAEA,SAAS,gBAAgB,KAAA,EAAsB;AAC7C,EAAA,MAAM,IAAA,GAAO,MAAA,IAAU,KAAA,GAAS,KAAA,CAA2B,IAAA,GAAO,EAAA;AAClE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,sBAAA;AACH,MAAA,OAAO,gEAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,yCAAA;AAAA,IACT,KAAK,eAAA;AACH,MAAA,OAAO,2BAAA;AAAA,IACT,KAAK,oBAAA;AACH,MAAA,OAAO,4CAAA;AAAA,IACT;AACE,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA;AAEnB;AAGA,SAAS,eAAe,IAAA,EAAsB;AAC5C,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,IAAA,CAAM,QAAQ,CAAA,IAAK,IAAA,CAAA;AAAA,EAC7C;AACA,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,GAAG,CAAA;AAC9B,EAAA,MAAM,EAAA,GAAA,CAAM,KAAK,EAAA,IAAM,GAAA;AACvB,EAAA,OAAO,CAAA,4BAAA,EAA+B,EAAE,CAAA,iBAAA,EAAoB,EAAE,CAAA,YAAA,CAAA;AAChE;AAGA,IAAM,iBAAA,GAA4C;AAAA,EAChD,OAAA,EAAS,kCAAA;AAAA,EACT,IAAA,EAAM,qBAAA;AAAA,EACN,OAAA,EAAS,oBAAA;AAAA,EACT,IAAA,EAAM,kBAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,aAAa,MAAA,EAAmC;AACvD,EAAA,IAAI,MAAA,CAAO,OAAA,EAAS,OAAO,MAAA,CAAO,OAAA;AAClC,EAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,CAAE,OAAA,CAAQ,aAAa,EAAE,CAAA;AAC1D,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AAC1D,IAAA,IAAI,GAAG,WAAA,EAAY,CAAE,QAAA,CAAS,GAAG,GAAG,OAAO,GAAA;AAAA,EAC7C;AACA,EAAA,IAAI,OAAO,IAAA,EAAM,MAAA,GAAS,GAAG,OAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACjD,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,wBAAwB,MAAA,EAA4B;AAC3D,EAAA,IAAI,cAAA,CAAe,MAAM,CAAA,EAAG,OAAO,OAAA;AACnC,EAAA,IAAI,MAAA,CAAO,YAAA,CAAa,QAAA,CAAS,UAAU,GAAG,OAAO,mBAAA;AACrD,EAAA,IAAI,MAAA,CAAO,YAAA,CAAa,QAAA,CAAS,OAAO,GAAG,OAAO,iBAAA;AAClD,EAAA,IAAI,MAAA,CAAO,YAAA,CAAa,QAAA,CAAS,UAAU,GAAG,OAAO,eAAA;AACrD,EAAA,IAAI,MAAA,CAAO,YAAA,CAAa,QAAA,CAAS,cAAc,GAAG,OAAO,YAAA;AACzD,EAAA,OAAO,OAAO,YAAA,CAAa,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA;AAClD;AAIA,SAAS,UAAU,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC3F,EAAA,uCACG,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,EAAY,KAAI,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAClI,QAAA,EAAA;AAAA,oBAAAA,cAAAA,CAAC,UAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,oBACpCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA,GAAA,EACtC,CAAA;AAEJ;AAEA,SAAS,UAAU,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC3F,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAQ,OAAO,WAAA,EAAY,GAAA,EAAI,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EAClI,0BAAAA,cAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB,CAAA,EACpC,CAAA;AAEJ;AAEA,SAAS,SAAS,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC1F,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAQ,OAAO,WAAA,EAAY,GAAA,EAAI,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EAClI,0BAAAA,cAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,iBAAA,EAAkB,CAAA,EACrC,CAAA;AAEJ;AAEA,SAAS,UAAU,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,WAAU,EAAsC;AACtF,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAQ,OAAO,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EACpI,0BAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iBAAA,EAAkB,CAAA,EAC5B,CAAA;AAEJ;AAEA,SAAS,WAAW,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,WAAU,EAAsC;AACvF,EAAA,uCACG,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,EAAY,KAAI,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAClI,QAAA,EAAA;AAAA,oBAAAA,eAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,CAAA;AAAA,oBAC/BA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,oBACpCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA,GAAA,EACtC,CAAA;AAEJ;AAEA,SAAS,WAAW,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC5F,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAQ,OAAO,WAAA,EAAY,GAAA,EAAI,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EAClI,0BAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6CAAA,EAA8C,CAAA,EACxD,CAAA;AAEJ;AAEA,SAAS,aAAa,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC9F,EAAA,uCACG,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,EAAY,KAAI,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAClI,QAAA,EAAA;AAAA,oBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,2CAAA,EAA4C,CAAA;AAAA,oBACpDA,cAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,kBAAA,EAAmB,CAAA;AAAA,oBACpCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI;AAAA,GAAA,EACvC,CAAA;AAEJ;AAEA,SAAS,iBAAiB,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAClG,EAAA,uCACG,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,EAAY,KAAI,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAClI,QAAA,EAAA;AAAA,oBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0DAAA,EAA2D,CAAA;AAAA,oBACnEA,cAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB,CAAA;AAAA,oBAClCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI;AAAA,GAAA,EACvC,CAAA;AAEJ;AAIA,SAAS,eAAA,CAAgB;AAAA,EACvB,MAAA;AAAA,EACA,IAAA,GAAO,EAAA;AAAA,EACP;AACF,CAAA,EAIG;AACD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIH,eAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,IAAA,IAAQ,EAAA,GAAK,MAAA,GAAS,MAAA;AAErC,EAAA,IAAI,OAAA,IAAW,CAAC,QAAA,EAAU;AACxB,IAAA,uBACEG,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,KAAK,MAAA,CAAO,IAAA;AAAA,QACZ,OAAA,EAAS,MAAM,WAAA,CAAY,IAAI,CAAA;AAAA,QAC/B,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,UACd,MAAA,EAAQ,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,UACf,YAAA,EAAc,MAAA;AAAA,UACd,UAAA,EAAY,CAAA;AAAA,UACZ,SAAA,EAAW;AAAA;AACb;AAAA,KACF;AAAA,EAEJ;AAGA,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,QACd,MAAA,EAAQ,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,QACf,YAAA,EAAc,MAAA;AAAA,QACd,UAAA,EAAY,cAAA,CAAe,MAAA,CAAO,IAAI,CAAA;AAAA,QACtC,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,KAAA,EAAO,SAAA;AAAA,QACP,UAAU,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,QACpC,UAAA,EAAY,GAAA;AAAA,QACZ,UAAA,EAAY,CAAA;AAAA,QACZ,UAAA,EAAY;AAAA,OACd;AAAA,MAEC,QAAA,EAAA,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,CAAC,EAAE,WAAA;AAAY;AAAA,GACrC;AAEJ;AAIO,SAAS,WAAA,CAAY;AAAA,EAC1B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA,EAAa;AACf,CAAA,EAAqB;AACnB,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAU,GAAI,UAAA,EAAW;AAC1C,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,YAAA,KAAiB,UAAA,EAAW;AAC3D,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAA,EAAe,GAAI,iBAAA,EAAkB;AACrD,EAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,EAAA,IAAI,eAA8B,EAAC;AACnC,EAAA,IAAI;AAAE,IAAA,YAAA,GAAe,cAAA,EAAe;AAAA,EAAG,CAAA,CAAA,MAAQ;AAAA,EAAuB;AAGtE,EAAA,MAAM,WAAA,GAA6B,EAAE,GAAG,YAAA,EAAc,GAAG,SAAA,EAAU;AAEnE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIH,eAAoB,MAAM,CAAA;AAClD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,eAA4B,IAAI,CAAA;AAC5E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAuB,IAAI,CAAA;AACnE,EAAA,MAAM,QAAA,GAAWK,aAAuB,IAAI,CAAA;AAG5C,EAAAJ,gBAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAA,CAAQ,MAAM,CAAA;AACd,MAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAqB;AACpC,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,WAAA,EAAY;AAAA,IACtC,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAC5C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AAAA,EAE9D,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,KAAA,IAAS,SAAS,YAAA,EAAc;AAClC,MAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,MAAA,MAAM,IAAA,GAAO,MAAA,IAAU,KAAA,GAAS,KAAA,CAA2B,IAAA,GAAO,EAAA;AAClE,MAAA,IAAI,SAAS,sBAAA,EAAwB;AACnC,QAAA,OAAA,CAAQ,eAAe,CAAA;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA;AAEhB,EAAA,MAAM,WAAA,GAAcG,kBAAY,MAAM;AAEpC,IAAA,YAAA,EAAa;AACb,IAAA,OAAA,CAAQ,MAAM,CAAA;AACd,IAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAA,EAAQ;AAAA,IACV,GAAG,GAAG,CAAA;AAAA,EACR,CAAA,EAAG,CAAC,OAAA,EAAS,YAAY,CAAC,CAAA;AAE1B,EAAA,MAAM,iBAAA,GAAoBA,iBAAAA,CAAY,OAAO,MAAA,KAAuB;AAClE,IAAA,iBAAA,CAAkB,MAAM,CAAA;AACxB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,OAAA,CAAQ,YAAY,CAAA;AAEpB,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ;AAAA,MAC5B,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,eAAA,EAAiB;AAAA,KAClB,CAAA;AAED,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,SAAS,CAAA;AACjB,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,SAAA,CAAU,QAAQ,SAAS,CAAA;AAC3B,QAAA,OAAA,EAAQ;AAAA,MACV,GAAG,GAAG,CAAA;AAAA,IACR;AAAA,EAGF,CAAA,EAAG,CAAC,OAAA,EAAS,SAAA,EAAW,OAAO,CAAC,CAAA;AAEhC,EAAA,MAAM,WAAA,GAAcA,kBAAY,MAAM;AACpC,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,iBAAA,CAAkB,cAAc,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAEtC,EAAA,MAAM,gBAAA,GAAmBA,kBAAY,MAAM;AACzC,IAAA,OAAA,CAAQ,MAAM,CAAA;AACd,IAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,EACxB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,OAAA,EAAS,OAAO,IAAA;AAGhC,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA;AACnD,EAAA,MAAM,eAAA,GAAkB,QAAQ,MAAA,CAAO,CAAC,MAAM,CAAC,cAAA,CAAe,CAAC,CAAC,CAAA;AAEhE,EAAA,MAAM,MAAA,GAAS,MAAM,IAAA,KAAS,MAAA;AAI9B,EAAA,MAAM,YAAA,GAAoC;AAAA,IACxC,QAAA,EAAU,OAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,CAAA;AAAA,IACP,MAAA,EAAQ,CAAA;AAAA,IACR,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,IAC9B,cAAA,EAAgB,WAAA;AAAA,IAChB,oBAAA,EAAsB,WAAA;AAAA,IACtB,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS,UAAU,CAAA,GAAI,CAAA;AAAA,IACvB,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,UAAA,GAAkC;AAAA,IACtC,eAAA,EAAiB,MAAM,MAAA,CAAO,UAAA;AAAA,IAC9B,YAAA,EAAc,MAAA;AAAA,IACd,KAAA,EAAO,OAAA;AAAA,IACP,QAAA,EAAU,MAAA;AAAA,IACV,SAAA,EAAW,MAAA;AAAA,IACX,QAAA,EAAU,QAAA;AAAA,IACV,YAAY,KAAA,CAAM,UAAA;AAAA,IAClB,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,IACpB,SAAA,EAAW,SACP,yDAAA,GACA,iEAAA;AAAA,IACJ,MAAA,EAAQ,CAAA,UAAA,EAAa,MAAA,GAAS,wBAAA,GAA2B,qBAAqB,CAAA,CAAA;AAAA,IAC9E,SAAA,EAAW,CAAC,OAAA,GAAU,8DAAA,GAAiE,MAAA;AAAA,IACvF,SAAA,EAAW,UAAU,aAAA,GAAgB,MAAA;AAAA,IACrC,OAAA,EAAS,UAAU,CAAA,GAAI,MAAA;AAAA,IACvB,UAAA,EAAY,UAAU,gCAAA,GAAmC;AAAA,GAC3D;AAEA,EAAA,MAAM,WAAA,GAAmC;AAAA,IACvC,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,MAAM,YAAA,GAAoC;AAAA,IACxC,MAAA,EAAQ,MAAA;AAAA,IACR,YAAA,EAAc,KAAA;AAAA,IACd,MAAA,EAAQ,MAAA;AAAA,IACR,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,IAC9B,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,IACpB,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,wBAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,aAAA,GAAqC,EAAE,GAAG,YAAA,EAAc,OAAO,MAAA,EAAO;AAC5E,EAAA,MAAM,OAAA,GAAU,SAAS,wBAAA,GAA2B,qBAAA;AAIpD,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,KAAuB;AAC/C,IAAA,MAAM,QAAA,GAAW,eAAe,MAAM,CAAA;AACtC,IAAA,MAAM,UAAU,iBAAA,CAAkB,MAAA,CAAO,UAAU,WAAA,EAAa,MAAA,CAAO,OAAO,EAAE,CAAA;AAEhF,IAAA,uBACEK,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,OAAA,EAAS,MAAM,iBAAA,CAAkB,MAAM,CAAA;AAAA,QACvC,UAAU,IAAA,KAAS,YAAA;AAAA,QACnB,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,MAAA;AAAA,UACP,OAAA,EAAS,WAAA;AAAA,UACT,MAAA,EAAQ,aAAa,QAAA,GAChB,MAAA,GAAS,0BAA0B,uBAAA,GACpC,KAAA,CAAM,OAAO,MAAM,CAAA,CAAA;AAAA,UACvB,YAAA,EAAc,MAAA;AAAA,UACd,MAAA,EAAQ,IAAA,KAAS,YAAA,GAAe,MAAA,GAAS,SAAA;AAAA,UACzC,SAAA,EAAW,MAAA;AAAA,UACX,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK,MAAA;AAAA,UACL,iBAAiB,QAAA,GACZ,MAAA,GAAS,uBAAA,GAA0B,uBAAA,GACpC,MAAM,MAAA,CAAO,OAAA;AAAA,UACjB,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,UACpB,YAAY,KAAA,CAAM,UAAA;AAAA,UAClB,UAAA,EAAY;AAAA,SACd;AAAA,QACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,UAAA,MAAM,KAAK,CAAA,CAAE,aAAA;AACb,UAAA,EAAA,CAAG,MAAM,SAAA,GAAY,kBAAA;AACrB,UAAA,EAAA,CAAG,KAAA,CAAM,SAAA,GAAY,MAAA,GACjB,4BAAA,GACA,gCAAA;AACJ,UAAA,EAAA,CAAG,MAAM,WAAA,GAAc,QAAA,GAClB,SAAS,sBAAA,GAAyB,sBAAA,GAClC,SAAS,wBAAA,GAA2B,qBAAA;AAAA,QAC3C,CAAA;AAAA,QACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,UAAA,MAAM,KAAK,CAAA,CAAE,aAAA;AACb,UAAA,EAAA,CAAG,MAAM,SAAA,GAAY,eAAA;AACrB,UAAA,EAAA,CAAG,MAAM,SAAA,GAAY,MAAA;AACrB,UAAA,EAAA,CAAG,MAAM,WAAA,GAAc,QAAA,GAClB,SAAS,uBAAA,GAA0B,uBAAA,GACpC,MAAM,MAAA,CAAO,MAAA;AAAA,QACnB,CAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAN,cAAAA,CAAC,eAAA,EAAA,EAAgB,MAAA,EAAgB,IAAA,EAAM,IAAI,OAAA,EAAkB,CAAA;AAAA,0BAE7DM,eAAA,CAAC,SAAI,KAAA,EAAO,EAAE,MAAM,CAAA,EAAG,QAAA,EAAU,GAAE,EACjC,QAAA,EAAA;AAAA,4BAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,KAAA,EAAM,EAC9D,QAAA,EAAA;AAAA,8BAAAN,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,YAAY,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,IAAA,EAAK,EACxE,iBAAO,IAAA,EACV,CAAA;AAAA,cACC,QAAA,oBACCA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,gBACX,QAAA,EAAU,MAAA;AAAA,gBACV,OAAA,EAAS,SAAA;AAAA,gBACT,UAAA,EAAY,2CAAA;AAAA,gBACZ,KAAA,EAAO,SAAA;AAAA,gBACP,YAAA,EAAc,KAAA;AAAA,gBACd,UAAA,EAAY,GAAA;AAAA,gBACZ,aAAA,EAAe,OAAA;AAAA,gBACf,UAAA,EAAY;AAAA,iBACX,QAAA,EAAA,UAAA,EAEH;AAAA,aAAA,EAEJ,CAAA;AAAA,4BACAM,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,cACV,QAAA,EAAU,MAAA;AAAA,cACV,OAAO,QAAA,GAAW,KAAA,CAAM,MAAA,CAAO,OAAA,GAAU,MAAM,MAAA,CAAO,aAAA;AAAA,cACtD,SAAA,EAAW,KAAA;AAAA,cACX,UAAA,EAAY,QAAA;AAAA,cACZ,QAAA,EAAU,QAAA;AAAA,cACV,YAAA,EAAc,UAAA;AAAA,cACd,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK;AAAA,aACP,EACG,QAAA,EAAA;AAAA,cAAA,QAAA,oBACCN,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,gBACX,KAAA,EAAO,KAAA;AAAA,gBACP,MAAA,EAAQ,KAAA;AAAA,gBACR,YAAA,EAAc,KAAA;AAAA,gBACd,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,gBAC9B,UAAA,EAAY;AAAA,eACd,EAAG,CAAA;AAAA,cAEJ,wBAAwB,MAAM;AAAA,aAAA,EACjC;AAAA,WAAA,EACF,CAAA;AAAA,0BAEAA,eAAC,SAAA,EAAA,EAAU,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,aAAA,EAAe;AAAA;AAAA,OAAA;AAAA,MAvFnD,MAAA,CAAO;AAAA,KAwFd;AAAA,EAEJ,CAAA;AAIA,EAAA,MAAM,sBAAsB,CAAC,KAAA,EAAe,OAAe,QAAA,qBACzDM,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX,EACE,QAAA,EAAA;AAAA,oBAAAN,cAAAA,CAAC,UAAK,KAAA,EAAO;AAAA,MACX,KAAA,EAAO,KAAA;AAAA,MACP,MAAA,EAAQ,KAAA;AAAA,MACR,YAAA,EAAc,KAAA;AAAA,MACd,eAAA,EAAiB,QAAA;AAAA,MACjB,UAAA,EAAY;AAAA,KACd,EAAG,CAAA;AAAA,oBACHA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,MACX,QAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAY,GAAA;AAAA,MACZ,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,MACpB,aAAA,EAAe,WAAA;AAAA,MACf,aAAA,EAAe;AAAA,OAEd,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,oBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,MACX,QAAA,EAAU,MAAA;AAAA,MACV,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,MACpB,OAAA,EAAS;AAAA,OAER,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,oBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,MACV,IAAA,EAAM,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,eAAA,EAAiB,MAAM,MAAA,CAAO;AAAA,KAChC,EAAG;AAAA,GAAA,EACL,CAAA;AAKF,EAAA,MAAM,cAAA,GAAiB,sBACrBM,eAAA,CAAAC,mBAAA,EAAA,EAEE,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,OAAO,WAAA,EACV,QAAA,EAAA;AAAA,sBAAAN,cAAAA,CAAC,QAAG,KAAA,EAAO;AAAA,QACT,MAAA,EAAQ,CAAA;AAAA,QACR,QAAA,EAAU,MAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,QACpB,aAAA,EAAe;AAAA,SACd,QAAA,EAAA,gBAAA,EAEH,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,WAAA;AAAA,UACT,KAAA,EAAO,aAAA;AAAA,UACP,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,YAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,OAAA;AAAA,UAAS,CAAA;AAAA,UACxE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,YAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,UAAS,CAAA;AAAA,UACrF,YAAA,EAAW,OAAA;AAAA,UAEX,QAAA,kBAAAA,eAAC,SAAA,EAAA,EAAU,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,aAAA,EAAe;AAAA;AAAA;AAC1D,KAAA,EACF,CAAA;AAAA,oBAGAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,MACV,OAAA,EAAS,aAAA;AAAA,MACT,SAAA,EAAW,oBAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb,EACG,QAAA,EAAA,SAAA,mBACCM,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS,EACnD,QAAA,EAAA;AAAA,sBAAAN,cAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,QACV,KAAA,EAAO,MAAA;AAAA,QACP,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,QACxC,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,CAAA;AAAA,QAC5C,YAAA,EAAc,KAAA;AAAA,QACd,SAAA,EAAW,sCAAA;AAAA,QACX,MAAA,EAAQ;AAAA,OACV,EAAG,CAAA;AAAA,sBACHA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAc,EAAG,QAAA,EAAA,wBAAA,EAErE;AAAA,KAAA,EACF,CAAA,GACE,OAAA,CAAQ,MAAA,KAAW,CAAA,mBACrBM,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,WAAA,EAAa,SAAA,EAAW,QAAA,EAAS,EACtD,QAAA,EAAA;AAAA,sBAAAN,cAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,QACV,KAAA,EAAO,MAAA;AAAA,QACP,MAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAc,MAAA;AAAA,QACd,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,QAC9B,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,MAAA,EAAQ;AAAA,OACV,EACE,QAAA,kBAAAA,cAAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAe,CAAA,EAC3D,CAAA;AAAA,sBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,UAAU,MAAA,EAAQ,UAAA,EAAY,GAAA,EAAK,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA,EAAM,YAAA,EAAc,KAAA,IAAS,QAAA,EAAA,kBAAA,EAElG,CAAA;AAAA,sBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAe,UAAA,EAAY,GAAA,IAAO,QAAA,EAAA,6DAAA,EAEtF;AAAA,KAAA,EACF,CAAA,mBAEAM,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,KAAA,EAAM,EAEhE,QAAA,EAAA;AAAA,MAAA,aAAA,CAAc,MAAA,GAAS,qBACtBA,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,mBAAA,CAAoB,iBAAA,EAAmB,aAAA,CAAc,MAAA,EAAQ,SAAS,CAAA;AAAA,QACtE,aAAA,CAAc,IAAI,gBAAgB;AAAA,OAAA,EACrC,CAAA;AAAA,MAID,eAAA,CAAgB,MAAA,GAAS,CAAA,oBACxBD,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,aAAA,CAAc,MAAA,GAAS,qBAAKP,cAAAA,CAAC,SAAI,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAG,CAAA;AAAA,QAC3D,mBAAA;AAAA,UACC,aAAA,CAAc,MAAA,GAAS,CAAA,GAAI,WAAA,GAAc,SAAA;AAAA,UACzC,eAAA,CAAgB,MAAA;AAAA,UAChB,MAAM,MAAA,CAAO;AAAA,SACf;AAAA,QACC,eAAA,CAAgB,IAAI,gBAAgB;AAAA,OAAA,EACvC;AAAA,KAAA,EAEJ,CAAA,EAEJ,CAAA;AAAA,oBAGAM,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,MACV,OAAA,EAAS,gBAAA;AAAA,MACT,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,MAC3C,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,GAAA,EAAK;AAAA,KACP,EACE,QAAA,EAAA;AAAA,sBAAAN,eAAC,UAAA,EAAA,EAAW,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,aAAA,EAAe,CAAA;AAAA,sBACzDA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAc,EAAG,QAAA,EAAA,oBAAA,EAEtE,CAAA;AAAA,MACC,cAAA,EAAgB,4BACfM,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAP,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAc,EAAG,QAAA,EAAA,MAAA,EAAC,CAAA;AAAA,wBACvEA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAA,EAAA,UAAA,EAAQ;AAAA,OAAA,EAC1E;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAGF,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAC5B,IAAA,MAAM,UAAU,iBAAA,CAAkB,cAAA,CAAe,UAAU,WAAA,EAAa,cAAA,CAAe,OAAO,EAAE,CAAA;AAEhG,IAAA,uBACEM,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,OAAO,WAAA,EACV,QAAA,EAAA;AAAA,wBAAAA,eAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,gBAAA;AAAA,YACT,KAAA,EAAO,EAAE,GAAG,YAAA,EAAc,OAAO,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,GAAA,EAAK,KAAA,EAAM;AAAA,YACvE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,OAAA;AAAA,YAAS,CAAA;AAAA,YACxE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,YAAS,CAAA;AAAA,YAErF,QAAA,EAAA;AAAA,8BAAAN,eAAC,QAAA,EAAA,EAAS,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,aAAA,EAAe,CAAA;AAAA,8BACvDA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAe,UAAA,EAAY,GAAA,IAAO,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA,SAC7F;AAAA,wBACAA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA;AAAA,YACT,KAAA,EAAO,aAAA;AAAA,YACP,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,OAAA;AAAA,YAAS,CAAA;AAAA,YACxE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,YAAS,CAAA;AAAA,YACrF,YAAA,EAAW,OAAA;AAAA,YAEX,QAAA,kBAAAA,eAAC,SAAA,EAAA,EAAU,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,aAAA,EAAe;AAAA;AAAA;AAC1D,OAAA,EACF,CAAA;AAAA,sBAEAM,eAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAS,gBAAA,EAAkB,SAAA,EAAW,UAAS,EAE3D,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,UAAA;AAAA,UACV,KAAA,EAAO,MAAA;AAAA,UACP,MAAA,EAAQ,MAAA;AAAA,UACR,MAAA,EAAQ;AAAA,SACV,EACE,QAAA,EAAA;AAAA,0BAAAN,cAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,YACV,QAAA,EAAU,UAAA;AAAA,YACV,KAAA,EAAO,MAAA;AAAA,YACP,YAAA,EAAc,MAAA;AAAA,YACd,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,YACxC,cAAA,EAAgB,MAAM,MAAA,CAAO,OAAA;AAAA,YAC7B,SAAA,EAAW;AAAA,WACb,EAAG,CAAA;AAAA,0BACHA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,YACV,QAAA,EAAU,UAAA;AAAA,YACV,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAc,MAAA;AAAA,YACd,QAAA,EAAU;AAAA,WACZ,EACE,0BAAAA,cAAAA,CAAC,eAAA,EAAA,EAAgB,QAAQ,cAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,OAAA,EAAkB,CAAA,EACvE;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAM,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,MAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,UACpB,YAAA,EAAc;AAAA,SAChB,EAAG,QAAA,EAAA;AAAA,UAAA,UAAA;AAAA,UACQ,cAAA,CAAe;AAAA,SAAA,EAC1B,CAAA;AAAA,wBACAN,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,MAAA;AAAA,UACV,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,UACpB,UAAA,EAAY,GAAA;AAAA,UACZ,YAAA,EAAc;AAAA,WACb,QAAA,EAAA,uCAAA,EAEH,CAAA;AAAA,wBAEAA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,gBAAA;AAAA,YACT,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,WAAA;AAAA,cACT,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,cACxC,YAAA,EAAc,MAAA;AAAA,cACd,eAAA,EAAiB,aAAA;AAAA,cACjB,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,cACpB,MAAA,EAAQ,SAAA;AAAA,cACR,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,GAAA;AAAA,cACZ,YAAY,KAAA,CAAM,UAAA;AAAA,cAClB,UAAA,EAAY;AAAA,aACd;AAAA,YACA,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,YAAS,CAAA;AAAA,YACrF,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,aAAA;AAAA,YAAe,CAAA;AAAA,YAC/E,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAC5B,IAAA,MAAM,UAAU,iBAAA,CAAkB,cAAA,CAAe,UAAU,WAAA,EAAa,cAAA,CAAe,OAAO,EAAE,CAAA;AAEhG,IAAA,uBACEM,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,OAAO,WAAA,EACV,QAAA,EAAA;AAAA,wBAAAN,eAAC,KAAA,EAAA,EAAI,CAAA;AAAA,wBACLA,cAAAA,CAAC,QAAA,EAAA,EAAO,SAAS,WAAA,EAAa,KAAA,EAAO,eAAe,YAAA,EAAW,OAAA,EAC7D,QAAA,kBAAAA,cAAAA,CAAC,aAAU,IAAA,EAAM,EAAA,EAAI,OAAO,KAAA,CAAM,MAAA,CAAO,eAAe,CAAA,EAC1D;AAAA,OAAA,EACF,CAAA;AAAA,sBAEAM,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,QACV,OAAA,EAAS,gBAAA;AAAA,QACT,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACb,EACE,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,UAAA;AAAA,UACV,KAAA,EAAO,MAAA;AAAA,UACP,MAAA,EAAQ,MAAA;AAAA,UACR,MAAA,EAAQ;AAAA,SACV,EACE,QAAA,EAAA;AAAA,0BAAAN,cAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,YACV,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAc,MAAA;AAAA,YACd,QAAA,EAAU;AAAA,WACZ,EACE,0BAAAA,cAAAA,CAAC,eAAA,EAAA,EAAgB,QAAQ,cAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,OAAA,EAAkB,CAAA,EACvE,CAAA;AAAA,0BAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,YACV,QAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,MAAA;AAAA,YACR,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAc,KAAA;AAAA,YACd,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,YAC9B,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB,QAAA;AAAA,YAChB,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,UAAU,CAAA;AAAA,WAC9C,EACE,0BAAAA,cAAAA,CAAC,SAAA,EAAA,EAAU,MAAM,EAAA,EAAI,KAAA,EAAM,WAAU,CAAA,EACvC;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,MAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,UACpB,YAAA,EAAc;AAAA,WACb,QAAA,EAAA,WAAA,EAEH,CAAA;AAAA,wBACAM,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,QAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,OAAA,EAAQ,EACzD,QAAA,EAAA;AAAA,UAAA,cAAA,CAAe,IAAA;AAAA,UAAK;AAAA,SAAA,EACvB;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAC5B,IAAA,MAAM,UAAU,iBAAA,CAAkB,cAAA,CAAe,UAAU,WAAA,EAAa,cAAA,CAAe,OAAO,EAAE,CAAA;AAEhG,IAAA,uBACEA,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,OAAO,WAAA,EACV,QAAA,EAAA;AAAA,wBAAAA,eAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,gBAAA;AAAA,YACT,KAAA,EAAO,EAAE,GAAG,YAAA,EAAc,OAAO,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,GAAA,EAAK,KAAA,EAAM;AAAA,YACvE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,OAAA;AAAA,YAAS,CAAA;AAAA,YACxE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,YAAS,CAAA;AAAA,YAErF,QAAA,EAAA;AAAA,8BAAAN,eAAC,QAAA,EAAA,EAAS,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,aAAA,EAAe,CAAA;AAAA,8BACvDA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAe,UAAA,EAAY,GAAA,IAAO,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA,SAC7F;AAAA,wBACAA,cAAAA,CAAC,QAAA,EAAA,EAAO,SAAS,WAAA,EAAa,KAAA,EAAO,eAAe,YAAA,EAAW,OAAA,EAC7D,QAAA,kBAAAA,cAAAA,CAAC,aAAU,IAAA,EAAM,EAAA,EAAI,OAAO,KAAA,CAAM,MAAA,CAAO,eAAe,CAAA,EAC1D;AAAA,OAAA,EACF,CAAA;AAAA,sBAEAM,eAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAS,gBAAA,EAAkB,SAAA,EAAW,UAAS,EAC3D,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,UAAA;AAAA,UACV,KAAA,EAAO,MAAA;AAAA,UACP,MAAA,EAAQ,MAAA;AAAA,UACR,MAAA,EAAQ,aAAA;AAAA,UACR,OAAA,EAAS;AAAA,SACX,EACE,QAAA,EAAA;AAAA,0BAAAN,cAAAA,CAAC,SAAI,KAAA,EAAO,EAAE,OAAO,MAAA,EAAQ,MAAA,EAAQ,QAAQ,YAAA,EAAc,MAAA,EAAQ,UAAU,QAAA,EAAS,EACpF,0BAAAA,cAAAA,CAAC,eAAA,EAAA,EAAgB,QAAQ,cAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,OAAA,EAAkB,CAAA,EACvE,CAAA;AAAA,0BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,YACV,QAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,MAAA;AAAA,YACR,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAc,KAAA;AAAA,YACd,eAAA,EAAiB,MAAM,MAAA,CAAO,KAAA;AAAA,YAC9B,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB,QAAA;AAAA,YAChB,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,UAAU,CAAA;AAAA,WAC9C,EACE,0BAAAA,cAAAA,CAAC,UAAA,EAAA,EAAW,MAAM,EAAA,EAAI,KAAA,EAAM,WAAU,CAAA,EACxC;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,MAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,UACpB,YAAA,EAAc;AAAA,WACb,QAAA,EAAA,mBAAA,EAEH,CAAA;AAAA,QAAA,CAEE,YAAA,IAAgB,KAAA,qBAChBA,cAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,MAAA;AAAA,UACV,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,UACpB,UAAA,EAAY,GAAA;AAAA,UACZ,QAAA,EAAU,OAAA;AAAA,UACV,MAAA,EAAQ;AAAA,SACV,EACG,QAAA,EAAA,eAAA,CAAgB,YAAA,IAAgB,KAAM,CAAA,EACzC,CAAA;AAAA,wBAGFM,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,GAAA,EAAK,MAAA,EAAQ,cAAA,EAAgB,QAAA,EAAS,EACnE,QAAA,EAAA;AAAA,0BAAAN,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,WAAA;AAAA,cACT,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,WAAA;AAAA,gBACT,MAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAc,MAAA;AAAA,gBACd,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,gBAC9B,KAAA,EAAO,SAAA;AAAA,gBACP,MAAA,EAAQ,SAAA;AAAA,gBACR,QAAA,EAAU,MAAA;AAAA,gBACV,UAAA,EAAY,GAAA;AAAA,gBACZ,YAAY,KAAA,CAAM,UAAA;AAAA,gBAClB,UAAA,EAAY;AAAA,eACd;AAAA,cACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,gBAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,YAAA;AACrD,gBAAA,CAAA,CAAE,aAAA,CAAc,MAAM,SAAA,GAAY,kBAAA;AAAA,cACpC,CAAA;AAAA,cACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,gBAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AACrD,gBAAA,CAAA,CAAE,aAAA,CAAc,MAAM,SAAA,GAAY,eAAA;AAAA,cACpC,CAAA;AAAA,cACD,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,gBAAA;AAAA,cACT,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,WAAA;AAAA,gBACT,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,gBACxC,YAAA,EAAc,MAAA;AAAA,gBACd,eAAA,EAAiB,aAAA;AAAA,gBACjB,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,gBACpB,MAAA,EAAQ,SAAA;AAAA,gBACR,QAAA,EAAU,MAAA;AAAA,gBACV,UAAA,EAAY,GAAA;AAAA,gBACZ,YAAY,KAAA,CAAM,UAAA;AAAA,gBAClB,UAAA,EAAY;AAAA,eACd;AAAA,cACA,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,gBAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,cAAS,CAAA;AAAA,cACrF,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,gBAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,aAAA;AAAA,cAAe,CAAA;AAAA,cAC/E,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAC5B,IAAA,MAAM,UAAU,iBAAA,CAAkB,cAAA,CAAe,UAAU,WAAA,EAAa,cAAA,CAAe,OAAO,EAAE,CAAA;AAChG,IAAA,MAAM,UAAA,GAAa,aAAa,cAAc,CAAA;AAE9C,IAAA,uBACEM,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,OAAO,WAAA,EACV,QAAA,EAAA;AAAA,wBAAAA,eAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,gBAAA;AAAA,YACT,KAAA,EAAO,EAAE,GAAG,YAAA,EAAc,OAAO,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,GAAA,EAAK,KAAA,EAAM;AAAA,YACvE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,OAAA;AAAA,YAAS,CAAA;AAAA,YACxE,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,cAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,YAAS,CAAA;AAAA,YAErF,QAAA,EAAA;AAAA,8BAAAN,eAAC,QAAA,EAAA,EAAS,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,aAAA,EAAe,CAAA;AAAA,8BACvDA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,aAAA,EAAe,UAAA,EAAY,GAAA,IAAO,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA,SAC7F;AAAA,wBACAA,cAAAA,CAAC,QAAA,EAAA,EAAO,SAAS,WAAA,EAAa,KAAA,EAAO,eAAe,YAAA,EAAW,OAAA,EAC7D,QAAA,kBAAAA,cAAAA,CAAC,aAAU,IAAA,EAAM,EAAA,EAAI,OAAO,KAAA,CAAM,MAAA,CAAO,eAAe,CAAA,EAC1D;AAAA,OAAA,EACF,CAAA;AAAA,sBAEAM,eAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAS,gBAAA,EAAkB,SAAA,EAAW,UAAS,EAE3D,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,UAAA;AAAA,UACV,KAAA,EAAO,MAAA;AAAA,UACP,MAAA,EAAQ,MAAA;AAAA,UACR,MAAA,EAAQ;AAAA,SACV,EACE,QAAA,EAAA;AAAA,0BAAAN,cAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,YACV,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAc,MAAA;AAAA,YACd,QAAA,EAAU,QAAA;AAAA,YACV,OAAA,EAAS;AAAA,WACX,EACE,0BAAAA,cAAAA,CAAC,eAAA,EAAA,EAAgB,QAAQ,cAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,OAAA,EAAkB,CAAA,EACvE,CAAA;AAAA,0BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,YACV,QAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,MAAA;AAAA,YACR,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAc,KAAA;AAAA,YACd,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,YAC9B,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB,QAAA;AAAA,YAChB,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,UAAU,CAAA;AAAA,WAC9C,EACE,0BAAAA,cAAAA,CAAC,YAAA,EAAA,EAAa,MAAM,EAAA,EAAI,KAAA,EAAM,WAAU,CAAA,EAC1C;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAM,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,MAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,UACpB,YAAA,EAAc;AAAA,SAChB,EACG,QAAA,EAAA;AAAA,UAAA,cAAA,CAAe,IAAA;AAAA,UAAK;AAAA,SAAA,EACvB,CAAA;AAAA,wBAEAA,eAAA,CAAC,SAAI,KAAA,EAAO;AAAA,UACV,QAAA,EAAU,MAAA;AAAA,UACV,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,UACpB,UAAA,EAAY,GAAA;AAAA,UACZ,QAAA,EAAU,OAAA;AAAA,UACV,MAAA,EAAQ;AAAA,SACV,EACG,QAAA,EAAA;AAAA,UAAA,cAAA,CAAe,IAAA;AAAA,UAAK;AAAA,SAAA,EACvB,CAAA;AAAA,wBAEAA,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAS,EACvF,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCA,eAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,UAAA;AAAA,cACN,MAAA,EAAO,QAAA;AAAA,cACP,GAAA,EAAI,qBAAA;AAAA,cACJ,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,aAAA;AAAA,gBACT,UAAA,EAAY,QAAA;AAAA,gBACZ,GAAA,EAAK,KAAA;AAAA,gBACL,OAAA,EAAS,WAAA;AAAA,gBACT,MAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAc,MAAA;AAAA,gBACd,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,gBAC9B,KAAA,EAAO,SAAA;AAAA,gBACP,MAAA,EAAQ,SAAA;AAAA,gBACR,QAAA,EAAU,MAAA;AAAA,gBACV,UAAA,EAAY,GAAA;AAAA,gBACZ,YAAY,KAAA,CAAM,UAAA;AAAA,gBAClB,cAAA,EAAgB,MAAA;AAAA,gBAChB,UAAA,EAAY;AAAA,eACd;AAAA,cACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,gBAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,eAAA,GAAkB,MAAM,MAAA,CAAO,YAAA;AACtE,gBAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,SAAA,GAAY,kBAAA;AAAA,cACrD,CAAA;AAAA,cACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,gBAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,eAAA,GAAkB,MAAM,MAAA,CAAO,OAAA;AACtE,gBAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,SAAA,GAAY,eAAA;AAAA,cACrD,CAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAN,cAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI,OAAM,SAAA,EAAU,CAAA;AAAA,gBAAE,UAAA;AAAA,gBACjC,cAAA,CAAe,IAAA;AAAA,gCACxBA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAM,EAAA,EAAI,OAAM,SAAA,EAAU;AAAA;AAAA;AAAA,WAC9C;AAAA,0BAGFM,eAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,GAAA,EAAK,QAAO,EACzC,QAAA,EAAA;AAAA,4BAAAN,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,WAAA;AAAA,gBACT,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,WAAA;AAAA,kBACT,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,kBACxC,YAAA,EAAc,MAAA;AAAA,kBACd,eAAA,EAAiB,aAAA;AAAA,kBACjB,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,kBACpB,MAAA,EAAQ,SAAA;AAAA,kBACR,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,GAAA;AAAA,kBACZ,YAAY,KAAA,CAAM,UAAA;AAAA,kBAClB,UAAA,EAAY;AAAA,iBACd;AAAA,gBACA,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,gBAAS,CAAA;AAAA,gBACrF,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,aAAA;AAAA,gBAAe,CAAA;AAAA,gBAC/E,QAAA,EAAA;AAAA;AAAA,aAED;AAAA,4BACAA,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,gBAAA;AAAA,gBACT,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,WAAA;AAAA,kBACT,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,kBACxC,YAAA,EAAc,MAAA;AAAA,kBACd,eAAA,EAAiB,aAAA;AAAA,kBACjB,KAAA,EAAO,MAAM,MAAA,CAAO,aAAA;AAAA,kBACpB,MAAA,EAAQ,SAAA;AAAA,kBACR,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,GAAA;AAAA,kBACZ,YAAY,KAAA,CAAM,UAAA;AAAA,kBAClB,UAAA,EAAY;AAAA,iBACd;AAAA,gBACA,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,KAAA,CAAM,MAAA,CAAO,OAAA;AAAA,gBAAS,CAAA;AAAA,gBACrF,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,aAAA;AAAA,gBAAe,CAAA;AAAA,gBAC/E,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EACF;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAIA,EAAA,uBACEM,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,YAAA;AAAA,MACP,OAAA,EAAS,WAAA;AAAA,MACT,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,MAAA;AAAA,MACX,YAAA,EAAW,gBAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAAA,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAO,UAAA;AAAA,YACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,YAEjC,QAAA,EAAA;AAAA,cAAA,IAAA,KAAS,UAAU,cAAA,EAAe;AAAA,cAClC,IAAA,KAAS,gBAAgB,oBAAA,EAAqB;AAAA,cAC9C,IAAA,KAAS,aAAa,iBAAA,EAAkB;AAAA,cACxC,IAAA,KAAS,WAAW,eAAA,EAAgB;AAAA,cACpC,IAAA,KAAS,mBAAmB,sBAAA;AAAuB;AAAA;AAAA,SACtD;AAAA,wBAEAN,eAAC,OAAA,EAAA,EAAO,QAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,EAaN;AAAA;AAAA;AAAA,GACJ;AAEJ;ACnkCO,SAAS,eAAA,CAAgB,EAAA,EAAY,KAAA,GAAQ,CAAA,EAAW;AAC7D,EAAA,IAAI,EAAA,CAAG,MAAA,IAAU,KAAA,GAAQ,CAAA,GAAI,GAAG,OAAO,EAAA;AACvC,EAAA,OAAO,CAAA,EAAG,EAAA,CAAG,KAAA,CAAM,CAAA,EAAG,KAAK,CAAC,CAAA,GAAA,EAAM,EAAA,CAAG,KAAA,CAAM,CAAC,KAAK,CAAC,CAAA,CAAA;AACpD;AAIA,SAAS,WAAW,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC5F,EAAA,uBACEM,eAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,EAAY,KAAI,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAClI,QAAA,EAAA;AAAA,oBAAAN,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+BAAA,EAAgC,CAAA;AAAA,oBACxCA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6BAAA,EAA8B,CAAA;AAAA,oBACtCA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+BAAA,EAAgC;AAAA,GAAA,EAC1C,CAAA;AAEJ;AAEA,SAAS,UAAU,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC3F,EAAA,uBACEM,eAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,EAAY,KAAI,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAClI,QAAA,EAAA;AAAA,oBAAAN,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+BAAA,EAAgC,CAAA;AAAA,oBACxCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA,GAAA,EACvC,CAAA;AAEJ;AAEA,SAAS,YAAY,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,gBAAe,EAAsC;AAC7F,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAQ,OAAO,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EACpI,0BAAAA,cAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB,CAAA,EACpC,CAAA;AAEJ;AAIO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA,GAAQ,gBAAA;AAAA,EACR,cAAA,GAAiB,SAAA;AAAA,EACjB,aAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA,GAAiB;AACnB,CAAA,EAAuB;AACrB,EAAA,MAAM,UAAU,UAAA,EAAW;AAC3B,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,UAAA,EAAW;AACpC,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,aAAA,EAAc;AACrC,EAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIH,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,WAAA,GAAcK,aAAuB,IAAI,CAAA;AAG/C,EAAAJ,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAA,EAAc;AACnB,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AACjC,MAAA,IAAI,WAAA,CAAY,WAAW,CAAC,WAAA,CAAY,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC1E,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC9C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,OAAO,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,gBAAA,GAAmBG,kBAAY,YAAY;AAC/C,IAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,IAAA,IAAI;AACF,MAAA,MAAM,UAAA,EAAW;AAAA,IACnB,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAIf,EAAA,MAAM,mBAAmB,MAAc;AACrC,IAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AACrB,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA;AAEtC,IAAA,QAAQ,cAAA;AAAgB,MACtB,KAAK,QAAA;AACH,QAAA,OAAO,MAAA,CAAO,QAAQ,QAAQ,CAAA;AAAA,MAChC,KAAK,QAAA;AACH,QAAA,OAAO,aAAA,GAAgB,aAAA,CAAc,OAAO,CAAA,GAAI,gBAAgB,OAAO,CAAA;AAAA,MACzE,KAAK,SAAA;AAAA,MACL;AACE,QAAA,OAAO,gBAAgB,OAAO,CAAA;AAAA;AAClC,EACF,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,MAAM,IAAA,KAAS,MAAA;AAC9B,EAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,OAAA;AACjC,EAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,YAAA;AAChC,EAAA,MAAM,WAAA,GAAc,SAAA;AAIpB,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,YAAA,EAAc;AAC7B,IAAA,uBACEK,eAAAA,CAAAC,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAD,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,UAChC,SAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,aAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,GAAA,EAAK,KAAA;AAAA,YACL,OAAA,EAAS,WAAA;AAAA,YACT,MAAA,EAAQ,MAAA;AAAA,YACR,cAAc,KAAA,CAAM,YAAA;AAAA,YACpB,MAAA,EAAQ,SAAA;AAAA,YACR,QAAA,EAAU,MAAA;AAAA,YACV,UAAA,EAAY,GAAA;AAAA,YACZ,YAAY,KAAA,CAAM,UAAA;AAAA,YAClB,eAAA,EAAiB,WAAA;AAAA,YACjB,KAAA,EAAO,WAAA;AAAA,YACP,SAAA,EAAW,6CAA6C,WAAW,CAAA,EAAA,CAAA;AAAA,YACnE,UAAA,EAAY,0CAAA;AAAA,YACZ,GAAG;AAAA,WACL;AAAA,UACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,YAAA,MAAM,MAAM,CAAA,CAAE,aAAA;AACd,YAAA,GAAA,CAAI,MAAM,eAAA,GAAkB,UAAA;AAC5B,YAAA,GAAA,CAAI,KAAA,CAAM,SAAA,GAAY,CAAA,4CAAA,EAA+C,WAAW,CAAA,EAAA,CAAA;AAChF,YAAA,GAAA,CAAI,MAAM,SAAA,GAAY,kBAAA;AAAA,UACxB,CAAA;AAAA,UACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,YAAA,MAAM,MAAM,CAAA,CAAE,aAAA;AACd,YAAA,GAAA,CAAI,MAAM,eAAA,GAAkB,WAAA;AAC5B,YAAA,GAAA,CAAI,KAAA,CAAM,SAAA,GAAY,CAAA,0CAAA,EAA6C,WAAW,CAAA,EAAA,CAAA;AAC9E,YAAA,GAAA,CAAI,MAAM,SAAA,GAAY,eAAA;AAAA,UACxB,CAAA;AAAA,UACA,WAAA,EAAa,CAAC,CAAA,KAAM;AAClB,YAAC,CAAA,CAAE,aAAA,CAAoC,KAAA,CAAM,SAAA,GAAY,2BAAA;AAAA,UAC3D,CAAA;AAAA,UACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,YAAC,CAAA,CAAE,aAAA,CAAoC,KAAA,CAAM,SAAA,GAAY,2BAAA;AAAA,UAC3D,CAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAN,cAAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,EAAA,EAAI,OAAO,WAAA,EAAa,CAAA;AAAA,YACzC;AAAA;AAAA;AAAA,OACH;AAAA,sBACAA,cAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,UACjC,SAAA,EAAW,MAAM,YAAA,CAAa,KAAK;AAAA;AAAA,OACrC;AAAA,sBACAA,cAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,CAAA,gEAAA,CAAA,EAAmE;AAAA,KAAA,EAC7E,CAAA;AAAA,EAEJ;AAIA,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,uBACEM,eAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,aAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK,KAAA;AAAA,UACL,OAAA,EAAS,WAAA;AAAA,UACT,MAAA,EAAQ,MAAA;AAAA,UACR,cAAc,KAAA,CAAM,YAAA;AAAA,UACpB,MAAA,EAAQ,MAAA;AAAA,UACR,QAAA,EAAU,MAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,YAAY,KAAA,CAAM,UAAA;AAAA,UAClB,eAAA,EAAiB,WAAA;AAAA,UACjB,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS,IAAA;AAAA,UACT,SAAA,EAAW,aAAa,WAAW,CAAA,EAAA,CAAA;AAAA,UACnC,SAAA,EAAW,gDAAA;AAAA,UACX,GAAG;AAAA,SACL;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAN,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,cAAA;AAAA,gBACT,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA,EAAQ,MAAA;AAAA,gBACR,MAAA,EAAQ,aAAa,WAAW,CAAA,EAAA,CAAA;AAAA,gBAChC,SAAA,EAAW,aAAa,WAAW,CAAA,CAAA;AAAA,gBACnC,YAAA,EAAc,KAAA;AAAA,gBACd,SAAA,EAAW,sCAAA;AAAA,gBACX,UAAA,EAAY;AAAA;AACd;AAAA,WACF;AAAA,UAAE,eAAA;AAAA,0BAEFA,eAAC,OAAA,EAAA,EAAO,QAAA,EAAA;AAAA;AAAA;AAAA,6CAAA,EAG+B,WAAW,CAAA;AAAA,wCAAA,EAChB,WAAW,CAAA;AAAA;AAAA,QAAA,CAAA,EAE3C;AAAA;AAAA;AAAA,KACJ;AAAA,EAEJ;AAIA,EAAA,MAAM,gBAAA,GAAmB,MAAA,CAAO,OAAA,CAAS,OAAO,CAAA;AAChD,EAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,OAAA,CAAS,QAAQ,CAAA;AAElD,EAAA,uBACEM,eAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,WAAA,EAAa,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,OAAA,EAAS,cAAA,EAAe,EAC5E,QAAA,EAAA;AAAA,oBAAAA,eAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,MAAM,eAAA,CAAgB,CAAC,YAAY,CAAA;AAAA,QAC5C,SAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,aAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK,KAAA;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,UACxC,cAAc,KAAA,CAAM,YAAA;AAAA,UACpB,MAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAU,MAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,YAAY,KAAA,CAAM,UAAA;AAAA,UAClB,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,UAC9B,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,UACpB,SAAA,EAAW,kCAAA;AAAA,UACX,UAAA,EAAY,0CAAA;AAAA,UACZ,GAAG;AAAA,SACL;AAAA,QACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,UAAA,MAAM,MAAM,CAAA,CAAE,aAAA;AACd,UAAA,GAAA,CAAI,KAAA,CAAM,WAAA,GAAc,MAAA,GAAS,wBAAA,GAA2B,qBAAA;AAC5D,UAAA,GAAA,CAAI,MAAM,SAAA,GAAY,kCAAA;AAAA,QACxB,CAAA;AAAA,QACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,UAAA,MAAM,MAAM,CAAA,CAAE,aAAA;AACd,UAAA,GAAA,CAAI,KAAA,CAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAO,MAAA;AACrC,UAAA,GAAA,CAAI,MAAM,SAAA,GAAY,kCAAA;AAAA,QACxB,CAAA;AAAA,QAGA,QAAA,EAAA;AAAA,0BAAAN,cAAAA,CAAC,UAAK,KAAA,EAAO;AAAA,YACX,KAAA,EAAO,KAAA;AAAA,YACP,MAAA,EAAQ,KAAA;AAAA,YACR,YAAA,EAAc,KAAA;AAAA,YACd,eAAA,EAAiB,MAAM,MAAA,CAAO,OAAA;AAAA,YAC9B,UAAA,EAAY,CAAA;AAAA,YACZ,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAAA,WAC9C,EAAG,CAAA;AAAA,0BAEHA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,YACX,UAAA,EAAY,kEAAA;AAAA,YACZ,QAAA,EAAU,MAAA;AAAA,YACV,KAAA,EAAO,MAAM,MAAA,CAAO;AAAA,WACtB,EACG,4BAAiB,EACpB,CAAA;AAAA,UAEC,kCACCA,cAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,EAAA;AAAA,cACN,KAAA,EAAO,MAAM,MAAA,CAAO;AAAA;AAAA;AACtB;AAAA;AAAA,KAEJ;AAAA,IAGC,YAAA,IAAgB,kCACfM,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,UAAA;AAAA,UACV,GAAA,EAAK,kBAAA;AAAA,UACL,KAAA,EAAO,CAAA;AAAA,UACP,eAAA,EAAiB,MAAM,MAAA,CAAO,UAAA;AAAA,UAC9B,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,UACxC,cAAc,KAAA,CAAM,YAAA;AAAA,UACpB,SAAA,EAAW,SACP,yDAAA,GACA,iEAAA;AAAA,UACJ,QAAA,EAAU,OAAA;AAAA,UACV,MAAA,EAAQ,GAAA;AAAA,UACR,QAAA,EAAU,QAAA;AAAA,UACV,SAAA,EAAW;AAAA,SACb;AAAA,QAGA,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,YACV,OAAA,EAAS,WAAA;AAAA,YACT,YAAA,EAAc,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA;AAAA,WAChD,EACE,QAAA,EAAA;AAAA,4BAAAA,eAAAA,CAAC,SAAI,KAAA,EAAO;AAAA,cACV,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK,KAAA;AAAA,cACL,YAAA,EAAc;AAAA,aAChB,EACE,QAAA,EAAA;AAAA,8BAAAN,cAAAA,CAAC,UAAK,KAAA,EAAO;AAAA,gBACX,KAAA,EAAO,KAAA;AAAA,gBACP,MAAA,EAAQ,KAAA;AAAA,gBACR,YAAA,EAAc,KAAA;AAAA,gBACd,eAAA,EAAiB,MAAM,MAAA,CAAO;AAAA,eAChC,EAAG,CAAA;AAAA,8BACHA,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,gBACX,QAAA,EAAU,MAAA;AAAA,gBACV,UAAA,EAAY,GAAA;AAAA,gBACZ,KAAA,EAAO,MAAM,MAAA,CAAO,OAAA;AAAA,gBACpB,aAAA,EAAe,WAAA;AAAA,gBACf,aAAA,EAAe;AAAA,iBACd,QAAA,EAAA,WAAA,EAEH;AAAA,aAAA,EACF,CAAA;AAAA,4BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,cACV,UAAA,EAAY,kEAAA;AAAA,cACZ,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,MAAM,MAAA,CAAO,IAAA;AAAA,cACpB,SAAA,EAAW,WAAA;AAAA,cACX,UAAA,EAAY;AAAA,aACd,EACG,QAAA,EAAA,eAAA,CAAgB,gBAAA,EAAkB,EAAE,CAAA,EACvC,CAAA;AAAA,4BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO;AAAA,cACV,SAAA,EAAW,KAAA;AAAA,cACX,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,MAAM,MAAA,CAAO;AAAA,eAEnB,QAAA,EAAA,iBAAA,EACH;AAAA,WAAA,EACF,CAAA;AAAA,0BAGAM,eAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,gBAAA;AAAA,cACT,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,MAAA;AAAA,gBACT,UAAA,EAAY,QAAA;AAAA,gBACZ,GAAA,EAAK,KAAA;AAAA,gBACL,KAAA,EAAO,MAAA;AAAA,gBACP,OAAA,EAAS,WAAA;AAAA,gBACT,MAAA,EAAQ,MAAA;AAAA,gBACR,eAAA,EAAiB,aAAA;AAAA,gBACjB,KAAA,EAAO,MAAM,MAAA,CAAO,KAAA;AAAA,gBACpB,MAAA,EAAQ,SAAA;AAAA,gBACR,SAAA,EAAW,MAAA;AAAA,gBACX,QAAA,EAAU,MAAA;AAAA,gBACV,UAAA,EAAY,GAAA;AAAA,gBACZ,YAAY,KAAA,CAAM,UAAA;AAAA,gBAClB,UAAA,EAAY;AAAA,eACd;AAAA,cACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,gBAAC,CAAA,CAAE,aAAA,CAAoC,KAAA,CAAM,eAAA,GAAkB,MAAM,MAAA,CAAO,OAAA;AAAA,cAC9E,CAAA;AAAA,cACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,gBAAC,CAAA,CAAE,aAAA,CAAoC,KAAA,CAAM,eAAA,GAAkB,aAAA;AAAA,cACjE,CAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAN,eAAC,SAAA,EAAA,EAAU,IAAA,EAAM,IAAI,KAAA,EAAO,KAAA,CAAM,OAAO,KAAA,EAAO,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA;AAEpD;AAAA;AAAA,KACF;AAAA,oBAGFA,eAAC,OAAA,EAAA,EAAO,QAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,EAKN;AAAA,GAAA,EACJ,CAAA;AAEJ","file":"index.js","sourcesContent":["/**\n * Native CIP-0103 Adapter\n *\n * Wraps a discovered CIP-0103 Provider into the PartyLayer WalletAdapter interface.\n * This allows native CIP-0103 wallets (injected at window.canton.* etc.) to be used\n * through the standard SDK connect flow alongside registry-based adapters.\n */\n\nimport type {\n WalletId,\n PartyId,\n CapabilityKey,\n Session,\n WalletInfo,\n WalletAdapter,\n AdapterContext,\n AdapterDetectResult,\n AdapterConnectResult,\n SignedMessage,\n SignedTransaction,\n TxReceipt,\n SignMessageParams,\n SignTransactionParams,\n SubmitTransactionParams,\n} from '@partylayer/sdk';\nimport type {\n CIP0103Provider,\n CIP0103ConnectResult,\n CIP0103StatusEvent,\n CIP0103Account,\n DiscoveredProvider,\n} from '@partylayer/sdk';\n\n// โโโ Adapter โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * A WalletAdapter that delegates to a native CIP-0103 Provider.\n *\n * Created dynamically when a CIP-0103 provider is discovered at runtime.\n * Routes all SDK operations through the provider's `request()` method.\n */\nexport class NativeCIP0103Adapter implements WalletAdapter {\n readonly walletId: WalletId;\n readonly name: string;\n private provider: CIP0103Provider;\n\n constructor(id: string, name: string, provider: CIP0103Provider) {\n this.walletId = id as WalletId;\n this.name = name;\n this.provider = provider;\n }\n\n getCapabilities(): CapabilityKey[] {\n return [\n 'connect',\n 'disconnect',\n 'signMessage',\n 'signTransaction',\n 'submitTransaction',\n 'injected',\n ];\n }\n\n async detectInstalled(): Promise<AdapterDetectResult> {\n // Already discovered โ always installed\n return { installed: true };\n }\n\n async connect(\n _ctx: AdapterContext,\n _opts?: { timeoutMs?: number; partyId?: PartyId },\n ): Promise<AdapterConnectResult> {\n // 1. Connect\n const connectResult = await this.provider.request<CIP0103ConnectResult>({\n method: 'connect',\n });\n\n if (!connectResult.isConnected) {\n throw new Error(connectResult.reason || 'Connection rejected by wallet');\n }\n\n // 2. Get primary account for partyId\n let partyId = 'unknown';\n try {\n const account = await this.provider.request<CIP0103Account>({\n method: 'getPrimaryAccount',\n });\n partyId = account.partyId;\n } catch {\n // Some providers may not implement getPrimaryAccount yet.\n // Try to get it from status instead.\n try {\n const status = await this.provider.request<CIP0103StatusEvent>({\n method: 'status',\n });\n if (status.session?.userId) {\n partyId = status.session.userId;\n }\n } catch {\n // Fallback โ partyId stays 'unknown'\n }\n }\n\n return {\n partyId: partyId as PartyId,\n session: {\n expiresAt: Date.now() + 24 * 60 * 60 * 1000, // 24h default\n },\n capabilities: this.getCapabilities(),\n };\n }\n\n async disconnect(_ctx: AdapterContext, _session: Session): Promise<void> {\n await this.provider.request({ method: 'disconnect' });\n }\n\n async signMessage(\n _ctx: AdapterContext,\n _session: Session,\n params: SignMessageParams,\n ): Promise<SignedMessage> {\n const signature = await this.provider.request<string>({\n method: 'signMessage',\n params: { message: params.message },\n });\n\n return {\n signature: signature as unknown as SignedMessage['signature'],\n partyId: _session.partyId,\n message: params.message,\n nonce: params.nonce,\n domain: params.domain,\n };\n }\n\n async signTransaction(\n _ctx: AdapterContext,\n _session: Session,\n params: SignTransactionParams,\n ): Promise<SignedTransaction> {\n // CIP-0103 doesn't have a separate \"sign only\" โ we use prepareExecute\n // but only capture the signed stage\n const result = await this.provider.request<{\n transactionHash?: string;\n signedTx?: unknown;\n commandId?: string;\n }>({\n method: 'prepareExecute',\n params: { tx: params.tx },\n });\n\n return {\n signedTx: result.signedTx ?? result,\n transactionHash: (result.transactionHash ?? result.commandId ?? '') as unknown as SignedTransaction['transactionHash'],\n partyId: _session.partyId,\n };\n }\n\n async submitTransaction(\n _ctx: AdapterContext,\n _session: Session,\n params: SubmitTransactionParams,\n ): Promise<TxReceipt> {\n const result = await this.provider.request<{\n transactionHash?: string;\n commandId?: string;\n updateId?: string;\n }>({\n method: 'prepareExecute',\n params: { tx: params.signedTx },\n });\n\n return {\n transactionHash: (result.transactionHash ?? result.commandId ?? '') as unknown as TxReceipt['transactionHash'],\n submittedAt: Date.now(),\n commandId: result.commandId,\n updateId: result.updateId,\n };\n }\n}\n\n// โโโ Factory โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * Create a WalletAdapter from a discovered CIP-0103 provider.\n */\nexport function createNativeAdapter(\n discovered: DiscoveredProvider,\n): NativeCIP0103Adapter {\n const name = discovered.name || formatProviderId(discovered.id);\n return new NativeCIP0103Adapter(\n `cip0103:${discovered.id}`,\n name,\n discovered.provider,\n );\n}\n\n/**\n * Create a synthetic WalletInfo for a discovered native CIP-0103 provider.\n */\nexport function createSyntheticWalletInfo(\n discovered: DiscoveredProvider,\n network: string,\n): WalletInfo {\n const walletId = `cip0103:${discovered.id}` as WalletId;\n const name = discovered.name || formatProviderId(discovered.id);\n\n return {\n walletId,\n name,\n website: '',\n icons: {},\n capabilities: [\n 'connect',\n 'disconnect',\n 'signMessage',\n 'signTransaction',\n 'submitTransaction',\n 'injected',\n ],\n adapter: { packageName: 'native-cip0103', versionRange: '*' },\n docs: [],\n networks: [network],\n channel: 'stable' as const,\n metadata: { source: 'native-cip0103' },\n };\n}\n\n/**\n * Try to enrich a discovered provider with status information (name, etc.)\n */\nexport async function enrichProviderInfo(\n discovered: DiscoveredProvider,\n): Promise<DiscoveredProvider> {\n try {\n const status = await discovered.provider.request<CIP0103StatusEvent>({\n method: 'status',\n });\n return {\n ...discovered,\n name: discovered.name || status.provider?.id || discovered.id,\n };\n } catch {\n return discovered;\n }\n}\n\n// โโโ Helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * Format a provider id for display: \"canton.console\" โ \"Canton Console\"\n */\nfunction formatProviderId(id: string): string {\n return id\n .split('.')\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n","/**\n * React context for PartyLayer\n *\n * Manages wallet listing (registry + native CIP-0103 discovery),\n * session state, and event subscriptions.\n */\n\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport type {\n PartyLayerClient,\n Session,\n WalletInfo,\n} from '@partylayer/sdk';\nimport { discoverInjectedProviders } from '@partylayer/sdk';\nimport {\n createNativeAdapter,\n createSyntheticWalletInfo,\n enrichProviderInfo,\n} from './native-cip0103-adapter';\n\ninterface PartyLayerContextValue {\n client: PartyLayerClient | null;\n session: Session | null;\n wallets: WalletInfo[];\n isLoading: boolean;\n error: Error | null;\n}\n\nconst PartyLayerContext =\n createContext<PartyLayerContextValue | null>(null);\n\nexport function usePartyLayerContext(): PartyLayerContextValue {\n const context = useContext(PartyLayerContext);\n if (!context) {\n throw new Error(\n 'usePartyLayer must be used within PartyLayerProvider'\n );\n }\n return context;\n}\n\ninterface PartyLayerProviderProps {\n client: PartyLayerClient;\n children: React.ReactNode;\n /** Network identifier for native CIP-0103 wallet discovery */\n network?: string;\n}\n\nexport function PartyLayerProvider({\n client,\n children,\n network = 'devnet',\n}: PartyLayerProviderProps) {\n const [session, setSession] = useState<Session | null>(null);\n const [wallets, setWallets] = useState<WalletInfo[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let mounted = true;\n\n async function load() {\n try {\n // Fetch registry wallets and discover native CIP-0103 providers in parallel.\n // listWallets() is resilient โ if registry is unreachable, it falls back\n // to generating WalletInfo from registered adapters (Console, Loop, etc.)\n const [sessionData, registryWallets, rawDiscovered] = await Promise.all([\n client.getActiveSession(),\n client.listWallets(),\n Promise.resolve(discoverInjectedProviders()),\n ]);\n\n if (!mounted) return;\n\n // Enrich discovered providers with status info (name, etc.)\n const discovered = await Promise.all(\n rawDiscovered.map((d) => enrichProviderInfo(d)),\n );\n\n if (!mounted) return;\n\n // Register native adapters with the client and create synthetic WalletInfo\n const nativeWallets: WalletInfo[] = [];\n const registryWalletIds = new Set(registryWallets.map((w) => String(w.walletId)));\n\n for (const dp of discovered) {\n const adapterId = `cip0103:${dp.id}`;\n // Skip if there's already a registry wallet that covers this provider\n if (registryWalletIds.has(adapterId)) continue;\n\n const adapter = createNativeAdapter(dp);\n client.registerAdapter(adapter);\n\n const walletInfo = createSyntheticWalletInfo(dp, network);\n nativeWallets.push(walletInfo);\n }\n\n // Merge: native (detected) wallets first, then registry wallets\n const mergedWallets = [...nativeWallets, ...registryWallets];\n\n setSession(sessionData);\n setWallets(mergedWallets);\n setIsLoading(false);\n } catch (err) {\n if (mounted) {\n setError(err instanceof Error ? err : new Error('Unknown error'));\n setWallets([]); // Ensure wallets is empty array on error\n setIsLoading(false);\n }\n }\n }\n\n load();\n\n // Delayed re-discovery for late-injecting extensions (e.g. Console Wallet\n // can take up to 3s to inject into window). Re-scan at 2.5s and merge any\n // newly found native CIP-0103 providers into the wallet list.\n const rediscoverTimeout = setTimeout(async () => {\n if (!mounted) return;\n try {\n const newDiscovered = await Promise.resolve(discoverInjectedProviders());\n const enriched = await Promise.all(\n newDiscovered.map((d) => enrichProviderInfo(d)),\n );\n\n if (!mounted) return;\n\n setWallets((prev) => {\n const existingIds = new Set(prev.map((w) => String(w.walletId)));\n const newNativeWallets: WalletInfo[] = [];\n\n for (const dp of enriched) {\n const adapterId = `cip0103:${dp.id}`;\n if (existingIds.has(adapterId)) continue;\n\n const adapter = createNativeAdapter(dp);\n client.registerAdapter(adapter);\n newNativeWallets.push(createSyntheticWalletInfo(dp, network));\n }\n\n if (newNativeWallets.length === 0) return prev;\n // Prepend newly found native wallets (before registry ones)\n return [...newNativeWallets, ...prev];\n });\n } catch {\n /* ignore re-discovery failures */\n }\n }, 2500);\n\n // Subscribe to events\n const unsubscribeConnect = client.on('session:connected', (event) => {\n if (!mounted) return;\n if (event.type === 'session:connected') {\n setSession(event.session);\n }\n });\n\n const unsubscribeDisconnect = client.on('session:disconnected', () => {\n if (!mounted) return;\n setSession(null);\n });\n\n const unsubscribeExpired = client.on('session:expired', () => {\n if (!mounted) return;\n setSession(null);\n });\n\n const unsubscribeError = client.on('error', (event) => {\n if (!mounted) return;\n if (event.type === 'error') {\n setError(event.error);\n }\n });\n\n return () => {\n mounted = false;\n clearTimeout(rediscoverTimeout);\n unsubscribeConnect();\n unsubscribeDisconnect();\n unsubscribeExpired();\n unsubscribeError();\n };\n }, [client]);\n\n return (\n <PartyLayerContext.Provider\n value={{\n client,\n session,\n wallets,\n isLoading,\n error,\n }}\n >\n {children}\n </PartyLayerContext.Provider>\n );\n}\n","/**\n * React hooks for PartyLayer\n */\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport type {\n Session,\n SignedMessage,\n SignedTransaction,\n TxReceipt,\n SignMessageParams,\n SignTransactionParams,\n SubmitTransactionParams,\n ConnectOptions,\n RegistryStatus,\n} from '@partylayer/sdk';\nimport { usePartyLayerContext } from './context';\n\n/**\n * Hook to access PartyLayer client\n */\nexport function usePartyLayer() {\n const { client } = usePartyLayerContext();\n if (!client) {\n throw new Error('PartyLayer client not initialized');\n }\n return client;\n}\n\n/**\n * Hook to get available wallets\n */\nexport function useWallets() {\n const { wallets, isLoading, error } = usePartyLayerContext();\n return { wallets, isLoading, error };\n}\n\n/**\n * Hook to get active session\n */\nexport function useSession() {\n const { session } = usePartyLayerContext();\n return session;\n}\n\n/**\n * Hook to get registry status\n */\nexport function useRegistryStatus(): {\n status: RegistryStatus | null;\n refresh: () => Promise<void>;\n} {\n const client = usePartyLayer();\n const [status, setStatus] = useState<RegistryStatus | null>(null);\n\n useEffect(() => {\n // Get initial status\n const initialStatus = client.getRegistryStatus();\n if (initialStatus) {\n setStatus(initialStatus);\n }\n\n // Listen to registry:status events\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler = (event: any) => {\n if (event.status) {\n setStatus(event.status as RegistryStatus);\n }\n };\n\n // Subscribe to registry:status event\n const unsubscribe = client.on('registry:status', handler);\n\n return unsubscribe;\n }, [client]);\n\n const refresh = useCallback(async () => {\n // Trigger registry refresh by calling listWallets\n await client.listWallets();\n // Get updated status\n const updatedStatus = client.getRegistryStatus();\n if (updatedStatus) {\n setStatus(updatedStatus);\n }\n }, [client]);\n\n return { status, refresh };\n}\n\n/**\n * Hook to connect to a wallet\n */\nexport function useConnect() {\n const client = usePartyLayer();\n const [isConnecting, setIsConnecting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const connectIdRef = useRef(0);\n\n const connect = useCallback(\n async (options?: ConnectOptions): Promise<Session | null> => {\n const id = ++connectIdRef.current;\n setIsConnecting(true);\n setError(null);\n\n try {\n const session = await client.connect(options);\n // Only update state if this is still the active connect call\n if (id === connectIdRef.current) {\n return session;\n }\n return null;\n } catch (err) {\n if (id === connectIdRef.current) {\n const error = err instanceof Error ? err : new Error('Connection failed');\n setError(error);\n }\n return null;\n } finally {\n if (id === connectIdRef.current) {\n setIsConnecting(false);\n }\n }\n },\n [client]\n );\n\n /** Reset connecting state (e.g. when modal is closed mid-connect) */\n const reset = useCallback(() => {\n connectIdRef.current++;\n setIsConnecting(false);\n setError(null);\n }, []);\n\n return { connect, isConnecting, error, reset };\n}\n\n/**\n * Hook to disconnect from a wallet\n */\nexport function useDisconnect() {\n const client = usePartyLayer();\n const [isDisconnecting, setIsDisconnecting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const disconnect = useCallback(async (): Promise<void> => {\n setIsDisconnecting(true);\n setError(null);\n\n try {\n await client.disconnect();\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Disconnect failed');\n setError(error);\n throw error;\n } finally {\n setIsDisconnecting(false);\n }\n }, [client]);\n\n return { disconnect, isDisconnecting, error };\n}\n\n/**\n * Hook to sign a message\n */\nexport function useSignMessage() {\n const client = usePartyLayer();\n const [isSigning, setIsSigning] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const signMessage = useCallback(\n async (params: SignMessageParams): Promise<SignedMessage | null> => {\n setIsSigning(true);\n setError(null);\n\n try {\n return await client.signMessage(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Sign failed');\n setError(error);\n return null;\n } finally {\n setIsSigning(false);\n }\n },\n [client]\n );\n\n return { signMessage, isSigning, error };\n}\n\n/**\n * Hook to sign a transaction\n */\nexport function useSignTransaction() {\n const client = usePartyLayer();\n const [isSigning, setIsSigning] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const signTransaction = useCallback(\n async (params: SignTransactionParams): Promise<SignedTransaction | null> => {\n setIsSigning(true);\n setError(null);\n\n try {\n return await client.signTransaction(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Sign failed');\n setError(error);\n return null;\n } finally {\n setIsSigning(false);\n }\n },\n [client]\n );\n\n return { signTransaction, isSigning, error };\n}\n\n/**\n * Hook to submit a transaction\n */\nexport function useSubmitTransaction() {\n const client = usePartyLayer();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const submitTransaction = useCallback(\n async (params: SubmitTransactionParams): Promise<TxReceipt | null> => {\n setIsSubmitting(true);\n setError(null);\n\n try {\n return await client.submitTransaction(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Submit failed');\n setError(error);\n return null;\n } finally {\n setIsSubmitting(false);\n }\n },\n [client]\n );\n\n return { submitTransaction, isSubmitting, error };\n}\n","/**\n * Lightweight theme system for PartyLayer UI components.\n * No external CSS-in-JS dependency โ just a token object + React context.\n */\n\nimport { createContext, useContext, useState, useEffect, useMemo } from 'react';\n\n// โโโ Theme Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface PartyLayerTheme {\n mode: 'light' | 'dark';\n colors: {\n primary: string;\n primaryHover: string;\n background: string;\n surface: string;\n text: string;\n textSecondary: string;\n border: string;\n success: string;\n successBg: string;\n error: string;\n errorBg: string;\n warning: string;\n warningBg: string;\n overlay: string;\n };\n borderRadius: string;\n fontFamily: string;\n}\n\n// โโโ Built-in Presets โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport const lightTheme: PartyLayerTheme = {\n mode: 'light',\n colors: {\n primary: '#FFCC00',\n primaryHover: '#E6B800',\n background: '#FFFFFF',\n surface: '#F5F6F8',\n text: '#0B0F1A',\n textSecondary: '#64748B',\n border: 'rgba(15, 23, 42, 0.10)',\n success: '#10B981',\n successBg: '#ecfdf5',\n error: '#EF4444',\n errorBg: '#fef2f2',\n warning: '#F59E0B',\n warningBg: '#FFFBEB',\n overlay: 'rgba(15, 23, 42, 0.20)',\n },\n borderRadius: '10px',\n fontFamily: 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Inter, Roboto, \"Helvetica Neue\", Arial, sans-serif',\n};\n\nexport const darkTheme: PartyLayerTheme = {\n mode: 'dark',\n colors: {\n primary: '#FFCC00',\n primaryHover: '#E6B800',\n background: '#0B0F1A',\n surface: '#151926',\n text: '#E2E8F0',\n textSecondary: '#94A3B8',\n border: 'rgba(255, 255, 255, 0.08)',\n success: '#34D399',\n successBg: '#052E16',\n error: '#F87171',\n errorBg: '#450A0A',\n warning: '#FBBF24',\n warningBg: '#422006',\n overlay: 'rgba(0, 0, 0, 0.60)',\n },\n borderRadius: '10px',\n fontFamily: 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Inter, Roboto, \"Helvetica Neue\", Arial, sans-serif',\n};\n\n// โโโ Context โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nconst ThemeContext = createContext<PartyLayerTheme | null>(null);\n\n/**\n * Access the current PartyLayer theme.\n * Falls back to lightTheme if no ThemeProvider is present (backward-compatible).\n */\nexport function useTheme(): PartyLayerTheme {\n const ctx = useContext(ThemeContext);\n return ctx ?? lightTheme;\n}\n\n// โโโ Provider โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\ninterface ThemeProviderProps {\n theme: 'light' | 'dark' | 'auto' | PartyLayerTheme;\n children: React.ReactNode;\n}\n\nexport function ThemeProvider({ theme, children }: ThemeProviderProps) {\n const [systemDark, setSystemDark] = useState(false);\n\n useEffect(() => {\n if (theme !== 'auto') return;\n if (typeof window === 'undefined') return;\n\n const mq = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemDark(mq.matches);\n\n const handler = (e: MediaQueryListEvent) => setSystemDark(e.matches);\n mq.addEventListener('change', handler);\n return () => mq.removeEventListener('change', handler);\n }, [theme]);\n\n const resolved = useMemo((): PartyLayerTheme => {\n if (typeof theme === 'object') return theme;\n if (theme === 'dark') return darkTheme;\n if (theme === 'auto') return systemDark ? darkTheme : lightTheme;\n return lightTheme;\n }, [theme, systemDark]);\n\n return (\n <ThemeContext.Provider value={resolved}>\n {children}\n </ThemeContext.Provider>\n );\n}\n","/**\n * PartyLayerKit โ zero-config wrapper for PartyLayer dApp integration.\n *\n * Usage:\n * <PartyLayerKit network=\"devnet\" appName=\"My dApp\">\n * <ConnectButton />\n * <App />\n * </PartyLayerKit>\n */\n\nimport { useMemo, useEffect, useRef, createContext, useContext } from 'react';\nimport { createPartyLayer } from '@partylayer/sdk';\nimport type { PartyLayerClient, WalletAdapter, AdapterClass, NetworkId } from '@partylayer/sdk';\nimport { PartyLayerProvider } from './context';\nimport { ThemeProvider } from './theme';\nimport type { PartyLayerTheme } from './theme';\n\n// โโโ Wallet Icons Context โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/** Map of walletId โ icon URL for custom wallet logos */\nexport type WalletIconMap = Record<string, string>;\n\nconst WalletIconsContext = createContext<WalletIconMap>({});\n\n/** Access wallet icon overrides from PartyLayerKit */\nexport function useWalletIcons(): WalletIconMap {\n return useContext(WalletIconsContext);\n}\n\n/**\n * Resolve icon URL for a wallet. Priority:\n * 1. walletIcons map (exact match or fuzzy)\n * 2. wallet.icons.sm from registry\n * 3. null (caller renders fallback)\n */\nexport function resolveWalletIcon(\n walletId: string,\n walletIcons: WalletIconMap,\n registryIconUrl?: string,\n): string | null {\n const id = walletId.replace(/^cip0103:/, '');\n // Exact match\n if (walletIcons[id]) return walletIcons[id];\n if (walletIcons[walletId]) return walletIcons[walletId];\n // Fuzzy match\n for (const [key, url] of Object.entries(walletIcons)) {\n if (id.toLowerCase().includes(key.toLowerCase())) return url;\n }\n // Registry fallback\n if (registryIconUrl) return registryIconUrl;\n return null;\n}\n\n// โโโ Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface PartyLayerKitProps {\n /** Canton network to connect to */\n network: 'devnet' | 'testnet' | 'mainnet';\n /** Application name shown to wallets during connection */\n appName: string;\n children: React.ReactNode;\n\n /** Registry URL override (default: https://registry.partylayer.xyz) */\n registryUrl?: string;\n /** Registry channel (default: 'stable') */\n channel?: 'stable' | 'beta';\n /**\n * Custom wallet adapters. If not provided, uses built-in adapters:\n * Console Wallet, 5N Loop, Cantor8.\n *\n * For Bron (enterprise OAuth), pass explicitly:\n * adapters={[...getBuiltinAdapters(), new BronAdapter(config)]}\n */\n adapters?: (WalletAdapter | AdapterClass)[];\n /** Theme preset or custom theme object (default: 'light') */\n theme?: 'light' | 'dark' | 'auto' | PartyLayerTheme;\n /** Custom wallet icon URLs by walletId */\n walletIcons?: WalletIconMap;\n}\n\n// โโโ Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function PartyLayerKit({\n network,\n appName,\n children,\n registryUrl,\n channel,\n adapters,\n theme = 'light',\n walletIcons = {},\n}: PartyLayerKitProps) {\n // Stable reference for adapters array to avoid re-creating client on every render\n const adaptersRef = useRef(adapters);\n adaptersRef.current = adapters;\n\n const client = useMemo((): PartyLayerClient => {\n return createPartyLayer({\n network: network as NetworkId,\n app: {\n name: appName,\n origin: typeof window !== 'undefined' ? window.location.origin : undefined,\n },\n registryUrl,\n channel,\n adapters: adaptersRef.current,\n });\n // Only re-create client when these primitive values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [network, appName, registryUrl, channel]);\n\n // Cleanup on unmount or when client is re-created\n useEffect(() => {\n return () => {\n client.destroy();\n };\n }, [client]);\n\n const themeValue = typeof theme === 'string' ? theme : theme;\n\n return (\n <WalletIconsContext.Provider value={walletIcons}>\n <ThemeProvider theme={themeValue}>\n <PartyLayerProvider client={client} network={network}>\n {children}\n </PartyLayerProvider>\n </ThemeProvider>\n </WalletIconsContext.Provider>\n );\n}\n","/**\n * WalletModal โ Premium wallet selection modal for Canton dApps.\n *\n * Inspired by RainbowKit / WalletConnect quality:\n * - Multi-state flow: idle -> connecting -> success -> error\n * - Smooth backdrop blur + scale animations\n * - Dynamic wallet icons with graceful fallback\n * - CIP-0103 native wallet priority display\n * - Full dark/light theme support\n *\n * Uses existing hooks (useWallets, useConnect, useRegistryStatus) under the hood.\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { useWallets, useConnect, useRegistryStatus } from './hooks';\nimport { useTheme } from './theme';\nimport { useWalletIcons, resolveWalletIcon } from './kit';\nimport type { WalletInfo } from '@partylayer/sdk';\nimport type { WalletIconMap } from './kit';\n\n// โโโ Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface WalletModalProps {\n isOpen: boolean;\n onClose: () => void;\n onConnect: (sessionId: string) => void;\n /** Custom wallet icon URLs (merged with PartyLayerKit context) */\n walletIcons?: WalletIconMap;\n}\n\ntype ModalView = 'list' | 'connecting' | 'success' | 'error' | 'not-installed';\n\n// โโโ Helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction isNativeWallet(wallet: WalletInfo): boolean {\n return wallet.metadata?.source === 'native-cip0103';\n}\n\nfunction getErrorMessage(error: Error): string {\n const code = 'code' in error ? (error as { code: string }).code : '';\n switch (code) {\n case 'WALLET_NOT_INSTALLED':\n return 'Wallet not detected. Please ensure it is installed and set up.';\n case 'TIMEOUT':\n return 'Connection timed out. Please try again.';\n case 'USER_REJECTED':\n return 'Connection was cancelled.';\n case 'ORIGIN_NOT_ALLOWED':\n return 'This website is not authorized to connect.';\n default:\n return error.message;\n }\n}\n\n/** Generate a stable gradient from wallet name for avatar fallback */\nfunction nameToGradient(name: string): string {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n const h1 = Math.abs(hash % 360);\n const h2 = (h1 + 40) % 360;\n return `linear-gradient(135deg, hsl(${h1}, 65%, 55%), hsl(${h2}, 65%, 45%))`;\n}\n\n/** Known wallet install/website URLs as fallback */\nconst KNOWN_WALLET_URLS: Record<string, string> = {\n console: 'https://console.digitalasset.com',\n loop: 'https://loop.5n.app',\n cantor8: 'https://cantor8.io',\n bron: 'https://bron.dev',\n nightly: 'https://nightly.app',\n};\n\nfunction getWalletUrl(wallet: WalletInfo): string | null {\n if (wallet.website) return wallet.website;\n const id = String(wallet.walletId).replace(/^cip0103:/, '');\n for (const [key, url] of Object.entries(KNOWN_WALLET_URLS)) {\n if (id.toLowerCase().includes(key)) return url;\n }\n if (wallet.docs?.length > 0) return wallet.docs[0];\n return null;\n}\n\nfunction getWalletTransportLabel(wallet: WalletInfo): string {\n if (isNativeWallet(wallet)) return 'Ready';\n if (wallet.capabilities.includes('injected')) return 'Browser Extension';\n if (wallet.capabilities.includes('popup')) return 'Scan to connect';\n if (wallet.capabilities.includes('deeplink')) return 'Mobile wallet';\n if (wallet.capabilities.includes('remoteSigner')) return 'Enterprise';\n return wallet.capabilities.slice(0, 3).join(', ');\n}\n\n// โโโ SVG Icons โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction CloseIcon({ size = 20, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\nfunction ArrowIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n );\n}\n\nfunction BackIcon({ size = 18, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n );\n}\n\nfunction CheckIcon({ size = 32, color = '#10B981' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction ErrorXIcon({ size = 32, color = '#EF4444' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nfunction ShieldIcon({ size = 14, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n </svg>\n );\n}\n\nfunction DownloadIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n );\n}\n\nfunction ExternalLinkIcon({ size = 12, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n );\n}\n\n// โโโ Wallet Icon Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction ModalWalletIcon({\n wallet,\n size = 48,\n iconUrl,\n}: {\n wallet: WalletInfo;\n size?: number;\n iconUrl: string | null;\n}) {\n const [imgError, setImgError] = useState(false);\n const radius = size >= 44 ? '12px' : '10px';\n\n if (iconUrl && !imgError) {\n return (\n <img\n src={iconUrl}\n alt={wallet.name}\n onError={() => setImgError(true)}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: radius,\n flexShrink: 0,\n objectFit: 'cover',\n }}\n />\n );\n }\n\n // Gradient avatar fallback\n return (\n <div\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: radius,\n background: nameToGradient(wallet.name),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#FFFFFF',\n fontSize: `${Math.round(size * 0.38)}px`,\n fontWeight: 700,\n flexShrink: 0,\n textShadow: '0 1px 2px rgba(0,0,0,0.2)',\n }}\n >\n {wallet.name.charAt(0).toUpperCase()}\n </div>\n );\n}\n\n// โโโ Main Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function WalletModal({\n isOpen,\n onClose,\n onConnect,\n walletIcons: propIcons,\n}: WalletModalProps) {\n const { wallets, isLoading } = useWallets();\n const { connect, error, reset: resetConnect } = useConnect();\n const { status: registryStatus } = useRegistryStatus();\n const theme = useTheme();\n\n let contextIcons: WalletIconMap = {};\n try { contextIcons = useWalletIcons(); } catch { /* no Kit context */ }\n\n // Merge prop icons over context icons\n const walletIcons: WalletIconMap = { ...contextIcons, ...propIcons };\n\n const [view, setView] = useState<ModalView>('list');\n const [selectedWallet, setSelectedWallet] = useState<WalletInfo | null>(null);\n const [closing, setClosing] = useState(false);\n const [connectError, setConnectError] = useState<Error | null>(null);\n const modalRef = useRef<HTMLDivElement>(null);\n\n // Reset state when modal opens\n useEffect(() => {\n if (isOpen) {\n setView('list');\n setSelectedWallet(null);\n setClosing(false);\n }\n }, [isOpen]);\n\n // Handle ESC key\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') handleClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n // Transition to error/not-installed view when connect fails\n useEffect(() => {\n if (error && view === 'connecting') {\n setConnectError(error);\n const code = 'code' in error ? (error as { code: string }).code : '';\n if (code === 'WALLET_NOT_INSTALLED') {\n setView('not-installed');\n } else {\n setView('error');\n }\n }\n }, [error, view]);\n\n const handleClose = useCallback(() => {\n // Reset connecting state so cursor/button don't stay in loading mode\n resetConnect();\n setView('list');\n setSelectedWallet(null);\n setConnectError(null);\n setClosing(true);\n setTimeout(() => {\n setClosing(false);\n onClose();\n }, 150);\n }, [onClose, resetConnect]);\n\n const handleWalletClick = useCallback(async (wallet: WalletInfo) => {\n setSelectedWallet(wallet);\n setConnectError(null);\n setView('connecting');\n\n const session = await connect({\n walletId: wallet.walletId,\n preferInstalled: true,\n });\n\n if (session) {\n setView('success');\n setTimeout(() => {\n onConnect(session.sessionId);\n onClose();\n }, 800);\n }\n // If session is null, the useConnect hook's error state will trigger\n // the useEffect above to route to the appropriate error view\n }, [connect, onConnect, onClose]);\n\n const handleRetry = useCallback(() => {\n if (selectedWallet) {\n handleWalletClick(selectedWallet);\n }\n }, [selectedWallet, handleWalletClick]);\n\n const handleBackToList = useCallback(() => {\n setView('list');\n setSelectedWallet(null);\n }, []);\n\n if (!isOpen && !closing) return null;\n\n // Split wallets\n const nativeWallets = wallets.filter(isNativeWallet);\n const registryWallets = wallets.filter((w) => !isNativeWallet(w));\n\n const isDark = theme.mode === 'dark';\n\n // โโโ Styles โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const overlayStyle: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: theme.colors.overlay,\n backdropFilter: 'blur(4px)',\n WebkitBackdropFilter: 'blur(4px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n opacity: closing ? 0 : 1,\n transition: 'opacity 150ms',\n };\n\n const panelStyle: React.CSSProperties = {\n backgroundColor: theme.colors.background,\n borderRadius: '16px',\n width: '480px',\n maxWidth: '94vw',\n maxHeight: '85vh',\n overflow: 'hidden',\n fontFamily: theme.fontFamily,\n color: theme.colors.text,\n boxShadow: isDark\n ? '0 8px 32px rgba(0,0,0,0.5), 0 24px 80px rgba(0,0,0,0.4)'\n : '0 8px 32px rgba(15,23,42,0.12), 0 24px 80px rgba(15,23,42,0.08)',\n border: `1px solid ${isDark ? 'rgba(255,255,255,0.06)' : 'rgba(15,23,42,0.06)'}`,\n animation: !closing ? 'pl-panel-enter 250ms cubic-bezier(0.2, 0.8, 0.2, 1) forwards' : undefined,\n transform: closing ? 'scale(0.95)' : undefined,\n opacity: closing ? 0 : undefined,\n transition: closing ? 'transform 150ms, opacity 150ms' : undefined,\n };\n\n const headerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '20px 24px 16px',\n };\n\n const closeBtnBase: React.CSSProperties = {\n height: '32px',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: theme.colors.surface,\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 150ms',\n flexShrink: 0,\n };\n\n const closeBtnStyle: React.CSSProperties = { ...closeBtnBase, width: '32px' };\n const hoverBg = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(15,23,42,0.06)';\n\n // โโโ Wallet Card Renderer โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const renderWalletItem = (wallet: WalletInfo) => {\n const isNative = isNativeWallet(wallet);\n const iconUrl = resolveWalletIcon(wallet.walletId, walletIcons, wallet.icons?.sm);\n\n return (\n <button\n key={wallet.walletId}\n onClick={() => handleWalletClick(wallet)}\n disabled={view === 'connecting'}\n style={{\n width: '100%',\n padding: '14px 18px',\n border: `1px solid ${isNative\n ? (isDark ? 'rgba(99,102,241,0.25)' : 'rgba(99,102,241,0.15)')\n : theme.colors.border}`,\n borderRadius: '12px',\n cursor: view === 'connecting' ? 'wait' : 'pointer',\n textAlign: 'left',\n display: 'flex',\n alignItems: 'center',\n gap: '14px',\n backgroundColor: isNative\n ? (isDark ? 'rgba(99,102,241,0.06)' : 'rgba(99,102,241,0.03)')\n : theme.colors.surface,\n color: theme.colors.text,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n onMouseEnter={(e) => {\n const el = e.currentTarget;\n el.style.transform = 'translateY(-1px)';\n el.style.boxShadow = isDark\n ? '0 4px 12px rgba(0,0,0,0.3)'\n : '0 4px 12px rgba(15,23,42,0.08)';\n el.style.borderColor = isNative\n ? (isDark ? 'rgba(99,102,241,0.4)' : 'rgba(99,102,241,0.3)')\n : (isDark ? 'rgba(255,255,255,0.12)' : 'rgba(15,23,42,0.15)');\n }}\n onMouseLeave={(e) => {\n const el = e.currentTarget;\n el.style.transform = 'translateY(0)';\n el.style.boxShadow = 'none';\n el.style.borderColor = isNative\n ? (isDark ? 'rgba(99,102,241,0.25)' : 'rgba(99,102,241,0.15)')\n : theme.colors.border;\n }}\n >\n <ModalWalletIcon wallet={wallet} size={48} iconUrl={iconUrl} />\n\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span style={{ fontWeight: 600, fontSize: '15px', color: theme.colors.text }}>\n {wallet.name}\n </span>\n {isNative && (\n <span style={{\n fontSize: '10px',\n padding: '2px 6px',\n background: 'linear-gradient(135deg, #6366f1, #8b5cf6)',\n color: '#FFFFFF',\n borderRadius: '5px',\n fontWeight: 600,\n letterSpacing: '0.3px',\n lineHeight: '14px',\n }}>\n CIP-0103\n </span>\n )}\n </div>\n <div style={{\n fontSize: '12px',\n color: isNative ? theme.colors.success : theme.colors.textSecondary,\n marginTop: '2px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}>\n {isNative && (\n <span style={{\n width: '5px',\n height: '5px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n flexShrink: 0,\n }} />\n )}\n {getWalletTransportLabel(wallet)}\n </div>\n </div>\n\n <ArrowIcon size={16} color={theme.colors.textSecondary} />\n </button>\n );\n };\n\n // โโโ Section Header โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const renderSectionHeader = (title: string, count: number, dotColor: string) => (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '4px 0 8px',\n }}>\n <span style={{\n width: '6px',\n height: '6px',\n borderRadius: '50%',\n backgroundColor: dotColor,\n flexShrink: 0,\n }} />\n <span style={{\n fontSize: '11px',\n fontWeight: 600,\n color: theme.colors.textSecondary,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}>\n {title}\n </span>\n <span style={{\n fontSize: '11px',\n color: theme.colors.textSecondary,\n opacity: 0.6,\n }}>\n {count}\n </span>\n <div style={{\n flex: 1,\n height: '1px',\n backgroundColor: theme.colors.border,\n }} />\n </div>\n );\n\n // โโโ Views โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const renderListView = () => (\n <>\n {/* Header */}\n <div style={headerStyle}>\n <h2 style={{\n margin: 0,\n fontSize: '18px',\n fontWeight: 700,\n color: theme.colors.text,\n letterSpacing: '-0.01em',\n }}>\n Connect Wallet\n </h2>\n <button\n onClick={handleClose}\n style={closeBtnStyle}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n aria-label=\"Close\"\n >\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n {/* Content */}\n <div style={{\n padding: '0 24px 20px',\n maxHeight: 'calc(85vh - 140px)',\n overflowY: 'auto',\n }}>\n {isLoading ? (\n <div style={{ padding: '40px 0', textAlign: 'center' }}>\n <div style={{\n width: '32px',\n height: '32px',\n border: `3px solid ${theme.colors.border}`,\n borderTop: `3px solid ${theme.colors.primary}`,\n borderRadius: '50%',\n animation: 'partylayer-spin 0.8s linear infinite',\n margin: '0 auto 16px',\n }} />\n <div style={{ fontSize: '14px', color: theme.colors.textSecondary }}>\n Discovering wallets...\n </div>\n </div>\n ) : wallets.length === 0 ? (\n <div style={{ padding: '40px 20px', textAlign: 'center' }}>\n <div style={{\n width: '48px',\n height: '48px',\n borderRadius: '12px',\n backgroundColor: theme.colors.surface,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '0 auto 16px',\n }}>\n <ShieldIcon size={24} color={theme.colors.textSecondary} />\n </div>\n <div style={{ fontSize: '15px', fontWeight: 600, color: theme.colors.text, marginBottom: '8px' }}>\n No wallets found\n </div>\n <div style={{ fontSize: '13px', color: theme.colors.textSecondary, lineHeight: 1.5 }}>\n Install a CIP-0103 compatible Canton wallet to get started.\n </div>\n </div>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n {/* CIP-0103 Native */}\n {nativeWallets.length > 0 && (\n <>\n {renderSectionHeader('CIP-0103 Native', nativeWallets.length, '#6366f1')}\n {nativeWallets.map(renderWalletItem)}\n </>\n )}\n\n {/* Registry */}\n {registryWallets.length > 0 && (\n <>\n {nativeWallets.length > 0 && <div style={{ height: '8px' }} />}\n {renderSectionHeader(\n nativeWallets.length > 0 ? 'Available' : 'Wallets',\n registryWallets.length,\n theme.colors.primary,\n )}\n {registryWallets.map(renderWalletItem)}\n </>\n )}\n </div>\n )}\n </div>\n\n {/* Footer */}\n <div style={{\n padding: '14px 24px 18px',\n borderTop: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '6px',\n }}>\n <ShieldIcon size={12} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '11px', color: theme.colors.textSecondary }}>\n CIP-0103 compliant\n </span>\n {registryStatus?.verified && (\n <>\n <span style={{ fontSize: '11px', color: theme.colors.textSecondary }}>ยท</span>\n <span style={{ fontSize: '11px', color: theme.colors.success }}>Verified</span>\n </>\n )}\n </div>\n </>\n );\n\n const renderConnectingView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n\n return (\n <>\n <div style={headerStyle}>\n <button\n onClick={handleBackToList}\n style={{ ...closeBtnBase, width: 'auto', padding: '0 10px', gap: '4px' }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n >\n <BackIcon size={14} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '12px', color: theme.colors.textSecondary, fontWeight: 500 }}>Back</span>\n </button>\n <button\n onClick={handleClose}\n style={closeBtnStyle}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n aria-label=\"Close\"\n >\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{ padding: '24px 32px 40px', textAlign: 'center' }}>\n {/* Animated ring around icon */}\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n margin: '0 auto 24px',\n }}>\n <div style={{\n position: 'absolute',\n inset: '-6px',\n borderRadius: '18px',\n border: `3px solid ${theme.colors.border}`,\n borderTopColor: theme.colors.primary,\n animation: 'partylayer-spin 1.2s linear infinite',\n }} />\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n borderRadius: '16px',\n overflow: 'hidden',\n }}>\n <ModalWalletIcon wallet={selectedWallet} size={80} iconUrl={iconUrl} />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '8px',\n }}>\n Opening {selectedWallet.name}\n </div>\n <div style={{\n fontSize: '14px',\n color: theme.colors.textSecondary,\n lineHeight: 1.5,\n marginBottom: '32px',\n }}>\n Confirm the connection in your wallet\n </div>\n\n <button\n onClick={handleBackToList}\n style={{\n padding: '10px 24px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n Cancel\n </button>\n </div>\n </>\n );\n };\n\n const renderSuccessView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n\n return (\n <>\n <div style={headerStyle}>\n <div />\n <button onClick={handleClose} style={closeBtnStyle} aria-label=\"Close\">\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{\n padding: '24px 32px 40px',\n textAlign: 'center',\n animation: 'pl-success-pop 300ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}>\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n margin: '0 auto 20px',\n }}>\n <div style={{\n width: '80px',\n height: '80px',\n borderRadius: '16px',\n overflow: 'hidden',\n }}>\n <ModalWalletIcon wallet={selectedWallet} size={80} iconUrl={iconUrl} />\n </div>\n {/* Success badge */}\n <div style={{\n position: 'absolute',\n bottom: '-4px',\n right: '-4px',\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `3px solid ${theme.colors.background}`,\n }}>\n <CheckIcon size={14} color=\"#FFFFFF\" />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '6px',\n }}>\n Connected\n </div>\n <div style={{ fontSize: '14px', color: theme.colors.success }}>\n {selectedWallet.name} is ready\n </div>\n </div>\n </>\n );\n };\n\n const renderErrorView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n\n return (\n <>\n <div style={headerStyle}>\n <button\n onClick={handleBackToList}\n style={{ ...closeBtnBase, width: 'auto', padding: '0 10px', gap: '4px' }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n >\n <BackIcon size={14} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '12px', color: theme.colors.textSecondary, fontWeight: 500 }}>Back</span>\n </button>\n <button onClick={handleClose} style={closeBtnStyle} aria-label=\"Close\">\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{ padding: '16px 32px 32px', textAlign: 'center' }}>\n <div style={{\n position: 'relative',\n width: '64px',\n height: '64px',\n margin: '0 auto 20px',\n opacity: 0.7,\n }}>\n <div style={{ width: '64px', height: '64px', borderRadius: '14px', overflow: 'hidden' }}>\n <ModalWalletIcon wallet={selectedWallet} size={64} iconUrl={iconUrl} />\n </div>\n <div style={{\n position: 'absolute',\n bottom: '-4px',\n right: '-4px',\n width: '24px',\n height: '24px',\n borderRadius: '50%',\n backgroundColor: theme.colors.error,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `3px solid ${theme.colors.background}`,\n }}>\n <ErrorXIcon size={12} color=\"#FFFFFF\" />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '8px',\n }}>\n Connection Failed\n </div>\n\n {(connectError || error) && (\n <div style={{\n fontSize: '13px',\n color: theme.colors.textSecondary,\n lineHeight: 1.5,\n maxWidth: '280px',\n margin: '0 auto 24px',\n }}>\n {getErrorMessage(connectError || error!)}\n </div>\n )}\n\n <div style={{ display: 'flex', gap: '10px', justifyContent: 'center' }}>\n <button\n onClick={handleRetry}\n style={{\n padding: '10px 20px',\n border: 'none',\n borderRadius: '10px',\n backgroundColor: theme.colors.primary,\n color: '#0B0F1A',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.primaryHover;\n e.currentTarget.style.transform = 'translateY(-1px)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.primary;\n e.currentTarget.style.transform = 'translateY(0)';\n }}\n >\n Try Again\n </button>\n <button\n onClick={handleBackToList}\n style={{\n padding: '10px 20px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n All Wallets\n </button>\n </div>\n </div>\n </>\n );\n };\n\n const renderNotInstalledView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n const installUrl = getWalletUrl(selectedWallet);\n\n return (\n <>\n <div style={headerStyle}>\n <button\n onClick={handleBackToList}\n style={{ ...closeBtnBase, width: 'auto', padding: '0 10px', gap: '4px' }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n >\n <BackIcon size={14} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '12px', color: theme.colors.textSecondary, fontWeight: 500 }}>Back</span>\n </button>\n <button onClick={handleClose} style={closeBtnStyle} aria-label=\"Close\">\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{ padding: '16px 32px 36px', textAlign: 'center' }}>\n {/* Wallet icon with download badge */}\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n margin: '0 auto 24px',\n }}>\n <div style={{\n width: '80px',\n height: '80px',\n borderRadius: '16px',\n overflow: 'hidden',\n opacity: 0.85,\n }}>\n <ModalWalletIcon wallet={selectedWallet} size={80} iconUrl={iconUrl} />\n </div>\n <div style={{\n position: 'absolute',\n bottom: '-4px',\n right: '-4px',\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n backgroundColor: theme.colors.warning,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `3px solid ${theme.colors.background}`,\n }}>\n <DownloadIcon size={13} color=\"#FFFFFF\" />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '8px',\n }}>\n {selectedWallet.name} not found\n </div>\n\n <div style={{\n fontSize: '13px',\n color: theme.colors.textSecondary,\n lineHeight: 1.6,\n maxWidth: '300px',\n margin: '0 auto 28px',\n }}>\n {selectedWallet.name} doesn't appear to be installed. Install it and refresh this page to connect.\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '10px', alignItems: 'center' }}>\n {installUrl && (\n <a\n href={installUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '12px 28px',\n border: 'none',\n borderRadius: '10px',\n backgroundColor: theme.colors.primary,\n color: '#0B0F1A',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n textDecoration: 'none',\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = theme.colors.primaryHover;\n (e.currentTarget as HTMLElement).style.transform = 'translateY(-1px)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = theme.colors.primary;\n (e.currentTarget as HTMLElement).style.transform = 'translateY(0)';\n }}\n >\n <DownloadIcon size={15} color=\"#0B0F1A\" />\n Install {selectedWallet.name}\n <ExternalLinkIcon size={11} color=\"#0B0F1A\" />\n </a>\n )}\n\n <div style={{ display: 'flex', gap: '10px' }}>\n <button\n onClick={handleRetry}\n style={{\n padding: '10px 20px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n Try Again\n </button>\n <button\n onClick={handleBackToList}\n style={{\n padding: '10px 20px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n All Wallets\n </button>\n </div>\n </div>\n </div>\n </>\n );\n };\n\n // โโโ Render โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n return (\n <div\n style={overlayStyle}\n onClick={handleClose}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Connect Wallet\"\n >\n <div\n ref={modalRef}\n style={panelStyle}\n onClick={(e) => e.stopPropagation()}\n >\n {view === 'list' && renderListView()}\n {view === 'connecting' && renderConnectingView()}\n {view === 'success' && renderSuccessView()}\n {view === 'error' && renderErrorView()}\n {view === 'not-installed' && renderNotInstalledView()}\n </div>\n\n <style>{`\n @keyframes partylayer-spin {\n to { transform: rotate(360deg); }\n }\n @keyframes pl-panel-enter {\n from { opacity: 0; transform: scale(0.95) translateY(8px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n @keyframes pl-success-pop {\n 0% { transform: scale(0.9); opacity: 0; }\n 50% { transform: scale(1.02); }\n 100% { transform: scale(1); opacity: 1; }\n }\n `}</style>\n </div>\n );\n}\n","/**\n * ConnectButton โ Premium wallet connection button for Canton dApps.\n *\n * Manages the full lifecycle: disconnect โ connect (via WalletModal) โ connected state.\n * Uses existing hooks (useSession, useConnect, useDisconnect) under the hood.\n *\n * Designed for dApp developers to embed directly โ brand-aligned, accessible,\n * and polished across light/dark themes.\n */\n\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { useSession, useConnect, useDisconnect } from './hooks';\nimport { useTheme } from './theme';\nimport { WalletModal } from './modal';\n\n// โโโ Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface ConnectButtonProps {\n /** Button label when disconnected (default: \"Connect Wallet\") */\n label?: string;\n /** What to show when connected: partyId address, wallet name, or custom */\n connectedLabel?: 'address' | 'wallet' | 'custom';\n /** Custom formatter for connected display (requires connectedLabel='custom') */\n formatAddress?: (partyId: string) => string;\n /** Additional CSS class name */\n className?: string;\n /** Additional inline styles */\n style?: React.CSSProperties;\n /** Show disconnect option in dropdown (default: true) */\n showDisconnect?: boolean;\n}\n\n// โโโ Helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * Truncate a partyId for display: \"party-abc123def456\" โ \"party-abc...456\"\n */\nexport function truncatePartyId(id: string, chars = 6): string {\n if (id.length <= chars * 2 + 3) return id;\n return `${id.slice(0, chars)}...${id.slice(-chars)}`;\n}\n\n// โโโ Icons โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction WalletIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 12V7H5a2 2 0 0 1 0-4h14v4\" />\n <path d=\"M3 5v14a2 2 0 0 0 2 2h16v-5\" />\n <path d=\"M18 12a2 2 0 0 0 0 4h4v-4h-4z\" />\n </svg>\n );\n}\n\nfunction PowerIcon({ size = 14, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\" />\n <line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\" />\n </svg>\n );\n}\n\nfunction ChevronIcon({ size = 12, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\n// โโโ Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function ConnectButton({\n label = 'Connect Wallet',\n connectedLabel = 'address',\n formatAddress,\n className,\n style,\n showDisconnect = true,\n}: ConnectButtonProps) {\n const session = useSession();\n const { isConnecting } = useConnect();\n const { disconnect } = useDisconnect();\n const theme = useTheme();\n\n const [modalOpen, setModalOpen] = useState(false);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Close dropdown on outside click\n useEffect(() => {\n if (!dropdownOpen) return;\n const handler = (e: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n setDropdownOpen(false);\n }\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [dropdownOpen]);\n\n const handleDisconnect = useCallback(async () => {\n setDropdownOpen(false);\n try {\n await disconnect();\n } catch {\n // useDisconnect stores error state internally\n }\n }, [disconnect]);\n\n // โโโ Connected Label โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const getConnectedText = (): string => {\n if (!session) return '';\n const partyId = String(session.partyId);\n\n switch (connectedLabel) {\n case 'wallet':\n return String(session.walletId);\n case 'custom':\n return formatAddress ? formatAddress(partyId) : truncatePartyId(partyId);\n case 'address':\n default:\n return truncatePartyId(partyId);\n }\n };\n\n const isDark = theme.mode === 'dark';\n const brandYellow = theme.colors.primary; // #FFCC00\n const brandHover = theme.colors.primaryHover; // #E6B800\n const textOnBrand = '#0B0F1A';\n\n // โโโ Disconnected State โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n if (!session && !isConnecting) {\n return (\n <>\n <button\n onClick={() => setModalOpen(true)}\n className={className}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n backgroundColor: brandYellow,\n color: textOnBrand,\n boxShadow: `0 1px 2px rgba(15, 23, 42, 0.05), 0 0 0 0 ${brandYellow}00`,\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n ...style,\n }}\n onMouseEnter={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.backgroundColor = brandHover;\n btn.style.boxShadow = `0 2px 8px rgba(15, 23, 42, 0.08), 0 0 0 3px ${brandYellow}33`;\n btn.style.transform = 'translateY(-1px)';\n }}\n onMouseLeave={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.backgroundColor = brandYellow;\n btn.style.boxShadow = `0 1px 2px rgba(15, 23, 42, 0.05), 0 0 0 0 ${brandYellow}00`;\n btn.style.transform = 'translateY(0)';\n }}\n onMouseDown={(e) => {\n (e.currentTarget as HTMLButtonElement).style.transform = 'translateY(0) scale(0.98)';\n }}\n onMouseUp={(e) => {\n (e.currentTarget as HTMLButtonElement).style.transform = 'translateY(-1px) scale(1)';\n }}\n >\n <WalletIcon size={16} color={textOnBrand} />\n {label}\n </button>\n <WalletModal\n isOpen={modalOpen}\n onClose={() => setModalOpen(false)}\n onConnect={() => setModalOpen(false)}\n />\n <style>{`@keyframes partylayer-spin { to { transform: rotate(360deg); } }`}</style>\n </>\n );\n }\n\n // โโโ Connecting State โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n if (isConnecting) {\n return (\n <button\n disabled\n className={className}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: 'wait',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n backgroundColor: brandYellow,\n color: textOnBrand,\n opacity: 0.85,\n boxShadow: `0 0 0 3px ${brandYellow}22`,\n animation: 'partylayer-btn-pulse 1.5s ease-in-out infinite',\n ...style,\n }}\n >\n <span\n style={{\n display: 'inline-block',\n width: '14px',\n height: '14px',\n border: `2px solid ${textOnBrand}33`,\n borderTop: `2px solid ${textOnBrand}`,\n borderRadius: '50%',\n animation: 'partylayer-spin 0.7s linear infinite',\n flexShrink: 0,\n }}\n />\n Connecting...\n <style>{`\n @keyframes partylayer-spin { to { transform: rotate(360deg); } }\n @keyframes partylayer-btn-pulse {\n 0%, 100% { box-shadow: 0 0 0 3px ${brandYellow}22; }\n 50% { box-shadow: 0 0 0 6px ${brandYellow}15; }\n }\n `}</style>\n </button>\n );\n }\n\n // โโโ Connected State โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const connectedPartyId = String(session!.partyId);\n const connectedWalletId = String(session!.walletId);\n\n return (\n <div ref={dropdownRef} style={{ position: 'relative', display: 'inline-block' }}>\n <button\n onClick={() => setDropdownOpen(!dropdownOpen)}\n className={className}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '8px 14px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n backgroundColor: theme.colors.surface,\n color: theme.colors.text,\n boxShadow: '0 1px 2px rgba(15, 23, 42, 0.05)',\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n ...style,\n }}\n onMouseEnter={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.borderColor = isDark ? 'rgba(255,255,255,0.15)' : 'rgba(15,23,42,0.18)';\n btn.style.boxShadow = '0 2px 8px rgba(15, 23, 42, 0.08)';\n }}\n onMouseLeave={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.borderColor = theme.colors.border;\n btn.style.boxShadow = '0 1px 2px rgba(15, 23, 42, 0.05)';\n }}\n >\n {/* Green status dot */}\n <span style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n flexShrink: 0,\n boxShadow: `0 0 0 2px ${theme.colors.surface}`,\n }} />\n\n <span style={{\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n fontSize: '13px',\n color: theme.colors.text,\n }}>\n {getConnectedText()}\n </span>\n\n {showDisconnect && (\n <ChevronIcon\n size={12}\n color={theme.colors.textSecondary}\n />\n )}\n </button>\n\n {/* Dropdown Menu */}\n {dropdownOpen && showDisconnect && (\n <div\n style={{\n position: 'absolute',\n top: 'calc(100% + 6px)',\n right: 0,\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: isDark\n ? '0 4px 16px rgba(0,0,0,0.3), 0 16px 48px rgba(0,0,0,0.2)'\n : '0 4px 16px rgba(15,23,42,0.08), 0 16px 48px rgba(15,23,42,0.12)',\n minWidth: '220px',\n zIndex: 1000,\n overflow: 'hidden',\n animation: 'partylayer-dropdown 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n >\n {/* Session Info */}\n <div style={{\n padding: '14px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n }}>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n marginBottom: '8px',\n }}>\n <span style={{\n width: '6px',\n height: '6px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n }} />\n <span style={{\n fontSize: '12px',\n fontWeight: 600,\n color: theme.colors.success,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}>\n Connected\n </span>\n </div>\n <div style={{\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n fontSize: '12px',\n color: theme.colors.text,\n wordBreak: 'break-all',\n lineHeight: 1.4,\n }}>\n {truncatePartyId(connectedPartyId, 10)}\n </div>\n <div style={{\n marginTop: '6px',\n fontSize: '12px',\n color: theme.colors.textSecondary,\n }}>\n {connectedWalletId}\n </div>\n </div>\n\n {/* Disconnect Button */}\n <button\n onClick={handleDisconnect}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n width: '100%',\n padding: '12px 16px',\n border: 'none',\n backgroundColor: 'transparent',\n color: theme.colors.error,\n cursor: 'pointer',\n textAlign: 'left',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'background-color 150ms',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = theme.colors.errorBg;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = 'transparent';\n }}\n >\n <PowerIcon size={14} color={theme.colors.error} />\n Disconnect\n </button>\n </div>\n )}\n\n <style>{`\n @keyframes partylayer-dropdown {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `}</style>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/native-cip0103-adapter.ts","../src/context.tsx","../src/hooks.ts","../src/theme.tsx","../src/kit.tsx","../src/modal.tsx","../src/connect-button.tsx"],"names":["createContext","useContext","useState","useEffect","discoverInjectedProviders","jsx","useCallback","useRef","error","useMemo","createPartyLayer","jsxs","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Native CIP-0103 Adapter\n *\n * Wraps a discovered CIP-0103 Provider into the PartyLayer WalletAdapter interface.\n * This allows native CIP-0103 wallets (injected at window.canton.* etc.) to be used\n * through the standard SDK connect flow alongside registry-based adapters.\n */\n\nimport type {\n WalletId,\n PartyId,\n CapabilityKey,\n Session,\n WalletInfo,\n WalletAdapter,\n AdapterContext,\n AdapterDetectResult,\n AdapterConnectResult,\n SignedMessage,\n SignedTransaction,\n TxReceipt,\n SignMessageParams,\n SignTransactionParams,\n SubmitTransactionParams,\n} from '@partylayer/sdk';\nimport type {\n CIP0103Provider,\n CIP0103ConnectResult,\n CIP0103StatusEvent,\n CIP0103Account,\n DiscoveredProvider,\n} from '@partylayer/sdk';\n\n// โโโ Adapter โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * A WalletAdapter that delegates to a native CIP-0103 Provider.\n *\n * Created dynamically when a CIP-0103 provider is discovered at runtime.\n * Routes all SDK operations through the provider's `request()` method.\n */\nexport class NativeCIP0103Adapter implements WalletAdapter {\n readonly walletId: WalletId;\n readonly name: string;\n private provider: CIP0103Provider;\n\n constructor(id: string, name: string, provider: CIP0103Provider) {\n this.walletId = id as WalletId;\n this.name = name;\n this.provider = provider;\n }\n\n getCapabilities(): CapabilityKey[] {\n return [\n 'connect',\n 'disconnect',\n 'signMessage',\n 'signTransaction',\n 'submitTransaction',\n 'injected',\n ];\n }\n\n async detectInstalled(): Promise<AdapterDetectResult> {\n // Already discovered โ always installed\n return { installed: true };\n }\n\n async connect(\n _ctx: AdapterContext,\n _opts?: { timeoutMs?: number; partyId?: PartyId },\n ): Promise<AdapterConnectResult> {\n // 1. Connect\n const connectResult = await this.provider.request<CIP0103ConnectResult>({\n method: 'connect',\n });\n\n if (!connectResult.isConnected) {\n throw new Error(connectResult.reason || 'Connection rejected by wallet');\n }\n\n // 2. Get primary account for partyId\n let partyId = 'unknown';\n try {\n const account = await this.provider.request<CIP0103Account>({\n method: 'getPrimaryAccount',\n });\n partyId = account.partyId;\n } catch {\n // Some providers may not implement getPrimaryAccount yet.\n // Try to get it from status instead.\n try {\n const status = await this.provider.request<CIP0103StatusEvent>({\n method: 'status',\n });\n if (status.session?.userId) {\n partyId = status.session.userId;\n }\n } catch {\n // Fallback โ partyId stays 'unknown'\n }\n }\n\n return {\n partyId: partyId as PartyId,\n session: {\n expiresAt: Date.now() + 24 * 60 * 60 * 1000, // 24h default\n },\n capabilities: this.getCapabilities(),\n };\n }\n\n async disconnect(_ctx: AdapterContext, _session: Session): Promise<void> {\n await this.provider.request({ method: 'disconnect' });\n }\n\n async signMessage(\n _ctx: AdapterContext,\n _session: Session,\n params: SignMessageParams,\n ): Promise<SignedMessage> {\n const signature = await this.provider.request<string>({\n method: 'signMessage',\n params: { message: params.message },\n });\n\n return {\n signature: signature as unknown as SignedMessage['signature'],\n partyId: _session.partyId,\n message: params.message,\n nonce: params.nonce,\n domain: params.domain,\n };\n }\n\n async signTransaction(\n _ctx: AdapterContext,\n _session: Session,\n params: SignTransactionParams,\n ): Promise<SignedTransaction> {\n // CIP-0103 doesn't have a separate \"sign only\" โ we use prepareExecute\n // but only capture the signed stage\n const result = await this.provider.request<{\n transactionHash?: string;\n signedTx?: unknown;\n commandId?: string;\n }>({\n method: 'prepareExecute',\n params: { tx: params.tx },\n });\n\n return {\n signedTx: result.signedTx ?? result,\n transactionHash: (result.transactionHash ?? result.commandId ?? '') as unknown as SignedTransaction['transactionHash'],\n partyId: _session.partyId,\n };\n }\n\n async submitTransaction(\n _ctx: AdapterContext,\n _session: Session,\n params: SubmitTransactionParams,\n ): Promise<TxReceipt> {\n const result = await this.provider.request<{\n transactionHash?: string;\n commandId?: string;\n updateId?: string;\n }>({\n method: 'prepareExecute',\n params: { tx: params.signedTx },\n });\n\n return {\n transactionHash: (result.transactionHash ?? result.commandId ?? '') as unknown as TxReceipt['transactionHash'],\n submittedAt: Date.now(),\n commandId: result.commandId,\n updateId: result.updateId,\n };\n }\n}\n\n// โโโ Factory โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * Create a WalletAdapter from a discovered CIP-0103 provider.\n */\nexport function createNativeAdapter(\n discovered: DiscoveredProvider,\n): NativeCIP0103Adapter {\n const name = discovered.name || formatProviderId(discovered.id);\n return new NativeCIP0103Adapter(\n `cip0103:${discovered.id}`,\n name,\n discovered.provider,\n );\n}\n\n/**\n * Create a synthetic WalletInfo for a discovered native CIP-0103 provider.\n */\nexport function createSyntheticWalletInfo(\n discovered: DiscoveredProvider,\n network: string,\n): WalletInfo {\n const walletId = `cip0103:${discovered.id}` as WalletId;\n const name = discovered.name || formatProviderId(discovered.id);\n\n return {\n walletId,\n name,\n website: '',\n icons: {},\n capabilities: [\n 'connect',\n 'disconnect',\n 'signMessage',\n 'signTransaction',\n 'submitTransaction',\n 'injected',\n ],\n adapter: { packageName: 'native-cip0103', versionRange: '*' },\n docs: [],\n networks: [network],\n channel: 'stable' as const,\n metadata: { source: 'native-cip0103' },\n };\n}\n\n/**\n * Try to enrich a discovered provider with status information (name, etc.)\n */\nexport async function enrichProviderInfo(\n discovered: DiscoveredProvider,\n): Promise<DiscoveredProvider> {\n try {\n const status = await discovered.provider.request<CIP0103StatusEvent>({\n method: 'status',\n });\n return {\n ...discovered,\n name: discovered.name || status.provider?.id || discovered.id,\n };\n } catch {\n return discovered;\n }\n}\n\n// โโโ Helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * Format a provider id for display: \"canton.console\" โ \"Canton Console\"\n */\nfunction formatProviderId(id: string): string {\n return id\n .split('.')\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n","/**\n * React context for PartyLayer\n *\n * Manages wallet listing (registry + native CIP-0103 discovery),\n * session state, and event subscriptions.\n */\n\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport type {\n PartyLayerClient,\n Session,\n WalletInfo,\n} from '@partylayer/sdk';\nimport { discoverInjectedProviders } from '@partylayer/sdk';\nimport {\n createNativeAdapter,\n createSyntheticWalletInfo,\n enrichProviderInfo,\n} from './native-cip0103-adapter';\n\ninterface PartyLayerContextValue {\n client: PartyLayerClient | null;\n session: Session | null;\n wallets: WalletInfo[];\n isLoading: boolean;\n error: Error | null;\n}\n\nconst PartyLayerContext =\n createContext<PartyLayerContextValue | null>(null);\n\nexport function usePartyLayerContext(): PartyLayerContextValue {\n const context = useContext(PartyLayerContext);\n if (!context) {\n throw new Error(\n 'usePartyLayer must be used within PartyLayerProvider'\n );\n }\n return context;\n}\n\ninterface PartyLayerProviderProps {\n client: PartyLayerClient;\n children: React.ReactNode;\n /** Network identifier for native CIP-0103 wallet discovery */\n network?: string;\n}\n\nexport function PartyLayerProvider({\n client,\n children,\n network = 'devnet',\n}: PartyLayerProviderProps) {\n const [session, setSession] = useState<Session | null>(null);\n const [wallets, setWallets] = useState<WalletInfo[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let mounted = true;\n\n async function load() {\n try {\n // Fetch registry wallets and discover native CIP-0103 providers in parallel.\n // listWallets() is resilient โ if registry is unreachable, it falls back\n // to generating WalletInfo from registered adapters (Console, Loop, etc.)\n const [sessionData, registryWallets, rawDiscovered] = await Promise.all([\n client.getActiveSession(),\n client.listWallets(),\n Promise.resolve(discoverInjectedProviders()),\n ]);\n\n if (!mounted) return;\n\n // Enrich discovered providers with status info (name, etc.)\n const discovered = await Promise.all(\n rawDiscovered.map((d) => enrichProviderInfo(d)),\n );\n\n if (!mounted) return;\n\n // Register native adapters with the client and create synthetic WalletInfo\n const nativeWallets: WalletInfo[] = [];\n const registryWalletIds = new Set(registryWallets.map((w) => String(w.walletId)));\n\n for (const dp of discovered) {\n const adapterId = `cip0103:${dp.id}`;\n // Skip if there's already a registry wallet that covers this provider\n if (registryWalletIds.has(adapterId)) continue;\n\n const adapter = createNativeAdapter(dp);\n client.registerAdapter(adapter);\n\n const walletInfo = createSyntheticWalletInfo(dp, network);\n nativeWallets.push(walletInfo);\n }\n\n // Merge: native (detected) wallets first, then registry wallets\n const mergedWallets = [...nativeWallets, ...registryWallets];\n\n setSession(sessionData);\n setWallets(mergedWallets);\n setIsLoading(false);\n } catch (err) {\n if (mounted) {\n setError(err instanceof Error ? err : new Error('Unknown error'));\n setWallets([]); // Ensure wallets is empty array on error\n setIsLoading(false);\n }\n }\n }\n\n load();\n\n // Delayed re-discovery for late-injecting extensions (e.g. Console Wallet\n // can take up to 3s to inject into window). Re-scan at 2.5s and merge any\n // newly found native CIP-0103 providers into the wallet list.\n const rediscoverTimeout = setTimeout(async () => {\n if (!mounted) return;\n try {\n const newDiscovered = await Promise.resolve(discoverInjectedProviders());\n const enriched = await Promise.all(\n newDiscovered.map((d) => enrichProviderInfo(d)),\n );\n\n if (!mounted) return;\n\n setWallets((prev) => {\n const existingIds = new Set(prev.map((w) => String(w.walletId)));\n const newNativeWallets: WalletInfo[] = [];\n\n for (const dp of enriched) {\n const adapterId = `cip0103:${dp.id}`;\n if (existingIds.has(adapterId)) continue;\n\n const adapter = createNativeAdapter(dp);\n client.registerAdapter(adapter);\n newNativeWallets.push(createSyntheticWalletInfo(dp, network));\n }\n\n if (newNativeWallets.length === 0) return prev;\n // Prepend newly found native wallets (before registry ones)\n return [...newNativeWallets, ...prev];\n });\n } catch {\n /* ignore re-discovery failures */\n }\n }, 2500);\n\n // Subscribe to events\n const unsubscribeConnect = client.on('session:connected', (event) => {\n if (!mounted) return;\n if (event.type === 'session:connected') {\n setSession(event.session);\n }\n });\n\n const unsubscribeDisconnect = client.on('session:disconnected', () => {\n if (!mounted) return;\n setSession(null);\n });\n\n const unsubscribeExpired = client.on('session:expired', () => {\n if (!mounted) return;\n setSession(null);\n });\n\n const unsubscribeError = client.on('error', (event) => {\n if (!mounted) return;\n if (event.type === 'error') {\n setError(event.error);\n }\n });\n\n return () => {\n mounted = false;\n clearTimeout(rediscoverTimeout);\n unsubscribeConnect();\n unsubscribeDisconnect();\n unsubscribeExpired();\n unsubscribeError();\n };\n }, [client]);\n\n return (\n <PartyLayerContext.Provider\n value={{\n client,\n session,\n wallets,\n isLoading,\n error,\n }}\n >\n {children}\n </PartyLayerContext.Provider>\n );\n}\n","/**\n * React hooks for PartyLayer\n */\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport type {\n Session,\n SignedMessage,\n SignedTransaction,\n TxReceipt,\n SignMessageParams,\n SignTransactionParams,\n SubmitTransactionParams,\n ConnectOptions,\n RegistryStatus,\n} from '@partylayer/sdk';\nimport { usePartyLayerContext } from './context';\n\n/**\n * Hook to access PartyLayer client\n */\nexport function usePartyLayer() {\n const { client } = usePartyLayerContext();\n if (!client) {\n throw new Error('PartyLayer client not initialized');\n }\n return client;\n}\n\n/**\n * Hook to get available wallets\n */\nexport function useWallets() {\n const { wallets, isLoading, error } = usePartyLayerContext();\n return { wallets, isLoading, error };\n}\n\n/**\n * Hook to get active session\n */\nexport function useSession() {\n const { session } = usePartyLayerContext();\n return session;\n}\n\n/**\n * Hook to get registry status\n */\nexport function useRegistryStatus(): {\n status: RegistryStatus | null;\n refresh: () => Promise<void>;\n} {\n const client = usePartyLayer();\n const [status, setStatus] = useState<RegistryStatus | null>(null);\n\n useEffect(() => {\n // Get initial status\n const initialStatus = client.getRegistryStatus();\n if (initialStatus) {\n setStatus(initialStatus);\n }\n\n // Listen to registry:status events\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler = (event: any) => {\n if (event.status) {\n setStatus(event.status as RegistryStatus);\n }\n };\n\n // Subscribe to registry:status event\n const unsubscribe = client.on('registry:status', handler);\n\n return unsubscribe;\n }, [client]);\n\n const refresh = useCallback(async () => {\n // Trigger registry refresh by calling listWallets\n await client.listWallets();\n // Get updated status\n const updatedStatus = client.getRegistryStatus();\n if (updatedStatus) {\n setStatus(updatedStatus);\n }\n }, [client]);\n\n return { status, refresh };\n}\n\n/**\n * Hook to connect to a wallet\n */\nexport function useConnect() {\n const client = usePartyLayer();\n const [isConnecting, setIsConnecting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const connectIdRef = useRef(0);\n\n const connect = useCallback(\n async (options?: ConnectOptions): Promise<Session | null> => {\n const id = ++connectIdRef.current;\n setIsConnecting(true);\n setError(null);\n\n try {\n const session = await client.connect(options);\n // Only update state if this is still the active connect call\n if (id === connectIdRef.current) {\n return session;\n }\n return null;\n } catch (err) {\n if (id === connectIdRef.current) {\n const error = err instanceof Error ? err : new Error('Connection failed');\n setError(error);\n }\n return null;\n } finally {\n if (id === connectIdRef.current) {\n setIsConnecting(false);\n }\n }\n },\n [client]\n );\n\n /** Reset connecting state (e.g. when modal is closed mid-connect) */\n const reset = useCallback(() => {\n connectIdRef.current++;\n setIsConnecting(false);\n setError(null);\n }, []);\n\n return { connect, isConnecting, error, reset };\n}\n\n/**\n * Hook to disconnect from a wallet\n */\nexport function useDisconnect() {\n const client = usePartyLayer();\n const [isDisconnecting, setIsDisconnecting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const disconnect = useCallback(async (): Promise<void> => {\n setIsDisconnecting(true);\n setError(null);\n\n try {\n await client.disconnect();\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Disconnect failed');\n setError(error);\n throw error;\n } finally {\n setIsDisconnecting(false);\n }\n }, [client]);\n\n return { disconnect, isDisconnecting, error };\n}\n\n/**\n * Hook to sign a message\n */\nexport function useSignMessage() {\n const client = usePartyLayer();\n const [isSigning, setIsSigning] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const signMessage = useCallback(\n async (params: SignMessageParams): Promise<SignedMessage | null> => {\n setIsSigning(true);\n setError(null);\n\n try {\n return await client.signMessage(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Sign failed');\n setError(error);\n return null;\n } finally {\n setIsSigning(false);\n }\n },\n [client]\n );\n\n return { signMessage, isSigning, error };\n}\n\n/**\n * Hook to sign a transaction\n */\nexport function useSignTransaction() {\n const client = usePartyLayer();\n const [isSigning, setIsSigning] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const signTransaction = useCallback(\n async (params: SignTransactionParams): Promise<SignedTransaction | null> => {\n setIsSigning(true);\n setError(null);\n\n try {\n return await client.signTransaction(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Sign failed');\n setError(error);\n return null;\n } finally {\n setIsSigning(false);\n }\n },\n [client]\n );\n\n return { signTransaction, isSigning, error };\n}\n\n/**\n * Hook to submit a transaction\n */\nexport function useSubmitTransaction() {\n const client = usePartyLayer();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const submitTransaction = useCallback(\n async (params: SubmitTransactionParams): Promise<TxReceipt | null> => {\n setIsSubmitting(true);\n setError(null);\n\n try {\n return await client.submitTransaction(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Submit failed');\n setError(error);\n return null;\n } finally {\n setIsSubmitting(false);\n }\n },\n [client]\n );\n\n return { submitTransaction, isSubmitting, error };\n}\n","/**\n * Lightweight theme system for PartyLayer UI components.\n * No external CSS-in-JS dependency โ just a token object + React context.\n */\n\nimport { createContext, useContext, useState, useEffect, useMemo } from 'react';\n\n// โโโ Theme Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface PartyLayerTheme {\n mode: 'light' | 'dark';\n colors: {\n primary: string;\n primaryHover: string;\n background: string;\n surface: string;\n text: string;\n textSecondary: string;\n border: string;\n success: string;\n successBg: string;\n error: string;\n errorBg: string;\n warning: string;\n warningBg: string;\n overlay: string;\n };\n borderRadius: string;\n fontFamily: string;\n}\n\n// โโโ Built-in Presets โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport const lightTheme: PartyLayerTheme = {\n mode: 'light',\n colors: {\n primary: '#FFCC00',\n primaryHover: '#E6B800',\n background: '#FFFFFF',\n surface: '#F5F6F8',\n text: '#0B0F1A',\n textSecondary: '#64748B',\n border: 'rgba(15, 23, 42, 0.10)',\n success: '#10B981',\n successBg: '#ecfdf5',\n error: '#EF4444',\n errorBg: '#fef2f2',\n warning: '#F59E0B',\n warningBg: '#FFFBEB',\n overlay: 'rgba(15, 23, 42, 0.20)',\n },\n borderRadius: '10px',\n fontFamily: 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Inter, Roboto, \"Helvetica Neue\", Arial, sans-serif',\n};\n\nexport const darkTheme: PartyLayerTheme = {\n mode: 'dark',\n colors: {\n primary: '#FFCC00',\n primaryHover: '#E6B800',\n background: '#0B0F1A',\n surface: '#151926',\n text: '#E2E8F0',\n textSecondary: '#94A3B8',\n border: 'rgba(255, 255, 255, 0.08)',\n success: '#34D399',\n successBg: '#052E16',\n error: '#F87171',\n errorBg: '#450A0A',\n warning: '#FBBF24',\n warningBg: '#422006',\n overlay: 'rgba(0, 0, 0, 0.60)',\n },\n borderRadius: '10px',\n fontFamily: 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Inter, Roboto, \"Helvetica Neue\", Arial, sans-serif',\n};\n\n// โโโ Context โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nconst ThemeContext = createContext<PartyLayerTheme | null>(null);\n\n/**\n * Access the current PartyLayer theme.\n * Falls back to lightTheme if no ThemeProvider is present (backward-compatible).\n */\nexport function useTheme(): PartyLayerTheme {\n const ctx = useContext(ThemeContext);\n return ctx ?? lightTheme;\n}\n\n// โโโ Provider โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\ninterface ThemeProviderProps {\n theme: 'light' | 'dark' | 'auto' | PartyLayerTheme;\n children: React.ReactNode;\n}\n\nexport function ThemeProvider({ theme, children }: ThemeProviderProps) {\n const [systemDark, setSystemDark] = useState(false);\n\n useEffect(() => {\n if (theme !== 'auto') return;\n if (typeof window === 'undefined') return;\n\n const mq = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemDark(mq.matches);\n\n const handler = (e: MediaQueryListEvent) => setSystemDark(e.matches);\n mq.addEventListener('change', handler);\n return () => mq.removeEventListener('change', handler);\n }, [theme]);\n\n const resolved = useMemo((): PartyLayerTheme => {\n if (typeof theme === 'object') return theme;\n if (theme === 'dark') return darkTheme;\n if (theme === 'auto') return systemDark ? darkTheme : lightTheme;\n return lightTheme;\n }, [theme, systemDark]);\n\n return (\n <ThemeContext.Provider value={resolved}>\n {children}\n </ThemeContext.Provider>\n );\n}\n","/**\n * PartyLayerKit โ zero-config wrapper for PartyLayer dApp integration.\n *\n * Usage:\n * <PartyLayerKit network=\"devnet\" appName=\"My dApp\">\n * <ConnectButton />\n * <App />\n * </PartyLayerKit>\n */\n\nimport { useMemo, useEffect, useRef, createContext, useContext } from 'react';\nimport { createPartyLayer } from '@partylayer/sdk';\nimport type { PartyLayerClient, WalletAdapter, AdapterClass, NetworkId } from '@partylayer/sdk';\nimport { PartyLayerProvider } from './context';\nimport { ThemeProvider } from './theme';\nimport type { PartyLayerTheme } from './theme';\n\n// โโโ Wallet Icons Context โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/** Map of walletId โ icon URL for custom wallet logos */\nexport type WalletIconMap = Record<string, string>;\n\nconst WalletIconsContext = createContext<WalletIconMap>({});\n\n/** Access wallet icon overrides from PartyLayerKit */\nexport function useWalletIcons(): WalletIconMap {\n return useContext(WalletIconsContext);\n}\n\n/**\n * Resolve icon URL for a wallet. Priority:\n * 1. walletIcons map (exact match or fuzzy)\n * 2. wallet.icons.sm from registry\n * 3. null (caller renders fallback)\n */\nexport function resolveWalletIcon(\n walletId: string,\n walletIcons: WalletIconMap,\n registryIconUrl?: string,\n): string | null {\n const id = walletId.replace(/^cip0103:/, '');\n // Exact match\n if (walletIcons[id]) return walletIcons[id];\n if (walletIcons[walletId]) return walletIcons[walletId];\n // Fuzzy match\n for (const [key, url] of Object.entries(walletIcons)) {\n if (id.toLowerCase().includes(key.toLowerCase())) return url;\n }\n // Registry fallback\n if (registryIconUrl) return registryIconUrl;\n return null;\n}\n\n// โโโ Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface PartyLayerKitProps {\n /** Canton network to connect to */\n network: 'devnet' | 'testnet' | 'mainnet';\n /** Application name shown to wallets during connection */\n appName: string;\n children: React.ReactNode;\n\n /** Registry URL override (default: https://registry.partylayer.xyz) */\n registryUrl?: string;\n /** Registry channel (default: 'stable') */\n channel?: 'stable' | 'beta';\n /**\n * Custom wallet adapters. If not provided, uses built-in adapters:\n * Console Wallet, 5N Loop, Cantor8.\n *\n * For Bron (enterprise OAuth), pass explicitly:\n * adapters={[...getBuiltinAdapters(), new BronAdapter(config)]}\n */\n adapters?: (WalletAdapter | AdapterClass)[];\n /** Theme preset or custom theme object (default: 'light') */\n theme?: 'light' | 'dark' | 'auto' | PartyLayerTheme;\n /** Custom wallet icon URLs by walletId */\n walletIcons?: WalletIconMap;\n}\n\n// โโโ Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function PartyLayerKit({\n network,\n appName,\n children,\n registryUrl,\n channel,\n adapters,\n theme = 'light',\n walletIcons = {},\n}: PartyLayerKitProps) {\n // Stable reference for adapters array to avoid re-creating client on every render\n const adaptersRef = useRef(adapters);\n adaptersRef.current = adapters;\n\n const client = useMemo((): PartyLayerClient => {\n return createPartyLayer({\n network: network as NetworkId,\n app: {\n name: appName,\n origin: typeof window !== 'undefined' ? window.location.origin : undefined,\n },\n registryUrl,\n channel,\n adapters: adaptersRef.current,\n });\n // Only re-create client when these primitive values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [network, appName, registryUrl, channel]);\n\n // Cleanup on unmount or when client is re-created\n useEffect(() => {\n return () => {\n client.destroy();\n };\n }, [client]);\n\n const themeValue = typeof theme === 'string' ? theme : theme;\n\n return (\n <WalletIconsContext.Provider value={walletIcons}>\n <ThemeProvider theme={themeValue}>\n <PartyLayerProvider client={client} network={network}>\n {children}\n </PartyLayerProvider>\n </ThemeProvider>\n </WalletIconsContext.Provider>\n );\n}\n","/**\n * WalletModal โ Premium wallet selection modal for Canton dApps.\n *\n * Premium quality wallet selection experience:\n * - Multi-state flow: idle -> connecting -> success -> error\n * - Smooth backdrop blur + scale animations\n * - Dynamic wallet icons with graceful fallback\n * - CIP-0103 native wallet priority display\n * - Full dark/light theme support\n *\n * Uses existing hooks (useWallets, useConnect, useRegistryStatus) under the hood.\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { useWallets, useConnect, useRegistryStatus } from './hooks';\nimport { useTheme } from './theme';\nimport { useWalletIcons, resolveWalletIcon } from './kit';\nimport type { WalletInfo } from '@partylayer/sdk';\nimport type { WalletIconMap } from './kit';\n\n// โโโ Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface WalletModalProps {\n isOpen: boolean;\n onClose: () => void;\n onConnect: (sessionId: string) => void;\n /** Custom wallet icon URLs (merged with PartyLayerKit context) */\n walletIcons?: WalletIconMap;\n}\n\ntype ModalView = 'list' | 'connecting' | 'success' | 'error' | 'not-installed';\n\n// โโโ Helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction isNativeWallet(wallet: WalletInfo): boolean {\n return wallet.metadata?.source === 'native-cip0103';\n}\n\nfunction getErrorMessage(error: Error): string {\n const code = 'code' in error ? (error as { code: string }).code : '';\n switch (code) {\n case 'WALLET_NOT_INSTALLED':\n return 'Wallet not detected. Please ensure it is installed and set up.';\n case 'TIMEOUT':\n return 'Connection timed out. Please try again.';\n case 'USER_REJECTED':\n return 'Connection was cancelled.';\n case 'ORIGIN_NOT_ALLOWED':\n return 'This website is not authorized to connect.';\n default:\n return error.message;\n }\n}\n\n/** Generate a stable gradient from wallet name for avatar fallback */\nfunction nameToGradient(name: string): string {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n const h1 = Math.abs(hash % 360);\n const h2 = (h1 + 40) % 360;\n return `linear-gradient(135deg, hsl(${h1}, 65%, 55%), hsl(${h2}, 65%, 45%))`;\n}\n\n/** Known wallet install/website URLs as fallback */\nconst KNOWN_WALLET_URLS: Record<string, string> = {\n console: 'https://console.digitalasset.com',\n loop: 'https://loop.5n.app',\n cantor8: 'https://cantor8.io',\n bron: 'https://bron.dev',\n nightly: 'https://nightly.app',\n};\n\nfunction getWalletUrl(wallet: WalletInfo): string | null {\n if (wallet.website) return wallet.website;\n const id = String(wallet.walletId).replace(/^cip0103:/, '');\n for (const [key, url] of Object.entries(KNOWN_WALLET_URLS)) {\n if (id.toLowerCase().includes(key)) return url;\n }\n if (wallet.docs?.length > 0) return wallet.docs[0];\n return null;\n}\n\nfunction getWalletTransportLabel(wallet: WalletInfo): string {\n if (isNativeWallet(wallet)) return 'Ready';\n if (wallet.capabilities.includes('injected')) return 'Browser Extension';\n if (wallet.capabilities.includes('popup')) return 'Scan to connect';\n if (wallet.capabilities.includes('deeplink')) return 'Mobile wallet';\n if (wallet.capabilities.includes('remoteSigner')) return 'Enterprise';\n return wallet.capabilities.slice(0, 3).join(', ');\n}\n\n// โโโ SVG Icons โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction CloseIcon({ size = 20, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\nfunction ArrowIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n );\n}\n\nfunction BackIcon({ size = 18, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n );\n}\n\nfunction CheckIcon({ size = 32, color = '#10B981' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction ErrorXIcon({ size = 32, color = '#EF4444' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nfunction ShieldIcon({ size = 14, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n </svg>\n );\n}\n\nfunction DownloadIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n );\n}\n\nfunction ExternalLinkIcon({ size = 12, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n );\n}\n\n// โโโ Wallet Icon Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction ModalWalletIcon({\n wallet,\n size = 48,\n iconUrl,\n}: {\n wallet: WalletInfo;\n size?: number;\n iconUrl: string | null;\n}) {\n const [imgError, setImgError] = useState(false);\n const radius = size >= 44 ? '12px' : '10px';\n\n if (iconUrl && !imgError) {\n return (\n <img\n src={iconUrl}\n alt={wallet.name}\n onError={() => setImgError(true)}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: radius,\n flexShrink: 0,\n objectFit: 'cover',\n }}\n />\n );\n }\n\n // Gradient avatar fallback\n return (\n <div\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: radius,\n background: nameToGradient(wallet.name),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#FFFFFF',\n fontSize: `${Math.round(size * 0.38)}px`,\n fontWeight: 700,\n flexShrink: 0,\n textShadow: '0 1px 2px rgba(0,0,0,0.2)',\n }}\n >\n {wallet.name.charAt(0).toUpperCase()}\n </div>\n );\n}\n\n// โโโ Main Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function WalletModal({\n isOpen,\n onClose,\n onConnect,\n walletIcons: propIcons,\n}: WalletModalProps) {\n const { wallets, isLoading } = useWallets();\n const { connect, error, reset: resetConnect } = useConnect();\n const { status: registryStatus } = useRegistryStatus();\n const theme = useTheme();\n\n let contextIcons: WalletIconMap = {};\n try { contextIcons = useWalletIcons(); } catch { /* no Kit context */ }\n\n // Merge prop icons over context icons\n const walletIcons: WalletIconMap = { ...contextIcons, ...propIcons };\n\n const [view, setView] = useState<ModalView>('list');\n const [selectedWallet, setSelectedWallet] = useState<WalletInfo | null>(null);\n const [closing, setClosing] = useState(false);\n const [connectError, setConnectError] = useState<Error | null>(null);\n const modalRef = useRef<HTMLDivElement>(null);\n\n // Reset state when modal opens\n useEffect(() => {\n if (isOpen) {\n setView('list');\n setSelectedWallet(null);\n setClosing(false);\n }\n }, [isOpen]);\n\n // Handle ESC key\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') handleClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n // Transition to error/not-installed view when connect fails\n useEffect(() => {\n if (error && view === 'connecting') {\n setConnectError(error);\n const code = 'code' in error ? (error as { code: string }).code : '';\n if (code === 'WALLET_NOT_INSTALLED') {\n setView('not-installed');\n } else {\n setView('error');\n }\n }\n }, [error, view]);\n\n const handleClose = useCallback(() => {\n // Reset connecting state so cursor/button don't stay in loading mode\n resetConnect();\n setView('list');\n setSelectedWallet(null);\n setConnectError(null);\n setClosing(true);\n setTimeout(() => {\n setClosing(false);\n onClose();\n }, 150);\n }, [onClose, resetConnect]);\n\n const handleWalletClick = useCallback(async (wallet: WalletInfo) => {\n setSelectedWallet(wallet);\n setConnectError(null);\n setView('connecting');\n\n const session = await connect({\n walletId: wallet.walletId,\n preferInstalled: true,\n });\n\n if (session) {\n setView('success');\n setTimeout(() => {\n onConnect(session.sessionId);\n onClose();\n }, 800);\n }\n // If session is null, the useConnect hook's error state will trigger\n // the useEffect above to route to the appropriate error view\n }, [connect, onConnect, onClose]);\n\n const handleRetry = useCallback(() => {\n if (selectedWallet) {\n handleWalletClick(selectedWallet);\n }\n }, [selectedWallet, handleWalletClick]);\n\n const handleBackToList = useCallback(() => {\n setView('list');\n setSelectedWallet(null);\n }, []);\n\n if (!isOpen && !closing) return null;\n\n // Split wallets\n const nativeWallets = wallets.filter(isNativeWallet);\n const registryWallets = wallets.filter((w) => !isNativeWallet(w));\n\n const isDark = theme.mode === 'dark';\n\n // โโโ Styles โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const overlayStyle: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: theme.colors.overlay,\n backdropFilter: 'blur(4px)',\n WebkitBackdropFilter: 'blur(4px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n opacity: closing ? 0 : 1,\n transition: 'opacity 150ms',\n };\n\n const panelStyle: React.CSSProperties = {\n backgroundColor: theme.colors.background,\n borderRadius: '16px',\n width: '480px',\n maxWidth: '94vw',\n maxHeight: '85vh',\n overflow: 'hidden',\n fontFamily: theme.fontFamily,\n color: theme.colors.text,\n boxShadow: isDark\n ? '0 8px 32px rgba(0,0,0,0.5), 0 24px 80px rgba(0,0,0,0.4)'\n : '0 8px 32px rgba(15,23,42,0.12), 0 24px 80px rgba(15,23,42,0.08)',\n border: `1px solid ${isDark ? 'rgba(255,255,255,0.06)' : 'rgba(15,23,42,0.06)'}`,\n animation: !closing ? 'pl-panel-enter 250ms cubic-bezier(0.2, 0.8, 0.2, 1) forwards' : undefined,\n transform: closing ? 'scale(0.95)' : undefined,\n opacity: closing ? 0 : undefined,\n transition: closing ? 'transform 150ms, opacity 150ms' : undefined,\n };\n\n const headerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '20px 24px 16px',\n };\n\n const closeBtnBase: React.CSSProperties = {\n height: '32px',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: theme.colors.surface,\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 150ms',\n flexShrink: 0,\n };\n\n const closeBtnStyle: React.CSSProperties = { ...closeBtnBase, width: '32px' };\n const hoverBg = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(15,23,42,0.06)';\n\n // โโโ Wallet Card Renderer โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const renderWalletItem = (wallet: WalletInfo) => {\n const isNative = isNativeWallet(wallet);\n const iconUrl = resolveWalletIcon(wallet.walletId, walletIcons, wallet.icons?.sm);\n\n return (\n <button\n key={wallet.walletId}\n onClick={() => handleWalletClick(wallet)}\n disabled={view === 'connecting'}\n style={{\n width: '100%',\n padding: '14px 18px',\n border: `1px solid ${isNative\n ? (isDark ? 'rgba(99,102,241,0.25)' : 'rgba(99,102,241,0.15)')\n : theme.colors.border}`,\n borderRadius: '12px',\n cursor: view === 'connecting' ? 'wait' : 'pointer',\n textAlign: 'left',\n display: 'flex',\n alignItems: 'center',\n gap: '14px',\n backgroundColor: isNative\n ? (isDark ? 'rgba(99,102,241,0.06)' : 'rgba(99,102,241,0.03)')\n : theme.colors.surface,\n color: theme.colors.text,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n onMouseEnter={(e) => {\n const el = e.currentTarget;\n el.style.transform = 'translateY(-1px)';\n el.style.boxShadow = isDark\n ? '0 4px 12px rgba(0,0,0,0.3)'\n : '0 4px 12px rgba(15,23,42,0.08)';\n el.style.borderColor = isNative\n ? (isDark ? 'rgba(99,102,241,0.4)' : 'rgba(99,102,241,0.3)')\n : (isDark ? 'rgba(255,255,255,0.12)' : 'rgba(15,23,42,0.15)');\n }}\n onMouseLeave={(e) => {\n const el = e.currentTarget;\n el.style.transform = 'translateY(0)';\n el.style.boxShadow = 'none';\n el.style.borderColor = isNative\n ? (isDark ? 'rgba(99,102,241,0.25)' : 'rgba(99,102,241,0.15)')\n : theme.colors.border;\n }}\n >\n <ModalWalletIcon wallet={wallet} size={48} iconUrl={iconUrl} />\n\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span style={{ fontWeight: 600, fontSize: '15px', color: theme.colors.text }}>\n {wallet.name}\n </span>\n {isNative && (\n <span style={{\n fontSize: '10px',\n padding: '2px 6px',\n background: 'linear-gradient(135deg, #6366f1, #8b5cf6)',\n color: '#FFFFFF',\n borderRadius: '5px',\n fontWeight: 600,\n letterSpacing: '0.3px',\n lineHeight: '14px',\n }}>\n CIP-0103\n </span>\n )}\n </div>\n <div style={{\n fontSize: '12px',\n color: isNative ? theme.colors.success : theme.colors.textSecondary,\n marginTop: '2px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}>\n {isNative && (\n <span style={{\n width: '5px',\n height: '5px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n flexShrink: 0,\n }} />\n )}\n {getWalletTransportLabel(wallet)}\n </div>\n </div>\n\n <ArrowIcon size={16} color={theme.colors.textSecondary} />\n </button>\n );\n };\n\n // โโโ Section Header โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const renderSectionHeader = (title: string, count: number, dotColor: string) => (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '4px 0 8px',\n }}>\n <span style={{\n width: '6px',\n height: '6px',\n borderRadius: '50%',\n backgroundColor: dotColor,\n flexShrink: 0,\n }} />\n <span style={{\n fontSize: '11px',\n fontWeight: 600,\n color: theme.colors.textSecondary,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}>\n {title}\n </span>\n <span style={{\n fontSize: '11px',\n color: theme.colors.textSecondary,\n opacity: 0.6,\n }}>\n {count}\n </span>\n <div style={{\n flex: 1,\n height: '1px',\n backgroundColor: theme.colors.border,\n }} />\n </div>\n );\n\n // โโโ Views โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const renderListView = () => (\n <>\n {/* Header */}\n <div style={headerStyle}>\n <h2 style={{\n margin: 0,\n fontSize: '18px',\n fontWeight: 700,\n color: theme.colors.text,\n letterSpacing: '-0.01em',\n }}>\n Connect Wallet\n </h2>\n <button\n onClick={handleClose}\n style={closeBtnStyle}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n aria-label=\"Close\"\n >\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n {/* Content */}\n <div style={{\n padding: '0 24px 20px',\n maxHeight: 'calc(85vh - 140px)',\n overflowY: 'auto',\n }}>\n {isLoading ? (\n <div style={{ padding: '40px 0', textAlign: 'center' }}>\n <div style={{\n width: '32px',\n height: '32px',\n border: `3px solid ${theme.colors.border}`,\n borderTop: `3px solid ${theme.colors.primary}`,\n borderRadius: '50%',\n animation: 'partylayer-spin 0.8s linear infinite',\n margin: '0 auto 16px',\n }} />\n <div style={{ fontSize: '14px', color: theme.colors.textSecondary }}>\n Discovering wallets...\n </div>\n </div>\n ) : wallets.length === 0 ? (\n <div style={{ padding: '40px 20px', textAlign: 'center' }}>\n <div style={{\n width: '48px',\n height: '48px',\n borderRadius: '12px',\n backgroundColor: theme.colors.surface,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '0 auto 16px',\n }}>\n <ShieldIcon size={24} color={theme.colors.textSecondary} />\n </div>\n <div style={{ fontSize: '15px', fontWeight: 600, color: theme.colors.text, marginBottom: '8px' }}>\n No wallets found\n </div>\n <div style={{ fontSize: '13px', color: theme.colors.textSecondary, lineHeight: 1.5 }}>\n Install a CIP-0103 compatible Canton wallet to get started.\n </div>\n </div>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n {/* CIP-0103 Native */}\n {nativeWallets.length > 0 && (\n <>\n {renderSectionHeader('CIP-0103 Native', nativeWallets.length, '#6366f1')}\n {nativeWallets.map(renderWalletItem)}\n </>\n )}\n\n {/* Registry */}\n {registryWallets.length > 0 && (\n <>\n {nativeWallets.length > 0 && <div style={{ height: '8px' }} />}\n {renderSectionHeader(\n nativeWallets.length > 0 ? 'Available' : 'Wallets',\n registryWallets.length,\n theme.colors.primary,\n )}\n {registryWallets.map(renderWalletItem)}\n </>\n )}\n </div>\n )}\n </div>\n\n {/* Footer */}\n <div style={{\n padding: '14px 24px 18px',\n borderTop: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '6px',\n }}>\n <ShieldIcon size={12} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '11px', color: theme.colors.textSecondary }}>\n CIP-0103 compliant\n </span>\n {registryStatus?.verified && (\n <>\n <span style={{ fontSize: '11px', color: theme.colors.textSecondary }}>ยท</span>\n <span style={{ fontSize: '11px', color: theme.colors.success }}>Verified</span>\n </>\n )}\n </div>\n </>\n );\n\n const renderConnectingView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n\n return (\n <>\n <div style={headerStyle}>\n <button\n onClick={handleBackToList}\n style={{ ...closeBtnBase, width: 'auto', padding: '0 10px', gap: '4px' }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n >\n <BackIcon size={14} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '12px', color: theme.colors.textSecondary, fontWeight: 500 }}>Back</span>\n </button>\n <button\n onClick={handleClose}\n style={closeBtnStyle}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n aria-label=\"Close\"\n >\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{ padding: '24px 32px 40px', textAlign: 'center' }}>\n {/* Animated ring around icon */}\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n margin: '0 auto 24px',\n }}>\n <div style={{\n position: 'absolute',\n inset: '-6px',\n borderRadius: '18px',\n border: `3px solid ${theme.colors.border}`,\n borderTopColor: theme.colors.primary,\n animation: 'partylayer-spin 1.2s linear infinite',\n }} />\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n borderRadius: '16px',\n overflow: 'hidden',\n }}>\n <ModalWalletIcon wallet={selectedWallet} size={80} iconUrl={iconUrl} />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '8px',\n }}>\n Opening {selectedWallet.name}\n </div>\n <div style={{\n fontSize: '14px',\n color: theme.colors.textSecondary,\n lineHeight: 1.5,\n marginBottom: '32px',\n }}>\n Confirm the connection in your wallet\n </div>\n\n <button\n onClick={handleBackToList}\n style={{\n padding: '10px 24px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n Cancel\n </button>\n </div>\n </>\n );\n };\n\n const renderSuccessView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n\n return (\n <>\n <div style={headerStyle}>\n <div />\n <button onClick={handleClose} style={closeBtnStyle} aria-label=\"Close\">\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{\n padding: '24px 32px 40px',\n textAlign: 'center',\n animation: 'pl-success-pop 300ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}>\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n margin: '0 auto 20px',\n }}>\n <div style={{\n width: '80px',\n height: '80px',\n borderRadius: '16px',\n overflow: 'hidden',\n }}>\n <ModalWalletIcon wallet={selectedWallet} size={80} iconUrl={iconUrl} />\n </div>\n {/* Success badge */}\n <div style={{\n position: 'absolute',\n bottom: '-4px',\n right: '-4px',\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `3px solid ${theme.colors.background}`,\n }}>\n <CheckIcon size={14} color=\"#FFFFFF\" />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '6px',\n }}>\n Connected\n </div>\n <div style={{ fontSize: '14px', color: theme.colors.success }}>\n {selectedWallet.name} is ready\n </div>\n </div>\n </>\n );\n };\n\n const renderErrorView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n\n return (\n <>\n <div style={headerStyle}>\n <button\n onClick={handleBackToList}\n style={{ ...closeBtnBase, width: 'auto', padding: '0 10px', gap: '4px' }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n >\n <BackIcon size={14} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '12px', color: theme.colors.textSecondary, fontWeight: 500 }}>Back</span>\n </button>\n <button onClick={handleClose} style={closeBtnStyle} aria-label=\"Close\">\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{ padding: '16px 32px 32px', textAlign: 'center' }}>\n <div style={{\n position: 'relative',\n width: '64px',\n height: '64px',\n margin: '0 auto 20px',\n opacity: 0.7,\n }}>\n <div style={{ width: '64px', height: '64px', borderRadius: '14px', overflow: 'hidden' }}>\n <ModalWalletIcon wallet={selectedWallet} size={64} iconUrl={iconUrl} />\n </div>\n <div style={{\n position: 'absolute',\n bottom: '-4px',\n right: '-4px',\n width: '24px',\n height: '24px',\n borderRadius: '50%',\n backgroundColor: theme.colors.error,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `3px solid ${theme.colors.background}`,\n }}>\n <ErrorXIcon size={12} color=\"#FFFFFF\" />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '8px',\n }}>\n Connection Failed\n </div>\n\n {(connectError || error) && (\n <div style={{\n fontSize: '13px',\n color: theme.colors.textSecondary,\n lineHeight: 1.5,\n maxWidth: '280px',\n margin: '0 auto 24px',\n }}>\n {getErrorMessage(connectError || error!)}\n </div>\n )}\n\n <div style={{ display: 'flex', gap: '10px', justifyContent: 'center' }}>\n <button\n onClick={handleRetry}\n style={{\n padding: '10px 20px',\n border: 'none',\n borderRadius: '10px',\n backgroundColor: theme.colors.primary,\n color: '#0B0F1A',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.primaryHover;\n e.currentTarget.style.transform = 'translateY(-1px)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.primary;\n e.currentTarget.style.transform = 'translateY(0)';\n }}\n >\n Try Again\n </button>\n <button\n onClick={handleBackToList}\n style={{\n padding: '10px 20px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n All Wallets\n </button>\n </div>\n </div>\n </>\n );\n };\n\n const renderNotInstalledView = () => {\n if (!selectedWallet) return null;\n const iconUrl = resolveWalletIcon(selectedWallet.walletId, walletIcons, selectedWallet.icons?.sm);\n const installUrl = getWalletUrl(selectedWallet);\n\n return (\n <>\n <div style={headerStyle}>\n <button\n onClick={handleBackToList}\n style={{ ...closeBtnBase, width: 'auto', padding: '0 10px', gap: '4px' }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = hoverBg; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n >\n <BackIcon size={14} color={theme.colors.textSecondary} />\n <span style={{ fontSize: '12px', color: theme.colors.textSecondary, fontWeight: 500 }}>Back</span>\n </button>\n <button onClick={handleClose} style={closeBtnStyle} aria-label=\"Close\">\n <CloseIcon size={16} color={theme.colors.textSecondary} />\n </button>\n </div>\n\n <div style={{ padding: '16px 32px 36px', textAlign: 'center' }}>\n {/* Wallet icon with download badge */}\n <div style={{\n position: 'relative',\n width: '80px',\n height: '80px',\n margin: '0 auto 24px',\n }}>\n <div style={{\n width: '80px',\n height: '80px',\n borderRadius: '16px',\n overflow: 'hidden',\n opacity: 0.85,\n }}>\n <ModalWalletIcon wallet={selectedWallet} size={80} iconUrl={iconUrl} />\n </div>\n <div style={{\n position: 'absolute',\n bottom: '-4px',\n right: '-4px',\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n backgroundColor: theme.colors.warning,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `3px solid ${theme.colors.background}`,\n }}>\n <DownloadIcon size={13} color=\"#FFFFFF\" />\n </div>\n </div>\n\n <div style={{\n fontSize: '17px',\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '8px',\n }}>\n {selectedWallet.name} not found\n </div>\n\n <div style={{\n fontSize: '13px',\n color: theme.colors.textSecondary,\n lineHeight: 1.6,\n maxWidth: '300px',\n margin: '0 auto 28px',\n }}>\n {selectedWallet.name} doesn't appear to be installed. Install it and refresh this page to connect.\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '10px', alignItems: 'center' }}>\n {installUrl && (\n <a\n href={installUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '12px 28px',\n border: 'none',\n borderRadius: '10px',\n backgroundColor: theme.colors.primary,\n color: '#0B0F1A',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n textDecoration: 'none',\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = theme.colors.primaryHover;\n (e.currentTarget as HTMLElement).style.transform = 'translateY(-1px)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = theme.colors.primary;\n (e.currentTarget as HTMLElement).style.transform = 'translateY(0)';\n }}\n >\n <DownloadIcon size={15} color=\"#0B0F1A\" />\n Install {selectedWallet.name}\n <ExternalLinkIcon size={11} color=\"#0B0F1A\" />\n </a>\n )}\n\n <div style={{ display: 'flex', gap: '10px' }}>\n <button\n onClick={handleRetry}\n style={{\n padding: '10px 20px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n Try Again\n </button>\n <button\n onClick={handleBackToList}\n style={{\n padding: '10px 20px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: '10px',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'all 150ms',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = theme.colors.surface; }}\n onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }}\n >\n All Wallets\n </button>\n </div>\n </div>\n </div>\n </>\n );\n };\n\n // โโโ Render โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n return (\n <div\n style={overlayStyle}\n onClick={handleClose}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Connect Wallet\"\n >\n <div\n ref={modalRef}\n style={panelStyle}\n onClick={(e) => e.stopPropagation()}\n >\n {view === 'list' && renderListView()}\n {view === 'connecting' && renderConnectingView()}\n {view === 'success' && renderSuccessView()}\n {view === 'error' && renderErrorView()}\n {view === 'not-installed' && renderNotInstalledView()}\n </div>\n\n <style>{`\n @keyframes partylayer-spin {\n to { transform: rotate(360deg); }\n }\n @keyframes pl-panel-enter {\n from { opacity: 0; transform: scale(0.95) translateY(8px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n @keyframes pl-success-pop {\n 0% { transform: scale(0.9); opacity: 0; }\n 50% { transform: scale(1.02); }\n 100% { transform: scale(1); opacity: 1; }\n }\n `}</style>\n </div>\n );\n}\n","/**\n * ConnectButton โ Premium wallet connection button for Canton dApps.\n *\n * Manages the full lifecycle: disconnect โ connect (via WalletModal) โ connected state.\n * Uses existing hooks (useSession, useConnect, useDisconnect) under the hood.\n *\n * Designed for dApp developers to embed directly โ brand-aligned, accessible,\n * and polished across light/dark themes.\n */\n\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { useSession, useConnect, useDisconnect } from './hooks';\nimport { useTheme } from './theme';\nimport { WalletModal } from './modal';\n\n// โโโ Types โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface ConnectButtonProps {\n /** Button label when disconnected (default: \"Connect Wallet\") */\n label?: string;\n /** What to show when connected: partyId address, wallet name, or custom */\n connectedLabel?: 'address' | 'wallet' | 'custom';\n /** Custom formatter for connected display (requires connectedLabel='custom') */\n formatAddress?: (partyId: string) => string;\n /** Additional CSS class name */\n className?: string;\n /** Additional inline styles */\n style?: React.CSSProperties;\n /** Show disconnect option in dropdown (default: true) */\n showDisconnect?: boolean;\n}\n\n// โโโ Helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n/**\n * Truncate a partyId for display: \"party-abc123def456\" โ \"party-abc...456\"\n */\nexport function truncatePartyId(id: string, chars = 6): string {\n if (id.length <= chars * 2 + 3) return id;\n return `${id.slice(0, chars)}...${id.slice(-chars)}`;\n}\n\n// โโโ Icons โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nfunction WalletIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 12V7H5a2 2 0 0 1 0-4h14v4\" />\n <path d=\"M3 5v14a2 2 0 0 0 2 2h16v-5\" />\n <path d=\"M18 12a2 2 0 0 0 0 4h4v-4h-4z\" />\n </svg>\n );\n}\n\nfunction PowerIcon({ size = 14, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\" />\n <line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\" />\n </svg>\n );\n}\n\nfunction ChevronIcon({ size = 12, color = 'currentColor' }: { size?: number; color?: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\n// โโโ Component โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function ConnectButton({\n label = 'Connect Wallet',\n connectedLabel = 'address',\n formatAddress,\n className,\n style,\n showDisconnect = true,\n}: ConnectButtonProps) {\n const session = useSession();\n const { isConnecting } = useConnect();\n const { disconnect } = useDisconnect();\n const theme = useTheme();\n\n const [modalOpen, setModalOpen] = useState(false);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Close dropdown on outside click\n useEffect(() => {\n if (!dropdownOpen) return;\n const handler = (e: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n setDropdownOpen(false);\n }\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [dropdownOpen]);\n\n const handleDisconnect = useCallback(async () => {\n setDropdownOpen(false);\n try {\n await disconnect();\n } catch {\n // useDisconnect stores error state internally\n }\n }, [disconnect]);\n\n // โโโ Connected Label โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const getConnectedText = (): string => {\n if (!session) return '';\n const partyId = String(session.partyId);\n\n switch (connectedLabel) {\n case 'wallet':\n return String(session.walletId);\n case 'custom':\n return formatAddress ? formatAddress(partyId) : truncatePartyId(partyId);\n case 'address':\n default:\n return truncatePartyId(partyId);\n }\n };\n\n const isDark = theme.mode === 'dark';\n const brandYellow = theme.colors.primary; // #FFCC00\n const brandHover = theme.colors.primaryHover; // #E6B800\n const textOnBrand = '#0B0F1A';\n\n // โโโ Disconnected State โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n if (!session && !isConnecting) {\n return (\n <>\n <button\n onClick={() => setModalOpen(true)}\n className={className}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n backgroundColor: brandYellow,\n color: textOnBrand,\n boxShadow: `0 1px 2px rgba(15, 23, 42, 0.05), 0 0 0 0 ${brandYellow}00`,\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n ...style,\n }}\n onMouseEnter={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.backgroundColor = brandHover;\n btn.style.boxShadow = `0 2px 8px rgba(15, 23, 42, 0.08), 0 0 0 3px ${brandYellow}33`;\n btn.style.transform = 'translateY(-1px)';\n }}\n onMouseLeave={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.backgroundColor = brandYellow;\n btn.style.boxShadow = `0 1px 2px rgba(15, 23, 42, 0.05), 0 0 0 0 ${brandYellow}00`;\n btn.style.transform = 'translateY(0)';\n }}\n onMouseDown={(e) => {\n (e.currentTarget as HTMLButtonElement).style.transform = 'translateY(0) scale(0.98)';\n }}\n onMouseUp={(e) => {\n (e.currentTarget as HTMLButtonElement).style.transform = 'translateY(-1px) scale(1)';\n }}\n >\n <WalletIcon size={16} color={textOnBrand} />\n {label}\n </button>\n <WalletModal\n isOpen={modalOpen}\n onClose={() => setModalOpen(false)}\n onConnect={() => setModalOpen(false)}\n />\n <style>{`@keyframes partylayer-spin { to { transform: rotate(360deg); } }`}</style>\n </>\n );\n }\n\n // โโโ Connecting State โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n if (isConnecting) {\n return (\n <button\n disabled\n className={className}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: 'wait',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: theme.fontFamily,\n backgroundColor: brandYellow,\n color: textOnBrand,\n opacity: 0.85,\n boxShadow: `0 0 0 3px ${brandYellow}22`,\n animation: 'partylayer-btn-pulse 1.5s ease-in-out infinite',\n ...style,\n }}\n >\n <span\n style={{\n display: 'inline-block',\n width: '14px',\n height: '14px',\n border: `2px solid ${textOnBrand}33`,\n borderTop: `2px solid ${textOnBrand}`,\n borderRadius: '50%',\n animation: 'partylayer-spin 0.7s linear infinite',\n flexShrink: 0,\n }}\n />\n Connecting...\n <style>{`\n @keyframes partylayer-spin { to { transform: rotate(360deg); } }\n @keyframes partylayer-btn-pulse {\n 0%, 100% { box-shadow: 0 0 0 3px ${brandYellow}22; }\n 50% { box-shadow: 0 0 0 6px ${brandYellow}15; }\n }\n `}</style>\n </button>\n );\n }\n\n // โโโ Connected State โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n const connectedPartyId = String(session!.partyId);\n const connectedWalletId = String(session!.walletId);\n\n return (\n <div ref={dropdownRef} style={{ position: 'relative', display: 'inline-block' }}>\n <button\n onClick={() => setDropdownOpen(!dropdownOpen)}\n className={className}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '8px 14px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n backgroundColor: theme.colors.surface,\n color: theme.colors.text,\n boxShadow: '0 1px 2px rgba(15, 23, 42, 0.05)',\n transition: 'all 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n ...style,\n }}\n onMouseEnter={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.borderColor = isDark ? 'rgba(255,255,255,0.15)' : 'rgba(15,23,42,0.18)';\n btn.style.boxShadow = '0 2px 8px rgba(15, 23, 42, 0.08)';\n }}\n onMouseLeave={(e) => {\n const btn = e.currentTarget as HTMLButtonElement;\n btn.style.borderColor = theme.colors.border;\n btn.style.boxShadow = '0 1px 2px rgba(15, 23, 42, 0.05)';\n }}\n >\n {/* Green status dot */}\n <span style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n flexShrink: 0,\n boxShadow: `0 0 0 2px ${theme.colors.surface}`,\n }} />\n\n <span style={{\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n fontSize: '13px',\n color: theme.colors.text,\n }}>\n {getConnectedText()}\n </span>\n\n {showDisconnect && (\n <ChevronIcon\n size={12}\n color={theme.colors.textSecondary}\n />\n )}\n </button>\n\n {/* Dropdown Menu */}\n {dropdownOpen && showDisconnect && (\n <div\n style={{\n position: 'absolute',\n top: 'calc(100% + 6px)',\n right: 0,\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: isDark\n ? '0 4px 16px rgba(0,0,0,0.3), 0 16px 48px rgba(0,0,0,0.2)'\n : '0 4px 16px rgba(15,23,42,0.08), 0 16px 48px rgba(15,23,42,0.12)',\n minWidth: '220px',\n zIndex: 1000,\n overflow: 'hidden',\n animation: 'partylayer-dropdown 150ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n >\n {/* Session Info */}\n <div style={{\n padding: '14px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n }}>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n marginBottom: '8px',\n }}>\n <span style={{\n width: '6px',\n height: '6px',\n borderRadius: '50%',\n backgroundColor: theme.colors.success,\n }} />\n <span style={{\n fontSize: '12px',\n fontWeight: 600,\n color: theme.colors.success,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}>\n Connected\n </span>\n </div>\n <div style={{\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n fontSize: '12px',\n color: theme.colors.text,\n wordBreak: 'break-all',\n lineHeight: 1.4,\n }}>\n {truncatePartyId(connectedPartyId, 10)}\n </div>\n <div style={{\n marginTop: '6px',\n fontSize: '12px',\n color: theme.colors.textSecondary,\n }}>\n {connectedWalletId}\n </div>\n </div>\n\n {/* Disconnect Button */}\n <button\n onClick={handleDisconnect}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n width: '100%',\n padding: '12px 16px',\n border: 'none',\n backgroundColor: 'transparent',\n color: theme.colors.error,\n cursor: 'pointer',\n textAlign: 'left',\n fontSize: '13px',\n fontWeight: 500,\n fontFamily: theme.fontFamily,\n transition: 'background-color 150ms',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = theme.colors.errorBg;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = 'transparent';\n }}\n >\n <PowerIcon size={14} color={theme.colors.error} />\n Disconnect\n </button>\n </div>\n )}\n\n <style>{`\n @keyframes partylayer-dropdown {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `}</style>\n </div>\n );\n}\n"]}
|